
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: avro-deserialize-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Avro Deserialize Action"
    description: "Deserialize payload to Avro."
    type: object
    properties:
      schema:
        title: Schema
        description: The Avro schema to use during serialization (as single-line, using JSON format)
        type: string
        example: '{"type": "record", "namespace": "com.example", "name": "FullName", "fields": [{"name": "first", "type": "string"},{"name": "last", "type": "string"}]}'
      validate:
        title: Validate
        description: Indicates if the content must be validated against the schema
        type: boolean
        default: true
  dependencies:
  - "camel:kamelet"
  - "camel:core"
  - "camel:jackson-avro"
  template:
    beans:
      - name: schemaResolver
        type: "#class:org.apache.camel.component.jackson.avro.transform.AvroSchemaResolver"
        properties:
          validate: "{{validate}}"
          schema: "{{schema:}}"
    from:
      uri: kamelet:source
      steps:
      - unmarshal:
          avro:
            library: Jackson
            unmarshalType: com.fasterxml.jackson.databind.JsonNode
            schemaResolver: "#bean:{{schemaResolver}}"
      - removeHeader:
          name: "Content-Type"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: avro-serialize-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Avro Serialize Action"
    description: "Serialize payload to Avro."
    type: object
    properties:
      schema:
        title: Schema
        description: The Avro schema to use during serialization (as single-line, using JSON format)
        type: string
        example: '{"type": "record", "namespace": "com.example", "name": "FullName", "fields": [{"name": "first", "type": "string"},{"name": "last", "type": "string"}]}'
      validate:
        title: Validate
        description: Indicates if the content must be validated against the schema
        type: boolean
        default: true
  dependencies:
  - "camel:kamelet"
  - "camel:core"
  - "camel:jackson-avro"
  template:
    beans:
      - name: schemaResolver
        type: "#class:org.apache.camel.component.jackson.avro.transform.AvroSchemaResolver"
        properties:
          validate: "{{validate}}"
          schema: "{{schema:}}"
    from:
      uri: kamelet:source
      steps:
      - marshal:
          avro:
            library: Jackson
            unmarshalType: com.fasterxml.jackson.databind.JsonNode
            schemaResolver: "#bean:{{schemaResolver}}"
      - setHeader:
          name: "Content-Type"
          constant: "application/avro"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-bedrock-agent-runtime-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 6680 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS Bedrock"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS Bedrock Agent Runtime Sink"
    description: Send data for invoking a knowledge base from AWS Bedrock.
    required:
      - modelId
      - knowledgeBaseId
      - region
    type: object
    properties:
      modelId:
        title: Model Id
        description: The model Id to be used to generate responses.
        type: string
        enum: ["anthropic.claude-instant-v1", "anthropic.claude-v2", "anthropic.claude-v2:1", "anthropic.claude-3-sonnet-20240229-v1:0"]
      knowledgeBaseId:
        title: Knowledge Base Id
        description: The Knowledge Base Id to be used to retrieve and generate responses.
        type: string
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["us-east-1", "us-west-1"]
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: If true, the Bedrock client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the Bedrock client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the Bedrock client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Bedrock.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
  dependencies:
    - "camel:core"
    - "camel:aws-bedrock"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:      
      - to:
          uri: "aws-bedrock-agent-runtime:bedrock-knowledge"
          parameters:
            secretKey: "{{?secretKey}}"
            accessKey: "{{?accessKey}}"
            region: "{{region}}"
            modelId: "{{modelId}}"
            knowledgeBaseId: "{{knowledgeBaseId}}"
            operation: retrieveAndGenerate
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}" 
            uriEndpointOverride: "{{?uriEndpointOverride}}"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"
            overrideEndpoint: "{{overrideEndpoint}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-bedrock-text-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 6680 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS Bedrock"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS Bedrock Text Sink"
    description: Send data for invoking a text model of Amazon Bedrock.
    required:
      - modelId
      - region
    type: object
    properties:
      modelId:
        title: Model Id
        description: The model Id to be used.
        type: string
        enum: ["amazon.titan-text-express-v1", "amazon.titan-text-lite-v1", "ai21.j2-ultra-v1", "ai21.j2-mid-v1", "anthropic.claude-instant-v1", "anthropic.claude-v2", "anthropic.claude-v2:1", "anthropic.claude-3-sonnet-20240229-v1:0"]
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["us-east-1", "us-west-1", "ap-southeast-1", "ap-northeast-1", "eu-central-1"]
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: If true, the Bedrock client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the Bedrock client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the Bedrock client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Bedrock.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
  dependencies:
    - "camel:core"
    - "camel:aws-bedrock"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - setHeader:
          name: "CamelAwsBedrockContentType"
          constant: "application/json"
      - setHeader:
          name: "CamelAwsBedrockAcceptContentType"
          constant: "application/json"       
      - to:
          uri: "aws-bedrock:bedrock-text"
          parameters:
            secretKey: "{{?secretKey}}"
            accessKey: "{{?accessKey}}"
            region: "{{region}}"
            modelId: "{{modelId}}"
            operation: invokeTextModel
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}"
            uriEndpointOverride: "{{?uriEndpointOverride}}"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"
            overrideEndpoint: "{{overrideEndpoint}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-cloudtrail-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNzQuMzc1IDg1IiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48dXNlIHhsaW5rOmhyZWY9IiNBIiB4PSIyLjE4OCIgeT0iMi41Ii8+PHN5bWJvbCBpZD0iQSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZT0ibm9uZSI+PHBhdGggZD0iTTkuOTY2IDM1LjQ5M2wtMi4yODguMTc2TDAgMzUuMzc2bDIuMTIzLTEwLjAzOSA3Ljg0MyAxMC4xNTZ6IiBmaWxsPSIjM2M0OTI5Ii8+PHBhdGggZD0iTTkuOTY2IDQ0LjgzbC0yLjI4OC0uMTc2TDAgNDQuOTQ3bDIuMTIzIDEwLjAzOUw5Ljk2NiA0NC44M3oiIGZpbGw9IiNiN2NhOWQiLz48cGF0aCBkPSJNMi4xMjMgNDUuMTQxTDAgNDQuOTQ2djkuNDM0bDIuMTIzLjYwNXYtOS44NDR6IiBmaWxsPSIjNGI2MTJjIi8+PHBhdGggZD0iTTkuOTY2IDU0LjAxOWwtNy44NDMuOTY2di05LjgzNGw3Ljg0My0uMzIydjkuMTl6IiBmaWxsPSIjNzU5YzNlIi8+PHBhdGggZD0iTTI0LjM0MyA0NS42MDFsLTYuMzA3LS40NTktMTEuMDI4LjUyNyA1LjkwNSAxNy45NjEgMTEuNDMtMTguMDI5eiIgZmlsbD0iI2I3Y2E5ZCIvPjxwYXRoIGQ9Ik0yLjEyMyAzNS4xNzFMMCAzNS4zNzZ2LTkuNDM0bDIuMTIzLS42MDV2OS44MzR6IiBmaWxsPSIjNGI2MTJjIi8+PHBhdGggZD0iTTkuOTY2IDI2LjMwM2wtNy44NDMtLjk2NnY5LjgyNGw3Ljg0My4zMzJ2LTkuMTl6IiBmaWxsPSIjNzU5YzNlIi8+PHBhdGggZD0iTTI0LjM0MyAzNC43MjJsLTYuMzA3LjQ0OS0xMS4wMjgtLjUxNyA1LjkwNS0xNy45MzIgMTEuNDMgMTh6IiBmaWxsPSIjM2M0OTI5Ii8+PHBhdGggZD0iTTcuMDA4IDE4LjYyNGw1LjkwNS0xLjkwMnYxNy4zNjZsLTUuOTA1LjU2NlYxOC42MjR6IiBmaWxsPSIjNGI2MTJjIi8+PHBhdGggZD0iTTI0LjM0NCAxOS4wNzNsLTExLjQzLTIuMzUxdjE3LjM2NmwxMS40My42MzRWMTkuMDczeiIgZmlsbD0iIzc1OWMzZSIvPjxwYXRoIGQ9Ik03LjAwOCA2MS41NjFsNS45MDUgMi4wNjhWNDYuMjM0bC01LjkwNS0uNTY2djE1Ljg5M3oiIGZpbGw9IiM0YjYxMmMiLz48cGF0aCBkPSJNMjQuMzQ0IDYxLjM5NWwtMTEuNDMgMi4yMzRWNDYuMjM0bDExLjQzLS42MzR2MTUuNzk1eiIgZmlsbD0iIzc1OWMzZSIvPjxwYXRoIGQ9Ik0yMC4yIDcyLjk5NUwzNC45ODkgODBsMzQuNjYtNDAtMzQuNjYtNDBMMjAuMiA3LjAwNXY2NS45OXoiIGZpbGw9IiM0YjYxMmMiLz48cGF0aCBkPSJNNzAgNjMuNDM0TDM0Ljk5IDgwVjBMNzAgMTYuNTY2djQ2Ljg2OHoiIGZpbGw9IiM3NTljM2UiLz48L2c+PC9zeW1ib2w+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS Cloudtrail"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "AWS Cloudtrail Source"
    description: Receive data from an AWS Cloudtrail.
    required:
      - region
    type: object
    properties:
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: If true, the Cloudtrail client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the Cloudtrail client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the CloudTrail client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in CloudTrail.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
      maxResults:
        title: Max Results
        description: Maximum number of records that are fetched in each poll.
        type: integer
        default: 1
      eventSource:
        title: Event Source
        description: Specify an event source to select events.
        type: string
        example: secretsmanager.amazonaws.com
  dataTypes:
    out:
      default: text
      headers:
        CamelAwsCloudTrailEventId:
          title: Cloudtrail Event Id
          description: The event ID of the cloud trail event consumed
          type: string
        CamelAwsCloudTrailEventName:
          title: Cloudtrail Event Name
          description: The event Name of the cloud trail event consumed
          type: string
        CamelAwsCloudTrailEventSource:
          title: Cloudtrail Event Source
          description: The event Source of the cloud trail event consumed
          type: string
        CamelAwsCloudTrailEventUsername:
          title: Cloudtrail Event Username
          description: The associated username of the event of the cloud trail event consumed
          type: string
      types:
        text:
          format: "text-plain"
          description: Default text representation of the Cloudtrail Event
          mediaType: text/plain
        cloudevents:
          format: "aws-cloudtrail:application-cloudevents"
          description: Data type transformer converts AWS Cloudtrail lookup events response to CloudEvent v1_0 data format. The data type sets Camel specific CloudEvent headers with values extracted from AWS Cloudtrail lookup events response.
          headers:
            CamelCloudEventID:
              title: CloudEvent ID
              description: The Camel exchange id set as event id
              type: string
            CamelCloudEventType:
              title: CloudEvent Type
              description: The event type
              default: "org.apache.camel.event.aws.cloudtrail.lookupEvents"
              type: string
            CamelCloudEventSource:
              title: CloudEvent Source
              description: The event source. By default, the Cloudtrail event source name with prefix "aws.cloudtrail.event.source.".
              type: string
            CamelCloudEventSubject:
              title: CloudEvent Subject
              description: The event subject. The Cloudtrail Event Id.
              type: string
            CamelCloudEventTime:
              title: CloudEvent Time
              description: The exchange creation timestamp as event time.
              type: string
  dependencies:
    - "camel:core"
    - "camel:aws-cloudtrail"
    - "camel:kamelet"
  template:
    from:
      uri: "aws-cloudtrail:cloudtrail"
      parameters:
        secretKey: "{{?secretKey}}"
        accessKey: "{{?accessKey}}"
        region: "{{region}}"
        eventSource: "{{?eventSource}}"
        useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
        useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
        useSessionCredentials: "{{useSessionCredentials}}"
        uriEndpointOverride: "{{?uriEndpointOverride}}"
        profileCredentialsName: "{{?profileCredentialsName}}"
        sessionToken: "{{?sessionToken}}"
        overrideEndpoint: "{{overrideEndpoint}}"
        maxResults: "{{maxResults}}"
      steps:
      - to: "kamelet:sink"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-cloudwatch-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIwNyIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDI5MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTI1NiAxOTkuMzA1bC0xMjcuOTU3LTE4Ljc5N0wwIDE5OS4zMjlsMTI4LjAxIDQ3LjQzOUwyNTYgMTk5LjMwNSIgZmlsbD0iI0I3Q0E5RCIvPjxwYXRoIGQ9Ik0yNS42MjEgMTk3LjExM2wyMS42MyA2Ljc2MSAxLjk3MS0yLjIzOFY1MC4yODRsLTEuOTcxLTIuNTg1LTIxLjYzIDguMjc0djE0MS4xNCIgZmlsbD0iIzRCNjEyQyIvPjxwYXRoIGQ9Ik0xMjMuODMyIDE5MC40MjNsLTc2LjU4MSAxMy40NTFWNDcuNzAzbDc2LjU4MSAxNy4yMjJ2MTI1LjQ5OCIgZmlsbD0iIzc1OUMzRSIvPjxwYXRoIGQ9Ik04OS42ODYgMjE2Ljg4OWwtMjkuODQ4LTkuMjAxVjE0LjkyOEw4OS42ODYuMDA0bDIuNjEyIDIuODQ1djIxMC44NThsLTIuNjEyIDMuMTgyIiBmaWxsPSIjNEI2MTJDIi8+PHBhdGggZD0iTTE5MS45NjcgMTkyLjg5NEw4OS42ODYgMjE2Ljg4OVYwbDEwMi4yODEgMzkuODY2djE1My4wMjgiIGZpbGw9IiM3NTlDM0UiLz48cGF0aCBkPSJNMTI3Ljk2NSAyNDQuNzE0TDAgMTk5LjMyOXYyNi4zMjRsMTI3Ljk2NSA2My45ODN2LTQ0LjkyMiIgZmlsbD0iIzRCNjEyQyIvPjxwYXRoIGQ9Ik0yNTYgMjI1LjYyMmwtMTI4LjAzNSA2NC4wMTR2LTQ0LjkyMkwyNTYgMTk5LjMwNXYyNi4zMTciIGZpbGw9IiM3NTlDM0UiLz48cGF0aCBkPSJNMjIwLjAzOSAxNTUuNjkyaC0zMS4wMjZsLTg4LjQ0NSA2LjAyNkwxMjggMTY2Ljc3NWw5Mi4wMzktMTEuMDgzIiBmaWxsPSIjQjdDQTlEIi8+PHBhdGggZD0iTTEwMC41NjggMjE5LjkwNmwyNy40MiA4LjIyNi43ODktLjg0OS0uMDIzLTYxLjg0OS0uNzg5LS43NTgtMjcuMzk3LTIuOTU4djU4LjE4OCIgZmlsbD0iIzRCNjEyQyIvPjxwYXRoIGQ9Ik0yMjAuMDM5IDE1NS42OTJsLTkyLjA3NCA4Ljk4LjAyMyA2My40NiA5Mi4wNTEtMjcuNzExdi00NC43MjkiIGZpbGw9IiM3NTlDM0UiLz48L3N2Zz4K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS Cloudwatch"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS CloudWatch Metrics Sink"
    description: Send data to Amazon CloudWatch metrics.
    required:
      - cwNamespace
      - region
    type: object
    properties:
      cwNamespace:
        title: Cloud Watch Namespace
        description: The CloudWatch metric namespace.
        type: string
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: If true, the Cloudwatch client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the Cloudwatch client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the Cloudwatch client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Cloudwatch.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
  dependencies:
    - "camel:core"
    - "camel:aws2-cw"
    - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - choice:
          when:
          - simple: "${header[metric-name]}"
            steps:
            - setHeader:
                name: CamelAwsCwMetricName
                simple: "${header[metric-name]}"             
          - simple: "${header[ce-metricname]}"
            steps:
            - setHeader:
                name: CamelAwsCwMetricName
                simple: "${header[ce-metricname]}"
      - choice:
          when:                
          - simple: "${header[metric-value]}"
            steps:
            - setHeader:
                name: CamelAwsCwMetricValue
                simple: "${header[metric-value]}"              
          - simple: "${header[ce-metricvalue]}"
            steps:
            - setHeader:
                name: CamelAwsCwMetricValue
                simple: "${header[ce-metricvalue]}"
      - choice:
          when:                
          - simple: "${header[metric-unit]}"
            steps:
            - setHeader:
                name: CamelAwsCwMetricUnit
                simple: "${header[metric-unit]}"              
          - simple: "${header[ce-metricunit]}"
            steps:
            - setHeader:
                name: CamelAwsCwMetricUnit
                simple: "${header[ce-metricunit]}"
      - choice:
          when:                
          - simple: "${header[metric-timestamp]}"
            steps:
            - setHeader:
                name: CamelAwsCwMetricTimestamp
                simple: "${header[metric-timestamp]}"               
          - simple: "${header[ce-metrictimestamp]}"
            steps:
            - setHeader:
                name: CamelAwsCwMetricTimestamp
                simple: "${header[ce-metrictimestamp]}"
      - choice:
          when:                
          - simple: "${header[metric-dimension-name]}"
            steps:
            - setHeader:
                name: CamelAwsCwMetricDimensionName
                simple: "${header[metric-dimension-name]}"
          - simple: "${header[ce-metricdimensionname]}"
            steps:
            - setHeader:
                name: CamelAwsCwMetricDimensionName
                simple: "${header[ce-metricdimensionname]}"
      - choice:
          when:                
          - simple: "${header[metric-dimension-value]}"
            steps:
            - setHeader:
                name: CamelAwsCwMetricDimensionValue
                simple: "${header[metric-dimension-value]}"
          - simple: "${header[ce-metricdimensionvalue]}"
            steps:
            - setHeader:
                name: CamelAwsCwMetricDimensionValue
                simple: "${header[ce-metricdimensionvalue]}"
      - to:
          uri: "aws2-cw:{{cwNamespace}}"
          parameters:
            secretKey: "{{?secretKey}}"
            accessKey: "{{?accessKey}}"
            region: "{{region}}"
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}"
            uriEndpointOverride: "{{?uriEndpointOverride}}"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"
            overrideEndpoint: "{{overrideEndpoint}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-ddb-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNNzQuMTc0IDMxLjgwN2w3LjQzNyA1LjM2N3YtNy42MDJsLTcuNDgtOC43NjV2MTAuOTU3bC4wNDMuMDE1eiIvPjxwYXRoIGZpbGw9IiM1Mjk0Q0YiIGQ9Ik01OS44MzggODUuNjY2bDE0LjI5My03LjE0NlYyMC43OTFsLTE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMjA1Qjk4IiBkPSJNMzkuNDk2IDg1LjY2NkwyNS4yMDMgNzguNTJWMjAuNzkxbDE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNMzkuNTA2IDEzLjY2N2gyMC4zMjF2NzEuOTk5SDM5LjUwNnpNNzQuMTMxIDY3LjU2NFY3OC41Mmw3LjQ4LTguNzY0di03LjYwMmwtNy40MzcgNS4zOTd6TTc0LjEzMSA2Mi45MzZsLjA0My0uMDEgNy40MzctNHYtNy42NDlsLTcuNDguNjg4ek03NC4xNzQgMzYuNDI5bC0uMDQzLS4wMVY0Ny4zNWw3LjQ4LjY5OXYtNy42NDV6Ii8+PHBhdGggZmlsbD0iIzFBNDc2RiIgZD0iTTgxLjYxMSA0OC4wNDlsLTcuNDgtLjY5OS0xNC4zMDMtLjU3MkgzOS41MDZsLTE0LjMwMy41NzJWMzYuNDQzbC0uMDE1LjAwOC4wMTUtLjAzMiAxNC4zMDMtMy4zMTRINTkuODI4bDE0LjMwMyAzLjMxNCA1LjI1OCAyLjc5NXYtMS43OTdsMi4yMjItLjI0My03LjQ4LTUuNDEtMTQuMzAzLTQuNDMySDM5LjUwNmwtMTQuMzAzIDQuNDMyVjIwLjgwN2wtNy40OCA4Ljc2M3Y3LjY1M2wuMDU4LS4wNDIgMi4xNjQuMjM2djEuODM0bC0yLjIyMiAxLjE4OXY3LjYxNWwuMDU4LS4wMDYgMi4xNjQuMDMydjMuMTk2bC0xLjg2Ny4wMjgtLjM1NS0uMDM0djcuNjE4bDIuMjIyIDEuMTk1djEuODU1bC0yLjEyOS4yMzUtLjA5My0uMDd2Ny42NTJsNy40OCA4Ljc2NFY2Ny41NjRsMTQuMzAzIDQuNDMySDU5LjgyOGwxNC4zNDUtNC40NDUgNy40MzgtNS4zNjctMi4yMjItLjI0NXYtMS44MThsLTUuMjE2IDIuODA1LTE0LjM0NSAzLjI5NXYuMDA0SDM5LjUwNnYtLjAwNGwtMTQuMzQ4LTMuMjk1LS4wMjUtLjA1MS4wNy4wMzdWNTEuOTY1bDE0LjMwMy41N3YuMDE0SDU5LjgyOHYtLjAxNGwxNC4zMDMtLjU3IDcuNDgtLjY1Ni0yLjIyMi0uMDMydi0zLjE5NnoiLz48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS DynamoDB Streams"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS DynamoDB Sink"
    description: Send data to Amazon DynamoDB. The sent data inserts, updates, or deletes an item on the specified AWS DynamoDB table.
    required:
      - table
      - region
    type: object
    properties:
      table:
        title: Table
        description: The name of the DynamoDB table.
        type: string
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      operation:
        title: Operation
        description: "The operation to perform."
        type: string
        enum: ["PutItem", "UpdateItem", "DeleteItem"]
        default: PutItem
        example: PutItem
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: If true, the DynamoDB client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the DynamoDB client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the DynamoDB client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in DynamoDB.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
  dataTypes:
    in:
      default: json
      types:
        json:
          format: "aws2-ddb:application-json"
          description: Json representation of a DDB operation. The input type supports the operations PutItem, UpdateItem, DeleteItem. For PutItem operation the Json body defines all item attributes. For DeleteItem operation the Json body defines only the primary key attributes that identify the item to delete. For UpdateItem operation the Json body defines both key attributes to identify the item to be updated and all item attributes that get updated on the item.
          headers:
            CamelAwsDdbOperation:
              title: Operation
              description: "The operation to perform. Overwrites the operation given in the Json body. One of PutItem, UpdateItem, DeleteItem."
              default: PutItem
              type: string
            CamelAwsDdbReturnValues:
              title: Return Values
              description: Use this parameter if you want to get the attribute name-value pairs before or after they are modified. Possible values are NONE, ALL_OLD, UPDATED_OLD, ALL_NEW, UPDATED_NEW.
              type: string
          mediaType: application/json
          schema:
            type: object
            required: [ "key" ]
            properties:
              operation:
                type: string
                description: The operator to perform. One of PutItem, UpdateItem, DeleteItem
              key:
                type: object
                description: The primary key specifies the selection criteria for the query.
              item:
                type: object
                description: Attribute value map specifies all attributes to change with the given operation.
  dependencies:
  - "camel:core"
  - "camel:jackson"
  - "camel:aws2-ddb"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - setProperty:
          name: operation
          constant: "{{operation}}"
      - transform:
          toType: "aws2-ddb:application-json"
      - to:
          uri: "aws2-ddb:{{table}}"
          parameters:
            secretKey: "{{?secretKey}}"
            accessKey: "{{?accessKey}}"
            region: "{{region}}"
            operation: "{{operation}}"
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}"
            uriEndpointOverride: "{{?uriEndpointOverride}}"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"
            overrideEndpoint: "{{overrideEndpoint}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-ddb-streams-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNNzQuMTc0IDMxLjgwN2w3LjQzNyA1LjM2N3YtNy42MDJsLTcuNDgtOC43NjV2MTAuOTU3bC4wNDMuMDE1eiIvPjxwYXRoIGZpbGw9IiM1Mjk0Q0YiIGQ9Ik01OS44MzggODUuNjY2bDE0LjI5My03LjE0NlYyMC43OTFsLTE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMjA1Qjk4IiBkPSJNMzkuNDk2IDg1LjY2NkwyNS4yMDMgNzguNTJWMjAuNzkxbDE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNMzkuNTA2IDEzLjY2N2gyMC4zMjF2NzEuOTk5SDM5LjUwNnpNNzQuMTMxIDY3LjU2NFY3OC41Mmw3LjQ4LTguNzY0di03LjYwMmwtNy40MzcgNS4zOTd6TTc0LjEzMSA2Mi45MzZsLjA0My0uMDEgNy40MzctNHYtNy42NDlsLTcuNDguNjg4ek03NC4xNzQgMzYuNDI5bC0uMDQzLS4wMVY0Ny4zNWw3LjQ4LjY5OXYtNy42NDV6Ii8+PHBhdGggZmlsbD0iIzFBNDc2RiIgZD0iTTgxLjYxMSA0OC4wNDlsLTcuNDgtLjY5OS0xNC4zMDMtLjU3MkgzOS41MDZsLTE0LjMwMy41NzJWMzYuNDQzbC0uMDE1LjAwOC4wMTUtLjAzMiAxNC4zMDMtMy4zMTRINTkuODI4bDE0LjMwMyAzLjMxNCA1LjI1OCAyLjc5NXYtMS43OTdsMi4yMjItLjI0My03LjQ4LTUuNDEtMTQuMzAzLTQuNDMySDM5LjUwNmwtMTQuMzAzIDQuNDMyVjIwLjgwN2wtNy40OCA4Ljc2M3Y3LjY1M2wuMDU4LS4wNDIgMi4xNjQuMjM2djEuODM0bC0yLjIyMiAxLjE4OXY3LjYxNWwuMDU4LS4wMDYgMi4xNjQuMDMydjMuMTk2bC0xLjg2Ny4wMjgtLjM1NS0uMDM0djcuNjE4bDIuMjIyIDEuMTk1djEuODU1bC0yLjEyOS4yMzUtLjA5My0uMDd2Ny42NTJsNy40OCA4Ljc2NFY2Ny41NjRsMTQuMzAzIDQuNDMySDU5LjgyOGwxNC4zNDUtNC40NDUgNy40MzgtNS4zNjctMi4yMjItLjI0NXYtMS44MThsLTUuMjE2IDIuODA1LTE0LjM0NSAzLjI5NXYuMDA0SDM5LjUwNnYtLjAwNGwtMTQuMzQ4LTMuMjk1LS4wMjUtLjA1MS4wNy4wMzdWNTEuOTY1bDE0LjMwMy41N3YuMDE0SDU5LjgyOHYtLjAxNGwxNC4zMDMtLjU3IDcuNDgtLjY1Ni0yLjIyMi0uMDMydi0zLjE5NnoiLz48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS DynamoDB Streams"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "AWS DynamoDB Streams Source"
    description: Receive events from Amazon DynamoDB Streams.
    required:
      - table
      - region
    type: object
    properties:
      table:
        title: Table
        description: The name of the DynamoDB table.
        type: string
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      streamIteratorType:
        title: Stream Iterator Type
        description: Defines where in the DynamoDB stream to start getting records. There are two enums and the value can be one of FROM_LATEST and FROM_START. Note that using FROM_START can cause a significant delay before the stream has caught up to real-time.
        type: string
        default: FROM_LATEST
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: If `true`, the DynamoDB client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the DynamoDB client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the DynamoDB client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in DynamoDB.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
      delay:
        title: Delay
        description: The number of milliseconds before the next poll from the database.
        type: integer
        default: 500
  dataTypes:
    out:
      default: json
      headers:
        CamelAwsDdbStreamEventSource:
          title: The DDB Stream Event Source
          description: The Amazon Web Services service from which the stream record originated. For DynamoDB Streams, this is aws:dynamodb.
          type: string
        CamelAwsDdbStreamEventId:
          title: The DDB Stream Event Id
          description: A globally unique identifier for the event that was recorded in this stream record.
          type: string
      types:
        json:
          format: "application-json"
          description: Default Json representation of a DDB Stream Event.
          mediaType: application/json
        cloudevents:
          format: "aws2-ddbstream:application-cloudevents"
          description: Data type transformer converts AWS Dynamo DB Streams get records response to CloudEvent v1_0 data format. The data type sets Camel specific CloudEvent headers with values extracted from AWS Dynamo DB Streams get records.
          headers:
            CamelCloudEventID:
              title: CloudEvent ID
              description: The Camel exchange id set as event id.
              type: string
            CamelCloudEventType:
              title: CloudEvent Type
              description: The event type.
              default: "org.apache.camel.event.aws.ddbstream.getRecords"
              type: string
            CamelCloudEventSource:
              title: CloudEvent Source
              description: The event source. By default, the DDB Stream Event source receipt handle with prefix "aws.ddbstream.".
              type: string
            CamelCloudEventSubject:
              title: CloudEvent Subject
              description: The event subject. The DDB Stream Event Id.
              type: string
            CamelCloudEventTime:
              title: CloudEvent Time
              description: The exchange creation timestamp as event time.
              type: string
  dependencies:
  - "camel:gson"
  - "camel:aws2-ddb"
  - "camel:kamelet"
  template:
    from:
      uri: "aws2-ddbstream:{{table}}"
      parameters:
        secretKey: "{{?secretKey}}"
        accessKey: "{{?accessKey}}"
        region: "{{region}}"
        streamIteratorType: "{{streamIteratorType}}"
        useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
        useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
        useSessionCredentials: "{{useSessionCredentials}}"
        uriEndpointOverride: "{{?uriEndpointOverride}}"
        profileCredentialsName: "{{?profileCredentialsName}}"
        sessionToken: "{{?sessionToken}}"
        overrideEndpoint: "{{overrideEndpoint}}"
        delay: "{{delay}}"
      steps:
      - transform:
          toType: "aws2-ddb:application-x-struct"
      - to: "kamelet:sink"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-ec2-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjA2NSIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDMxMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTQyLjc1NCAyNDQuNDk1bC0yOS45MTggNi44MjZWNTcuNTY1bDI5LjkxOCA2LjgzOXYxODAuMDkxIiBmaWxsPSIjRjY4NTM2Ii8+PHBhdGggZD0iTTgwLjA4MiAyNTUuOTMxbC0zNy4zMjggMTAuNjA4VjQyLjYxMmwzNy4zMjggMTAuNTk1djIwMi43MjRNMTI3Ljk2NiAyNjcuNjgxbC00Ny44ODQgMTcuNTI0VjIzLjk0Nmw0Ny44ODQgMTcuNTE2djIyNi4yMTlNMjU2IDI0NS4wNzlsLTEyOC4wMzQgNjQuMDE3VjBMMjU2IDY0LjAxN3YxODEuMDYyIiBmaWxsPSIjRjY4NTM2Ii8+PHBhdGggZD0iTTEwMi40NDQgMTIuNzYzTDEyNy45NjYgMHYzMDkuMDk2bC0yNS41MjItMTIuNzU5VjEyLjc2M002MC4zMjUgMzMuODJsMTkuNzU3LTkuODc4djI2MS4yMTJsLTE5Ljc1Ny05Ljg3OFYzMy44Mk0yNy4wMTYgNTAuNDc3bDE1LjczOC03Ljg2OXYyMjMuODhsLTE1LjczOC03Ljg3NFY1MC40NzdNMTIuODM2IDU3LjU2NUwwIDYzLjk4M3YxODEuMTM0bDEyLjgzNiA2LjQxNFY1Ny41NjUiIGZpbGw9IiM5RDUwMjUiLz48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS EC2"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS EC2 Sink"
    description: Check the status of EC2 instances
    required:
      - region
    type: object
    properties:
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: If true, the EC2 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the EC2 client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the EC2 client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in EC2.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
  dependencies:
    - "camel:core"
    - "camel:aws2-ec2"
    - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - choice:
          when:
          - simple: "${header[instanceIds]}"
            steps:
            - setHeader:
                name: CamelAwsEC2InstancesIds
                simple: "${header[instanceIds]}"
          - simple: "${header[ce-instanceids]}"
            steps:
            - setHeader:
                name: CamelAwsEC2InstancesIds
                simple: "${header[ce-instanceids]}"
      - to:
          uri: "aws2-ec2:ec2-route"
          parameters:
            accessKey: "{{?accessKey}}"
            secretKey: "{{?secretKey}}"
            region: "{{region}}"
            operation: "describeInstancesStatus"
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}"
            uriEndpointOverride: "{{?uriEndpointOverride}}"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"
            overrideEndpoint: "{{overrideEndpoint}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-eventbridge-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCIgdmlld0JveD0iMCAwIDI1NiAyNTYiIHN0eWxlPSItbXMtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJJY29uaWZ5SWQtMTgyM2Y2NTU1NjktYWYxZGQ1LTIwMzYiIHgxPSIwJSIgeDI9IjEwMCUiIHkxPSIxMDAlIiB5Mj0iMCUiPjxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiNCMDA4NEQiLz48c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiNGRjRGOEIiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48cGF0aCBmaWxsPSJ1cmwoI0ljb25pZnlJZC0xODIzZjY1NTU2OS1hZjFkZDUtMjAzNikiIGQ9Ik0wIDBoMjU2djI1NkgweiIvPjxwYXRoIGZpbGw9IiNGRkYiIGQ9Ik0xNzEuNzAyIDIxMS4yYy02Ljg1OCAwLTEyLjQ0LTUuNjEtMTIuNDQtMTIuNTA5czUuNTgyLTEyLjUwOSAxMi40NC0xMi41MDljNi44NTcgMCAxMi40MzggNS42MSAxMi40MzggMTIuNTFjMCA2Ljg5OC01LjU4MSAxMi41MDgtMTIuNDM4IDEyLjUwOFptLTI3LjI3OC01NC40aC0zMy4wNzFMOTQuODE1IDEyOGwxNi41MzgtMjguOGgzMy4wNzFMMTYwLjk2IDEyOGwtMTYuNTM1IDI4LjhaTTg4LjM4NyA2OS44MThjLTYuODU3IDAtMTIuNDM4LTUuNjEtMTIuNDM4LTEyLjUxYzAtNi44OTggNS41ODEtMTIuNTA4IDEyLjQzOC0xMi41MDhjNi44NjEgMCAxMi40NDMgNS42MSAxMi40NDMgMTIuNTA5cy01LjU4MiAxMi41MDktMTIuNDQzIDEyLjUwOVptODMuMzE1IDEwOS45NjRjLTIuMzYyIDAtNC42MTQuNDU4LTYuNjk5IDEuMjYxbC0xMy41MTQtMjIuOTMxbC0uNzEzLjQyNkwxNjcuMzkgMTI5LjZhMy4yMjYgMy4yMjYgMCAwIDAgMC0zLjJsLTE4LjM3NC0zMmEzLjE3NyAzLjE3NyAwIDAgMC0yLjc1NS0xLjZoLTMzLjQzNWwuMTMtLjA3N2wtMTIuMzktMjEuMDNjNC4wNDctMy40NjkgNi42MjgtOC42MjcgNi42MjgtMTQuMzg0YzAtMTAuNDI2LTguNDM2LTE4LjkwOS0xOC44MDctMTguOTA5Yy0xMC4zNjcgMC0xOC44MDMgOC40ODMtMTguODAzIDE4LjkwOWMwIDEwLjQyNSA4LjQzNiAxOC45MDkgMTguODAzIDE4LjkwOWMyLjM2NSAwIDQuNjE4LS40NTggNi43MDItMS4yNjFsMTEuNTY3IDE5LjYyNUw4OC4zODQgMTI2LjRhMy4yMjYgMy4yMjYgMCAwIDAgMCAzLjJsMTguMzc3IDMyYy41Ny45OTIgMS42MiAxLjYgMi43NTYgMS42aDM2Ljc0NGMuMjY0IDAgLjUyMS0uMDQyLjc3LS4xMDJsMTIuNDk2IDIxLjIxYy00LjA1MSAzLjQ2OC02LjYyOSA4LjYyNi02LjYyOSAxNC4zODNjMCAxMC40MjYgOC40MzMgMTguOTA5IDE4LjgwNCAxOC45MDljMTAuMzcgMCAxOC44MDMtOC40ODMgMTguODAzLTE4LjkwOWMwLTEwLjQyNS04LjQzMy0xOC45MDktMTguODAzLTE4LjkwOVptMTguOTY4LTc3LjA1Yy02Ljg1NyAwLTEyLjQzNi01LjYwOS0xMi40MzYtMTIuNTA4YzAtNi45IDUuNTc5LTEyLjUwOSAxMi40MzYtMTIuNTA5YzYuODU4IDAgMTIuNDQgNS42MSAxMi40NCAxMi41MDljMCA2LjktNS41ODIgMTIuNTA5LTEyLjQ0IDEyLjUwOVptMjMuMzAzIDIzLjY2OGwtMTIuMDgtMjEuMDRjNC41OTItMy40NTMgNy41OC04Ljk0NCA3LjU4LTE1LjEzNmMwLTEwLjQyNi04LjQzMi0xOC45MDktMTguODAzLTE4LjkwOWMtMi42MzggMC01LjE1Mi41NTQtNy40MzMgMS41NDlsLTkuODQ5LTE3LjE1NWEzLjE4IDMuMTggMCAwIDAtMi43NTYtMS42aC0zOS40NDh2Ni40aDM3LjYxMmw5LjExIDE1Ljg3MmMtMy43MDMgMy40NTYtNi4wMzYgOC4zNzQtNi4wMzYgMTMuODQzYzAgMTAuNDI2IDguNDMzIDE4LjkwOSAxOC44IDE4LjkwOWMxLjkzMiAwIDMuOC0uMjk4IDUuNTU2LS44NDVMMjA3LjU0NSAxMjhsLTE1Ljg5MiAyNy42NzRsNS41MTIgMy4ybDE2LjgwOC0yOS4yNzRhMy4yMSAzLjIxIDAgMCAwIDAtMy4yWm0tMTQ2LjA0IDUwLjM5Yy02Ljg2IDAtMTIuNDQyLTUuNjEyLTEyLjQ0Mi0xMi41MDhjMC02LjkgNS41ODEtMTIuNTEgMTIuNDQyLTEyLjUxYzYuODU3IDAgMTIuNDM5IDUuNjEgMTIuNDM5IDEyLjUxYzAgNi44OTYtNS41ODIgMTIuNTA4LTEyLjQ0IDEyLjUwOFptMTAuMzkzIDMuMjM2YzUuMDYyLTMuMzkyIDguNDEtOS4xODEgOC40MS0xNS43NDRjMC0xMC40MjYtOC40MzYtMTguOTEtMTguODAzLTE4LjkxYy0zLjAwNCAwLTUuODMzLjczLTguMzUzIDEuOTk0TDQ4LjQ1OCAxMjhsMTguNDI4LTMyLjA5M2wtNS41MTUtMy4yTDQyLjAyNyAxMjYuNGEzLjIxIDMuMjEgMCAwIDAgMCAzLjJsMTIuMzg4IDIxLjU2OGMtMy4yNjggMy40MDUtNS4yODkgOC4wMjItNS4yODkgMTMuMTE0YzAgMTAuNDI1IDguNDM2IDE4LjkwOCAxOC44MDcgMTguOTA4YzEuNTYyIDAgMy4wNzQtLjIxNCA0LjUyOC0uNTc5bDEwLjE1IDE3LjY4Yy41Ny45ODkgMS42MiAxLjYgMi43NTcgMS42aDM5LjQ1MXYtNi40SDg3LjIwNGwtOC44NzgtMTUuNDY1WiIvPjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS Eventbridge"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS Eventbridge Sink"
    description: Send events to an Amazon Eventbridge Eventbus.

      In the headers, you can set the `resources-arn` / `ce-resources-arn` property to specify the ARN of resources related to the event.

      In the headers, you can set the `detail-type` / `ce-detail-type` property to specify the detail type related to the event.

      In the headers, you can set the `event-source` / `ce-event-source` property to specify the event source related to the event.

      If you do not set the property in the header, the Kamelet uses the given Kamelet properties as a default.
    required:
      - eventbusNameOrArn
      - region
    type: object
    properties:
      eventbusNameOrArn:
        title: Eventbus Name
        description: The Eventbridge Eventbus name or Amazon Resource Name (ARN).
        type: string
      resourcesArn:
        title: Event Resource ARN
        description: The ARN of resources related to the AWS event (e.g. `arn:aws:s3:eu-east-1:000000000001:test`).
        type: string
      eventSourcePrefix:
        title: Event Source Prefix
        description: The event source prefix set for all events sent to the eventbus.
        type: string
        default: ""
      eventSource:
        title: Event Source
        description: The event source related to the AWS event (e.g. `aws.s3`).
        type: string
      detailType:
        title: Event Detail Type
        description: The event detail type related to the AWS event.
        type: string
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: If true, the Eventbridge client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the Eventbridge client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the Eventbridge client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Eventbridge.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
  dependencies:
    - "camel:core"
    - "camel:aws2-eventbridge"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[resources-arn]}"
            steps:
            - setHeader:
                name: CamelAwsEventbridgeResourcesArn
                simple: "${header[resources-arn]}"
          - simple: "${header[ce-resources-arn]}"
            steps:
            - setHeader:
                name: CamelAwsEventbridgeResourcesArn
                simple: "${header[ce-resources-arn]}"
          otherwise:
            steps:
            - setHeader:
                name: CamelAwsEventbridgeResourcesArn
                simple: "{{?resourcesArn}}"
      - choice:
          when:
          - simple: "${header[detail-type]}"
            steps:
            - setHeader:
                name: CamelAwsEventbridgeDetailType
                simple: "${header[detail-type]}"
          - simple: "${header[ce-detail-type]}"
            steps:
            - setHeader:
                name: CamelAwsEventbridgeDetailType
                simple: "${header[ce-detail-type]}"
          otherwise:
            steps:
            - setHeader:
                name: CamelAwsEventbridgeDetailType
                simple: "{{?detailType}}"
      - choice:
          when:
          - simple: "${header[event-source]}"
            steps:
            - setHeader:
                name: CamelAwsEventbridgeSource
                simple: "{{?eventSourcePrefix}}${header[event-source]}"
          - simple: "${header[ce-event-source]}"
            steps:
            - setHeader:
                name: CamelAwsEventbridgeSource
                simple: "{{?eventSourcePrefix}}${header[ce-event-source]}"
          - simple: "${header[ce-source]}"
            steps:
            - setHeader:
                name: CamelAwsEventbridgeSource
                simple: "{{?eventSourcePrefix}}${header[ce-source]}"
          otherwise:
            steps:
            - setHeader:
                name: CamelAwsEventbridgeSource
                simple: "{{?eventSourcePrefix}}{{?eventSource}}"
      - to:
          uri: "aws2-eventbridge:{{eventbusNameOrArn}}"
          parameters:
            secretKey: "{{?secretKey}}"
            accessKey: "{{?accessKey}}"
            region: "{{region}}"
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}"
            uriEndpointOverride: "{{?uriEndpointOverride}}"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"
            overrideEndpoint: "{{overrideEndpoint}}"
            operation: "putEvent"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-kinesis-firehose-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODUgODUiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9IjIuNSIgeT0iMi41Ii8+PHN5bWJvbCBpZD0iQSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZT0ibm9uZSI+PHBhdGggZD0iTTEzLjc2NiAzLjEyaDUyLjQ2OGMzLjY1MSAwIDcuMTUyIDEuMzYzIDkuNzM0IDMuNzg4UzgwIDEyLjYyNCA4MCAxNi4wNTR2MjEuNjk4Yy0yLjcxNy0xLjMxOS04LjY2NC0yLjcyMy0xNy40NjQtMi43MjMtMy4zNy0uMDEzLTYuNzM3LjIyNC0xMC4wNjguNzA5LTUuOTMyLjkyMi05LjA1NyAyLjUxLTkuMDU3IDMuNDg5djM2Ljg3M2MwIC42MS44OTEgMS40MTggMi41ODEgMi4yMTJIMTMuNzY2QzYuMTYzIDc4LjMxMyAwIDcyLjUyMiAwIDY1LjM3OVYxNi4wNTRDMCA4LjkxMSA2LjE2MyAzLjEyIDEzLjc2NiAzLjEyeiIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0xMy43NjYgMGg1Mi40NjhjMy42NTEgMCA3LjE1MiAxLjM2MyA5LjczNCAzLjc4OFM4MCA5LjUwNCA4MCAxMi45MzR2MjEuNjdjLTIuNzE3LTEuMzE5LTguNjY0LTIuNzIzLTE3LjQ2NC0yLjcyM2E2Ny45NCA2Ny45NCAwIDAgMC0xMC4wNjguNzA5Yy01LjkzMi45MjItOS4wNTcgMi41MS05LjA1NyAzLjQ4OXYzNi44MTZjMCAuNjEuODkxIDEuNDE4IDIuNTgxIDIuMjEySDEzLjc2NmMtMy42NTEgMC03LjE1Mi0xLjM2My05LjczNC0zLjc4OFMwIDY1LjYwNCAwIDYyLjE3NHYtNDkuMjRDMCA1Ljc5MSA2LjE2MyAwIDEzLjc2NiAweiIgZmlsbD0iI2Y1ODUzNCIvPjxwYXRoIGQ9Ik02My45MjQgNDEuODA4YTU3LjAzIDU3LjAzIDAgMCAwLTguNDUzLjU5NiAyNi40NCAyNi40NCAwIDAgMS03LjU0Ny0uNjI0djMuNTQ2YzAgLjgyMyAyLjY0MSAyLjE1NiA3LjU0NyAyLjkwN2E1NC40NyA1NC40NyAwIDAgMCA4LjQ1My41OTZDNzQuMzM5IDQ4LjgyOCA4MCA0Ni41MTcgODAgNDUuMzI2VjQxLjc4em0tMTYuMzc3IDEwLjQxdjI0LjI1MWMwIDEuMjIgNC41MjggMy41MTcgMTUuMzIxIDMuNTE3YTUxLjY4IDUxLjY4IDAgMCAwIDEzLjI2OC0xLjQxOGMyLjE0My0uNjUyIDMuNjY4LTEuNDE4IDMuODM0LTEuOTQzVjUyLjUxNmMtMy4xNCAxLjgyOS05LjYxNSAyLjgzNi0xNi4wNDUgMi44MzZoLTIuNjcxbC0xLjYzLS4yN2gtLjgxNWwtMS4yNjgtLjA5OS0uNjc5LS4wOTktMS4zNTgtLjE3YTIyLjQ5IDIyLjQ5IDAgMCAxLTcuOTU1LTIuNDk2eiIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik02My45MjQgMzguMjc3YTU3LjAxIDU3LjAxIDAgMCAwLTguNDUzLjU5NmMtNC45ODEuNzgtNy41NDcgMi4xMTMtNy41NDcgMi45MjJzMi42NDEgMi4xNTYgNy41NDcgMi45MDdhNTQuNDYgNTQuNDYgMCAwIDAgOC40NTMuNTk2Qzc0LjMzOSA0NS4yOTggODAgNDIuOTg2IDgwIDQxLjc5NXMtNS42Ni0zLjUxNy0xNi4wNzYtMy41MTd6TTQ3LjU0NyA0OC42NzN2MjQuMjIzYzAgMS4yMzQgNC41MjggMy41MDMgMTUuMjc1IDMuNTAzYTUxLjY4IDUxLjY4IDAgMCAwIDEzLjI2OC0xLjQxOGMyLjE0My0uNjUyIDMuNjY4LTEuNDE4IDMuODM0LTEuOTQzdi0yNC4xMWMtMy4xNCAxLjgzLTkuNjE1IDIuODM2LTE2LjA0NSAyLjgzNmgtMi42NzJsLTEuNTg1LS4yMjdoLS44MTVsLTEuMjY4LS4wOTktLjY3OS0uMDk5LTEuMzU4LS4xN2EyMi40OSAyMi40OSAwIDAgMS03Ljk1NS0yLjQ5NnoiIGZpbGw9IiNmNTg1MzQiLz48cGF0aCBkPSJNMTMuNzY2IDc1LjE2NWgzMi4xOTZ2My4xMkgxMy43NjZDNi4xNjMgNzguMjg1IDAgNzIuNDk0IDAgNjUuMzUxdi0zLjEyYzAgNy4xNDMgNi4xNjMgMTIuOTM0IDEzLjc2NiAxMi45MzR6IiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTY1LjE3NyAxNi4xNjhMNTMuMTAyIDQuODIydjUuNjczSDM0LjI0OVYzMC4zNWgxOC44MjN2Mi4xODRsNC4yNTYtLjQ0TDY5LjcyIDIwLjQyMnptLTU3LjU2OS0uMDAxdjE0LjE4MmgyMC44M1YxMC40NTJINy42MDh2NS43MTV6bTUuODExIDMzLjUxMnYxNC4xODJoMjAuODNWNDMuOTY0aC0yMC44M3Y1LjcxNXoiLz48L2c+PC9zeW1ib2w+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS Kinesis Firehose"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS Kinesis Firehose Sink"
    description: Send message to an AWS Kinesis Firehose Stream.
    required:
      - streamName
      - region
    type: object
    properties:
      streamName:
        title: Stream Name
        description: The name of the stream we want to send to data to.
        type: string
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: Set whether the Kinesis Firehose client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the Kinesis Firehose client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the Kinesis Firehose client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Kinesis Firehose.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
  dependencies:
    - "camel:aws2-kinesis"
    - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - to:
          uri: "aws2-kinesis-firehose:{{streamName}}"
          parameters:
            accessKey: "{{?accessKey}}"
            secretKey: "{{?secretKey}}"
            region: "{{region}}"
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}"
            uriEndpointOverride: "{{?uriEndpointOverride}}"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"
            overrideEndpoint: "{{overrideEndpoint}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-kinesis-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMzA4LjIzNDAxIj48dGl0bGU+YXdzLWtpbmVzaXM8L3RpdGxlPjxwYXRoIGQ9Ik0wLDE3Mi4wODdsMTI3Ljc1NCw1OC44MSwxMjcuNzUyLTU4LjgxLTEyNy43NTItNS4yOTNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDcsMCwuMDU5LDYzLjg4MXY5MC4xMzZIMTUzLjY0OFYxMi43NTFaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTS4wNTksMjE3LjU1OWwxMjguMTYyLDkwLjY3NUwyNTYsMjE3LjU1OSwxMjcuOTQ1LDE5OC45MjZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDYsMTU0LjAxN2g2Ny41NzdWNTcuODM2TDE3NS45OSw0OS45NDMsMTI4LjE0Niw2My44OThaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTE3NS45OSwxNTQuMDE3aDUyLjIzM1Y5MS42MzJsLTE0Ljk0LTQuNDgxLTM3LjI5Myw2LjMzWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0yMTMuMjgyLDgyLjI2djcxLjc1N2g0Mi4yMjRMMjU2LDgxLjk0MWwtMTIuODI2LTUuMTI0WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0xMjguMTQ3LDBWMTU0LjAxN2gyNS41VjEyLjc1MVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMTk1LjcyNCw1Ny44MzZsLTE5LjczMy03Ljg5NFYxNTQuMDE3aDE5LjczMloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMjI4LjIyNCw5MS42MzJsLTE0Ljk0MS00LjQ4djY2Ljg2NWgxNC45NFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMjQzLjE3NCwxNTQuMDE3SDI1NlY4MS45NDFsLTEyLjgyNi01LjEyNFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMTI3Ljc1NCwxODQuODYzdjQ2LjAzM2wxMjcuNzUyLTMxLjg0NFYxNzIuMDg3WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iI2Y2ODUzNCIvPjxwYXRoIGQ9Ik0xMjcuNzU0LDI2Mi43ODF2NDUuNDUzTDI1NiwyNDQuMTE0VjIxNy41NloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNLjA1OSwyNDQuMzlsMTI3LjY5NSw2My44NDRWMjYyLjQ0OEwuMDU4LDIxNy41NThaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTAsMTk5LjA1MWwxMjcuNzU0LDMxLjg0NVYxODQuODYyTDAsMTcyLjA4NloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiM5ZDUwMjUiLz48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS Kinesis"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS Kinesis Sink"
    description: Send data to AWS Kinesis.
    required:
      - stream
      - region
    type: object
    properties:
      stream:
        title: Stream Name
        description: The Kinesis stream that you want to access. The Kinesis stream that you specify must already exist.
        type: string
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: If true, the Kinesis client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the Kinesis client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the Kinesis client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Kinesis.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
  types:
    in:
      mediaType: application/octet-stream
  dependencies:
    - "camel:core"
    - "camel:aws2-kinesis"
    - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - choice:
          when:
          - simple: "${header[partition]}"
            steps:
            - setHeader:
                name: CamelAwsKinesisPartitionKey
                simple: "${header[partition]}"
          - simple: "${header[ce-partition]}"
            steps:
            - setHeader:
                name: CamelAwsKinesisPartitionKey
                simple: "${header[ce-partition]}"
          otherwise:
            steps:
            - setHeader:
                name: CamelAwsKinesisPartitionKey
                simple: "${exchangeId}"
      - choice:
          when:
          - simple: "${header[sequence-number]}"
            steps:
            - setHeader:
                name: CamelAwsKinesisSequenceNumber
                simple: "${header[sequence-number]}"
          - simple: "${header[ce-sequencenumber]}"
            steps:
            - setHeader:
                name: CamelAwsKinesisSequenceNumber
                simple: "${header[ce-sequencenumber]}"
      - to:
          uri: "aws2-kinesis:{{stream}}"
          parameters:
            secretKey: "{{?secretKey}}"
            accessKey: "{{?accessKey}}"
            region: "{{region}}"
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}"
            uriEndpointOverride: "{{?uriEndpointOverride}}"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"
            overrideEndpoint: "{{overrideEndpoint}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-kinesis-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMzA4LjIzNDAxIj48dGl0bGU+YXdzLWtpbmVzaXM8L3RpdGxlPjxwYXRoIGQ9Ik0wLDE3Mi4wODdsMTI3Ljc1NCw1OC44MSwxMjcuNzUyLTU4LjgxLTEyNy43NTItNS4yOTNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDcsMCwuMDU5LDYzLjg4MXY5MC4xMzZIMTUzLjY0OFYxMi43NTFaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTS4wNTksMjE3LjU1OWwxMjguMTYyLDkwLjY3NUwyNTYsMjE3LjU1OSwxMjcuOTQ1LDE5OC45MjZaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDYsMTU0LjAxN2g2Ny41NzdWNTcuODM2TDE3NS45OSw0OS45NDMsMTI4LjE0Niw2My44OThaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTE3NS45OSwxNTQuMDE3aDUyLjIzM1Y5MS42MzJsLTE0Ljk0LTQuNDgxLTM3LjI5Myw2LjMzWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0yMTMuMjgyLDgyLjI2djcxLjc1N2g0Mi4yMjRMMjU2LDgxLjk0MWwtMTIuODI2LTUuMTI0WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iIzlkNTAyNSIvPjxwYXRoIGQ9Ik0xMjguMTQ3LDBWMTU0LjAxN2gyNS41VjEyLjc1MVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMTk1LjcyNCw1Ny44MzZsLTE5LjczMy03Ljg5NFYxNTQuMDE3aDE5LjczMloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMjI4LjIyNCw5MS42MzJsLTE0Ljk0MS00LjQ4djY2Ljg2NWgxNC45NFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMjQzLjE3NCwxNTQuMDE3SDI1NlY4MS45NDFsLTEyLjgyNi01LjEyNFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNMTI3Ljc1NCwxODQuODYzdjQ2LjAzM2wxMjcuNzUyLTMxLjg0NFYxNzIuMDg3WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAwLjAwMDA1KSIgZmlsbD0iI2Y2ODUzNCIvPjxwYXRoIGQ9Ik0xMjcuNzU0LDI2Mi43ODF2NDUuNDUzTDI1NiwyNDQuMTE0VjIxNy41NloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiNmNjg1MzQiLz48cGF0aCBkPSJNLjA1OSwyNDQuMzlsMTI3LjY5NSw2My44NDRWMjYyLjQ0OEwuMDU4LDIxNy41NThaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjOWQ1MDI1Ii8+PHBhdGggZD0iTTAsMTk5LjA1MWwxMjcuNzU0LDMxLjg0NVYxODQuODYyTDAsMTcyLjA4NloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDAwNSkiIGZpbGw9IiM5ZDUwMjUiLz48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS Kinesis"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "AWS Kinesis Source"
    description: Receive data from AWS Kinesis.
    required:
      - stream
      - region
    type: object
    properties:
      stream:
        title: Stream Name
        description: The Kinesis stream that you want to access. The Kinesis stream that you specify must already exist.
        type: string
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: If true, the Kinesis client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the Kinesis client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the Kinesis client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Kinesis.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
      delay:
        title: Delay
        description: The number of milliseconds before the next poll of the selected stream.
        type: integer
        default: 500
      asyncClient:
        title: Async Client
        description: If we want a KinesisAsyncClient instance set it to true.
        type: boolean
        default: false
      useKclConsumers:
        title: KCL Consumer
        description: If we want to a KCL Consumer set it to true
        type: boolean
        default: false
      kclDisableCloudwatchMetricsExport:
        title: KCL Disable Cloudwatch Metrics Export
        description: Define if we want to use a KCL Consumer and disable the CloudWatch Metrics Export
        type: boolean
        default: false
  types:
    out:
      mediaType: application/octet-stream
  dependencies:
    - "camel:aws2-kinesis"
    - "camel:kamelet"
    - "camel:core"
  template:
    from:
      uri: aws2-kinesis:{{stream}}
      parameters:
        secretKey: "{{?secretKey}}"
        accessKey: "{{?accessKey}}"
        region: "{{region}}"
        useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
        useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
        useSessionCredentials: "{{useSessionCredentials}}"
        uriEndpointOverride: "{{?uriEndpointOverride}}"
        profileCredentialsName: "{{?profileCredentialsName}}"
        sessionToken: "{{?sessionToken}}"
        overrideEndpoint: "{{overrideEndpoint}}"
        delay: "{{delay}}"
        useKclConsumers: "{{useKclConsumers}}"
        asyncClient: "{{asyncClient}}"
        kclDisableCloudwatchMetricsExport: "{{kclDisableCloudwatchMetricsExport}}"
      steps:
      - to: "kamelet:sink"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-lambda-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjA2NSIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDMxMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTAgMjQ1LjI2MmwxNi4zMjIgOC4xNjFMMTkgMjQ4LjY2OFY1OS4zMzNsLTIuNjc4LTMuNDk0TDAgNjR2MTgxLjI2MiIgZmlsbD0iIzlENTAyNSIvPjxwYXRoIGQ9Ik00Ny42NzggNjMuNTdsLTMxLjM1Ni03LjczMXYxOTcuNTg0bDMxLjM1Ni03LjMwMlY2My41NyIgZmlsbD0iI0Y2ODUzNiIvPjxwYXRoIGQ9Ik0xNDMuODkzIDc4LjYwNGwyMi4zMzUtMTEuNTk3IDc0LjMwOSAyOC43NzgtMTkuNzU4IDIuNTc3LTc2Ljg4Ni0xOS43NTgiIGZpbGw9IiM2QjNBMTkiLz48cGF0aCBkPSJNMTQ0Ljc1MiAyMzAuNjU4bDIxLjkwNiAxMS41OTcgNzQuMzA4LTI4Ljc3OC0xOS43NTgtMi41NzgtNzYuNDU2IDE5Ljc1OSIgZmlsbD0iI0ZCQkY5MyIvPjxwYXRoIGQ9Ik0xNTAuMzM2IDE5OC44NzJsMzkuMDg3IDUuMTU1IDIuMjQ0LTQuMDI3di05MGwtMi4yNDQtNC43NjUtMzkuMDg3IDUuMTU0djg4LjQ4M00zNS42NTEgNDUuOTZsMjQuMDU0LTEyLjAyN0w2Mi4zMzMgMzl2MjMxbC0yLjYyOCA1LjMyOS0yNC4wNTQtMTIuMDI3VjQ1Ljk2IiBmaWxsPSIjOUQ1MDI1Ii8+PHBhdGggZD0iTTEwOC42NzEgMjU5LjAwN2wtNDguOTY2IDE1Ljg5MlYzMy45MzNsNDguOTY2IDE1Ljg5M3YyMDkuMTgxIiBmaWxsPSIjRjY4NTM2Ii8+PHBhdGggZD0iTTg5Ljc3MiAyODkuOTMzTDEyOCAzMDkuMjYybDQtNC41OTV2LTI5OUwxMjggMCA4OS43NzIgMTkuMzI5djI3MC42MDRNMjE5LjkxOSA5OC4zNjJsMTkuNzU5LTIuNTc3IDEuNjk3IDIuNDY1VjIxMWwtMS42OTcgMi45MDYtMTkuNzU5LTIuNTc3Vjk4LjM2MiIgZmlsbD0iIzlENTAyNSIvPjxwYXRoIGQ9Ik0xODkuNDIzIDEwNS4yMzV2OTkuMjIxbDQwLjgwNS00OS44MjUtNDAuODA1LTQ5LjM5NiIgZmlsbD0iI0Y2ODUzNiIvPjxwYXRoIGQ9Ik0yMzkuNjc4IDU1LjgzOUwxMjggMHYzMDkuMjYybDEyOC02NFY2NGwtMTYuMzIyLTguMTYxem0wIDE1OC4yMTdsLTczLjQ1IDIxLjkzNlY3My4yN2w3My40NSAyMS45MzZ2MTE4Ljg1eiIgZmlsbD0iI0Y2ODUzNiIvPjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS Lambda"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS Lambda Sink"
    description: Send a payload to an AWS Lambda function.
    required:
      - function
      - region
    type: object
    properties:
      function:
        title: Function Name
        description: The Lambda Function name.
        type: string
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: If true, the Lambda client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the Lambda client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the Lambda client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Lambda.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  dependencies:
    - "camel:aws2-lambda"
    - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - to:
          uri: "aws2-lambda:{{function}}"
          parameters:
            accessKey: "{{?accessKey}}"
            secretKey: "{{?secretKey}}"
            region: "{{region}}"
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-redshift-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxNjE1IDE3ODMuNyIgdmlld0JveD0iMCAwIDE2MTUgMTc4My43IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Im04MDcuNSAxMzYzLjggNjc4LjMgMTYxLjV2LTEyNzAuNWwtNjc4LjMgMTYxLjV6IiBmaWxsPSIjMjA1Yjk3Ii8+PHBhdGggZD0ibTE0ODUuOCAyNTQuOCAxMjkuMiA2NC42djExNDEuM2wtMTI5LjIgNjQuNnptLTY3OC4zIDExMDktNjc4LjMgMTYxLjV2LTEyNzAuNWw2NzguMyAxNjEuNXoiIGZpbGw9IiM1MTkzY2UiLz48cGF0aCBkPSJtMTI5LjIgMjU0LjgtMTI5LjIgNjQuNnYxMTQxLjNsMTI5LjIgNjQuNnoiIGZpbGw9IiMyMDViOTciLz48cGF0aCBkPSJtOTc5LjggMTc4My43IDI1OC40LTEyOS4ydi0xNTI1LjNsLTI1OC40LTEyOS4yLTc5IDg0N3oiIGZpbGw9IiM1MTkzY2UiLz48cGF0aCBkPSJtNjM1LjIgMTc4My43LTI1OC40LTEyOS4ydi0xNTI1LjNsMjU4LjQtMTI5LjIgNzkgODQ3eiIgZmlsbD0iIzIwNWI5NyIvPjxwYXRoIGQ9Im02MzUuMiAwaDM0OC4xdjE3ODAuMWgtMzQ4LjF6IiBmaWxsPSIjMmU3M2I3Ii8+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS Redshift"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS Redshift Sink"
    description: Send data to an AWS Redshift Database. This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters.
    required:
      - serverName
      - username
      - password
      - query
      - databaseName
    type: object
    properties:
      serverName:
        title: Server Name
        description: The server name for the data source.
        type: string
        example: localhost
      serverPort:
        title: Server Port
        description: The server port for the AWS RedShi data source.
        type: string
        default: 5439
      username:
        title: Username
        description: The username to access a secured AWS Redshift Database.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access a secured AWS Redshift Database.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      query:
        title: Query
        description: The query to execute against the AWS Redshift Database.
        type: string
        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
      databaseName:
        title: Database Name
        description: The name of the AWS RedShift Database.
        type: string
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:sql"
  - "mvn:com.amazon.redshift:redshift-jdbc42:2.1.0.34"
  - "mvn:org.apache.commons:commons-dbcp2:2.13.0"
  template:
    beans:
      - name: local-sql-redshift-sink
        type: "#class:org.apache.camel.component.sql.SqlComponent"
        properties:
          autowiredEnabled: "false"
      - name: dsBean
        type: "#class:org.apache.commons.dbcp2.BasicDataSource"
        properties:
          username: '{{username}}'
          password: '{{password}}'
          url: 'jdbc:redshift://{{serverName}}:{{serverPort}}/{{databaseName}}'
          driverClassName: 'com.amazon.redshift.jdbc.Driver'
    from:
      uri: "kamelet:source"
      steps:
      - unmarshal:
          json: 
            library: Jackson
      - to: 
          uri: "{{local-sql-redshift-sink}}:{{query}}"
          parameters:
            dataSource: "#bean:{{dsBean}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-redshift-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxNjE1IDE3ODMuNyIgdmlld0JveD0iMCAwIDE2MTUgMTc4My43IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Im04MDcuNSAxMzYzLjggNjc4LjMgMTYxLjV2LTEyNzAuNWwtNjc4LjMgMTYxLjV6IiBmaWxsPSIjMjA1Yjk3Ii8+PHBhdGggZD0ibTE0ODUuOCAyNTQuOCAxMjkuMiA2NC42djExNDEuM2wtMTI5LjIgNjQuNnptLTY3OC4zIDExMDktNjc4LjMgMTYxLjV2LTEyNzAuNWw2NzguMyAxNjEuNXoiIGZpbGw9IiM1MTkzY2UiLz48cGF0aCBkPSJtMTI5LjIgMjU0LjgtMTI5LjIgNjQuNnYxMTQxLjNsMTI5LjIgNjQuNnoiIGZpbGw9IiMyMDViOTciLz48cGF0aCBkPSJtOTc5LjggMTc4My43IDI1OC40LTEyOS4ydi0xNTI1LjNsLTI1OC40LTEyOS4yLTc5IDg0N3oiIGZpbGw9IiM1MTkzY2UiLz48cGF0aCBkPSJtNjM1LjIgMTc4My43LTI1OC40LTEyOS4ydi0xNTI1LjNsMjU4LjQtMTI5LjIgNzkgODQ3eiIgZmlsbD0iIzIwNWI5NyIvPjxwYXRoIGQ9Im02MzUuMiAwaDM0OC4xdjE3ODAuMWgtMzQ4LjF6IiBmaWxsPSIjMmU3M2I3Ii8+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS Redshift"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "AWS Redshift Source"
    description: Query data from an AWS RedShift Database.
    required:
      - serverName
      - username
      - password
      - query
      - databaseName
    type: object
    properties:
      serverName:
        title: Server Name
        description: The server name for the data source.
        type: string
        example: localhost
      serverPort:
        title: Server Port
        description: The server port for the data source.
        type: string
        default: 5439
      username:
        title: Username
        description: The username to access a secured AWS RedShift Database.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access a secured AWS RedShift Database.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      query:
        title: Query
        description: The query to execute against the AWS RedShift Database.
        type: string
        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
      databaseName:
        title: Database Name
        description: The name of the AWS RedShift Database.
        type: string
      consumedQuery:
        title: Consumed Query
        description: A query to run on a tuple consumed.
        type: string
        example: 'DELETE FROM accounts where user_id = :#user_id'
      delay:
        title: Delay
        description: The number of milliseconds before the next poll from the AWS RedShift database.
        type: integer
        default: 500
  types:
    out:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:sql"
  - "mvn:com.amazon.redshift:redshift-jdbc42:2.1.0.34"
  - "mvn:org.apache.commons:commons-dbcp2:2.13.0"
  template:
    beans:
      - name: local-sql-redshift-source
        type: "#class:org.apache.camel.component.sql.SqlComponent"
        properties:
          autowiredEnabled: "false"
      - name: dsBean
        type: "#class:org.apache.commons.dbcp2.BasicDataSource"
        properties:
          username: '{{username}}'
          password: '{{password}}'
          url: 'jdbc:redshift://{{serverName}}:{{serverPort}}/{{databaseName}}'
          driverClassName: 'com.amazon.redshift.jdbc.Driver'
    from:
      uri: "{{local-sql-redshift-source}}:{{query}}"
      parameters:
        dataSource: "#bean:{{dsBean}}"
        onConsume: "{{?consumedQuery}}"
        delay: "{{delay}}"
      steps:
      - marshal:
          json: 
            library: Jackson
      - to: "kamelet:sink"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-s3-event-based-source
  annotations:
    camel.apache.org/kamelet.support.level: Preview
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: >-
      data:image/svg+xml;base64,[encoded data, 4228 characters]
    camel.apache.org/provider: Apache Software Foundation
    camel.apache.org/kamelet.group: AWS S3 Event-Based
    camel.apache.org/kamelet.namespace: "AWS"
    camel.apache.org/keda.type: aws-s3-event-based-queue
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "AWS S3 Event Based Source"
    description: Receive data from AWS SQS subscribed to Eventbridge Bus reporting events related to an S3 bucket or multiple buckets.
    required:
      - accessKey
      - secretKey
      - queueNameOrArn
      - region
    type: object
    properties:
      queueNameOrArn:
        title: Queue Name
        description: The SQS Queue Name or ARN
        type: string
      deleteAfterRead:
        title: Auto-delete Messages
        description: Delete messages after consuming them
        type: boolean
        default: true
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
          - 'urn:camel:group:credentials'
          - 'urn:keda:authentication:awsAccessKeyID'
          - 'urn:keda:required'
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
          - 'urn:camel:group:credentials'
          - 'urn:keda:authentication:awsSecretAccessKey'
          - 'urn:keda:required'
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        x-descriptors:
          - 'urn:keda:metadata:awsRegion'
          - 'urn:keda:required'
        enum:
          - ap-south-1
          - eu-south-1
          - us-gov-east-1
          - me-central-1
          - ca-central-1
          - eu-central-1
          - us-iso-west-1
          - us-west-1
          - us-west-2
          - af-south-1
          - eu-north-1
          - eu-west-3
          - eu-west-2
          - eu-west-1
          - ap-northeast-3
          - ap-northeast-2
          - ap-northeast-1
          - me-south-1
          - sa-east-1
          - ap-east-1
          - cn-north-1
          - us-gov-west-1
          - ap-southeast-1
          - ap-southeast-2
          - us-iso-east-1
          - ap-southeast-3
          - us-east-1
          - us-east-2
          - cn-northwest-1
          - us-isob-east-1
          - aws-global
          - aws-cn-global
          - aws-us-gov-global
          - aws-iso-global
          - aws-iso-b-global
      autoCreateQueue:
        title: Autocreate Queue
        description: Setting the autocreation of the SQS queue.
        type: boolean
        default: false
      amazonAWSHost:
        title: AWS Host
        description: The hostname of the Amazon AWS cloud.
        type: string
        default: amazonaws.com
      protocol:
        title: Protocol
        description: The underlying protocol used to communicate with SQS
        type: string
        example: http or https
        default: https
      queueURL:
        title: Queue URL
        description: The full SQS Queue URL (required if using KEDA)
        type: string
        x-descriptors:
          - 'urn:keda:metadata:queueURL'
          - 'urn:keda:required'
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: >-
          The overriding endpoint URI. To use this option, you must also select
          the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: >-
          Select this option to override the endpoint URI. To use this option,
          you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
      delay:
        title: Delay
        description: The number of milliseconds before the next poll of the selected stream
        type: integer
        default: 500
      greedy:
        title: Greedy Scheduler
        description: >-
          If greedy is enabled, then the polling will happen immediately again,
          if the previous run polled 1 or more messages.
        type: boolean
        default: false
      getObject:
        title: Greedy Object in Bucket
        description: >-
          If `getObject` is enabled, then the file created in the bucket is
          retrieved and returned as body. If not, only the event will returned as body.
        type: boolean
        default: false
  dependencies:
    - 'camel:core'
    - 'camel:aws2-sqs'
    - 'camel:aws2-s3'
    - 'camel:jsonpath'
    - 'camel:kamelet'
    - 'camel:jackson'
  template:
    from:
      uri: 'aws2-sqs:{{queueNameOrArn}}'
      parameters:
        autoCreateQueue: '{{autoCreateQueue}}'
        secretKey: '{{?secretKey}}'
        accessKey: '{{?accessKey}}'
        region: '{{region}}'
        deleteAfterRead: '{{deleteAfterRead}}'
        amazonAWSHost: '{{?amazonAWSHost}}'
        protocol: '{{?protocol}}'
        uriEndpointOverride: '{{?uriEndpointOverride}}'
        overrideEndpoint: '{{overrideEndpoint}}'
        delay: '{{delay}}'
        greedy: '{{greedy}}'
      steps:
        - choice:
            precondition: true
            when:
              - simple: '${properties:getObject:true}'
                steps:
                  - unmarshal:
                      json:
                        library: Jackson
                        unmarshalType: com.fasterxml.jackson.databind.JsonNode
                  - setProperty:
                      name: s3-event-name
                      jsonpath: $.detail.reason
                  - choice:
                      when:
                        - simple: '${exchangeProperty.s3-event-name} == "PutObject"'
                          steps:
                            - setProperty:
                                name: aws-s3-name
                                jsonpath: $.detail.object.key
                            - setProperty:
                                name: aws-s3-bucket
                                jsonpath: $.detail.bucket.name
                            - toD: >-
                                aws2-s3:${exchangeProperty.aws-s3-bucket}?accessKey={{accessKey}}&secretKey={{secretKey}}&region={{region}}&operation=getObject&keyName=${exchangeProperty.aws-s3-name}
        - to: 'kamelet:sink'

---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-s3-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik03OC43IDE4Mi4xbDQ1LjQgNS44LjMtLjcuMy03NC40LS41LS42LTQ1LjQgNS43LS4xIDY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDIyMi4zbDEwNC4xIDI1LjIuMi0uM1Y1Mi4xbC0uMi0uMi0xMDQuMSAyNS40djE0NSIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgMTgyLjFsLTQ1LjQgNS44di03NS43bDQ1LjQgNS43djY0LjIiLz48cGF0aCBkPSJNMTY5LjUgODYuOWwtNDUuNCA4LjMtNDUuNC04LjNMMTI0IDc1bDQ1LjUgMTEuOSIgZmlsbD0iIzVlMWYxOCIvPjxwYXRoIGQ9Ik0xNjkuNSAyMTMuMWwtNDUuNC04LjMtNDUuNCA4LjMgNDUuMyAxMi43IDQ1LjUtMTIuNyIgZmlsbD0iI2YyYjBhOSIvPjxwYXRoIGNsYXNzPSJzdDI4IiBkPSJNNzguNyA4Ni45bDQ1LjQtMTEuMi40LS4xVi4zbC0uNC0uMy00NS40IDIyLjd2NjQuMiIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgODYuOWwtNDUuNC0xMS4yVjBsNDUuNCAyMi43djY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDMwMGwtNDUuNC0yMi43di02NC4ybDQ1LjQgMTEuMi43LjgtLjIgNzMuNi0uNSAxLjMiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNC4xIDMwMGw0NS40LTIyLjd2LTY0LjJsLTQ1LjQgMTEuMlYzMDBNMjI4LjIgNTIuMWwyMCAxMHYxNzUuNWwtMjAgMTBWNTIuMSIvPjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS S3"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS S3 Sink"
    description: Upload data to an Amazon S3 Bucket.
    required:
      - bucketNameOrArn
      - region
    type: object
    properties:
      bucketNameOrArn:
        title: Bucket Name
        description: The S3 Bucket name or Amazon Resource Name (ARN).
        type: string
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      autoCreateBucket:
        title: Autocreate Bucket
        description: Specifies to automatically create the S3 bucket.
        type: boolean
        default: false
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the S3 client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the S3 client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in S3.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
      forcePathStyle:
        title: Force Path Style
        description: Forces path style when accessing AWS S3 buckets.
        type: boolean
        default: false
      keyName:
        title: Key Name
        description: The key name for saving an element in the bucket.
        type: string
  dependencies:
    - "camel:core"
    - "camel:aws2-s3"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          precondition: true
          when:
            - simple: '${propertiesExist:!keyName}'
              steps:
                - choice:
                    when:
                      - simple: "${header[file]}"
                        steps:
                          - setHeader:
                              name: CamelAwsS3Key
                              simple: "${header[file]}"
                      - simple: "${header[ce-file]}"
                        steps:
                          - setHeader:
                              name: CamelAwsS3Key
                              simple: "${header[ce-file]}"
                    otherwise:
                      steps:
                        - setHeader:
                            name: CamelAwsS3Key
                            simple: "${exchangeId}"
      - to:
          uri: "aws2-s3:{{bucketNameOrArn}}"
          parameters:
            secretKey: "{{?secretKey}}"
            accessKey: "{{?accessKey}}"
            region: "{{region}}"
            autoCreateBucket: "{{autoCreateBucket}}"
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}"
            uriEndpointOverride: "{{?uriEndpointOverride}}"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"
            overrideEndpoint: "{{overrideEndpoint}}"
            forcePathStyle: "{{forcePathStyle}}"
            keyName: "{{?keyName}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-s3-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik03OC43IDE4Mi4xbDQ1LjQgNS44LjMtLjcuMy03NC40LS41LS42LTQ1LjQgNS43LS4xIDY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDIyMi4zbDEwNC4xIDI1LjIuMi0uM1Y1Mi4xbC0uMi0uMi0xMDQuMSAyNS40djE0NSIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgMTgyLjFsLTQ1LjQgNS44di03NS43bDQ1LjQgNS43djY0LjIiLz48cGF0aCBkPSJNMTY5LjUgODYuOWwtNDUuNCA4LjMtNDUuNC04LjNMMTI0IDc1bDQ1LjUgMTEuOSIgZmlsbD0iIzVlMWYxOCIvPjxwYXRoIGQ9Ik0xNjkuNSAyMTMuMWwtNDUuNC04LjMtNDUuNCA4LjMgNDUuMyAxMi43IDQ1LjUtMTIuNyIgZmlsbD0iI2YyYjBhOSIvPjxwYXRoIGNsYXNzPSJzdDI4IiBkPSJNNzguNyA4Ni45bDQ1LjQtMTEuMi40LS4xVi4zbC0uNC0uMy00NS40IDIyLjd2NjQuMiIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgODYuOWwtNDUuNC0xMS4yVjBsNDUuNCAyMi43djY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDMwMGwtNDUuNC0yMi43di02NC4ybDQ1LjQgMTEuMi43LjgtLjIgNzMuNi0uNSAxLjMiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNC4xIDMwMGw0NS40LTIyLjd2LTY0LjJsLTQ1LjQgMTEuMlYzMDBNMjI4LjIgNTIuMWwyMCAxMHYxNzUuNWwtMjAgMTBWNTIuMSIvPjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS S3"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "AWS S3 Source"
    description: Receive data from an Amazon S3 Bucket.
    required:
      - bucketNameOrArn
      - region
    type: object
    properties:
      bucketNameOrArn:
        title: Bucket Name
        description: The S3 Bucket name or Amazon Resource Name (ARN).
        type: string
      deleteAfterRead:
        title: Auto-delete Objects
        description: Specifies to delete objects after consuming them.
        type: boolean
        default: true
      moveAfterRead:
        title: Move Objects After Delete
        description: Move objects from S3 bucket to a different bucket after they have been retrieved.
        type: boolean
        default: false
      destinationBucket:
        title: Destination Bucket
        description: Define the destination bucket where an object must be moved when moveAfterRead is set to true.
        type: string
      destinationBucketPrefix:
        title: Destination Bucket Prefix
        description: Define the destination bucket prefix to use when an object must be moved, and moveAfterRead is set to true.
        type: string
      destinationBucketSuffix:
        title: Destination Bucket Suffix
        description: Define the destination bucket suffix to use when an object must be moved, and moveAfterRead is set to true.
        type: string
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      autoCreateBucket:
        title: Autocreate Bucket
        description: Specifies to automatically create the S3 bucket.
        type: boolean
        default: false
      prefix:
        title: Prefix
        description: The AWS S3 bucket prefix to consider while searching.
        type: string
        example: 'folder/'
      ignoreBody:
        title: Ignore Body
        description: If true, the S3 Object body is ignored. Setting this to true overrides any behavior defined by the `includeBody` option. If false, the S3 object is put in the body.
        type: boolean
        default: false
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the S3 client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the S3 client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in S3.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
      forcePathStyle:
        title: Force Path Style
        description: Forces path style when accessing AWS S3 buckets.
        type: boolean
        default: false
      delay:
        title: Delay
        description: The number of milliseconds before the next poll of the selected bucket.
        type: integer
        default: 500
      maxMessagesPerPoll:
        title: Max Messages Per Poll
        description: Gets the maximum number of messages as a limit to poll at each polling. Gets the maximum number of messages as a limit to poll at each polling. The default value is 10. Use 0 or a negative number to set it as unlimited.
        type: integer
        default: 10
  dataTypes:
    out:
      default: binary
      headers:
        CamelAwsS3BucketName:
          title: S3 Bucket Name
          description: The bucket name which has been used to retrieve objects
          type: string
        CamelAwsS3Key:
          title: S3 Key
          description: The key under which the retrieved object is stored.
          type: string
        CamelAwsS3ContentType:
          title: Content Type
          description: The content type of the retrieved object.
          default: application/octet-stream
          type: string
        CamelAwsS3ETag:
          title: ETag Value
          description: The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864.
          type: string
      types:
        binary:
          format: "application-octet-stream"
          description: Default binary representation of the S3 object retrieved from the bucket.
          mediaType: application/octet-stream
        cloudevents:
          format: "aws2-s3:application-cloudevents"
          description: Output data type represents AWS S3 get object response as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange with respective data from the S3 bucket and its derived object.
          headers:
            CamelCloudEventID:
              title: CloudEvent ID
              description: The Camel exchange id set as event id
              type: string
            CamelCloudEventType:
              title: CloudEvent Type
              description: The event type
              default: "org.apache.camel.event.aws.s3.getObject"
              type: string
            CamelCloudEventSource:
              title: CloudEvent Source
              description: The event source. By default, the S3 bucket name with prefix "aws.s3.bucket.".
              type: string
            CamelCloudEventSubject:
              title: CloudEvent Subject
              description: The event subject. Usually the S3 key.
              type: string
            CamelCloudEventTime:
              title: CloudEvent Time
              description: The exchange creation timestamp as event time.
              type: string
  dependencies:
    - "camel:core"
    - "camel:aws2-s3"
    - "camel:kamelet"
  template:
    from:
      uri: "aws2-s3:{{bucketNameOrArn}}"
      parameters:
        autoCreateBucket: "{{autoCreateBucket}}"
        secretKey: "{{?secretKey}}"
        accessKey: "{{?accessKey}}"
        region: "{{region}}"
        ignoreBody: "{{ignoreBody}}"
        deleteAfterRead: "{{deleteAfterRead}}"
        moveAfterRead: "{{moveAfterRead}}"
        destinationBucket: "{{?destinationBucket}}"
        destinationBucketPrefix: "{{?destinationBucketPrefix}}"
        destinationBucketSuffix: "{{?destinationBucketSuffix}}"
        prefix: "{{?prefix}}"
        useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
        useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
        useSessionCredentials: "{{useSessionCredentials}}"
        uriEndpointOverride: "{{?uriEndpointOverride}}"
        profileCredentialsName: "{{?profileCredentialsName}}"
        sessionToken: "{{?sessionToken}}"
        overrideEndpoint: "{{overrideEndpoint}}"
        forcePathStyle: "{{forcePathStyle}}"
        delay: "{{delay}}"
        maxMessagesPerPoll: "{{maxMessagesPerPoll}}"
      steps:
      - to: "kamelet:sink"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-s3-streaming-upload-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik03OC43IDE4Mi4xbDQ1LjQgNS44LjMtLjcuMy03NC40LS41LS42LTQ1LjQgNS43LS4xIDY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDIyMi4zbDEwNC4xIDI1LjIuMi0uM1Y1Mi4xbC0uMi0uMi0xMDQuMSAyNS40djE0NSIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgMTgyLjFsLTQ1LjQgNS44di03NS43bDQ1LjQgNS43djY0LjIiLz48cGF0aCBkPSJNMTY5LjUgODYuOWwtNDUuNCA4LjMtNDUuNC04LjNMMTI0IDc1bDQ1LjUgMTEuOSIgZmlsbD0iIzVlMWYxOCIvPjxwYXRoIGQ9Ik0xNjkuNSAyMTMuMWwtNDUuNC04LjMtNDUuNCA4LjMgNDUuMyAxMi43IDQ1LjUtMTIuNyIgZmlsbD0iI2YyYjBhOSIvPjxwYXRoIGNsYXNzPSJzdDI4IiBkPSJNNzguNyA4Ni45bDQ1LjQtMTEuMi40LS4xVi4zbC0uNC0uMy00NS40IDIyLjd2NjQuMiIvPjxwYXRoIGNsYXNzPSJzdDI5IiBkPSJNMTY5LjUgODYuOWwtNDUuNC0xMS4yVjBsNDUuNCAyMi43djY0LjIiLz48cGF0aCBjbGFzcz0ic3QyOCIgZD0iTTEyNC4xIDMwMGwtNDUuNC0yMi43di02NC4ybDQ1LjQgMTEuMi43LjgtLjIgNzMuNi0uNSAxLjMiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNC4xIDMwMGw0NS40LTIyLjd2LTY0LjJsLTQ1LjQgMTEuMlYzMDBNMjI4LjIgNTIuMWwyMCAxMHYxNzUuNWwtMjAgMTBWNTIuMSIvPjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS S3"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS S3 Streaming upload Sink"
    description: Upload data to AWS S3 in streaming upload mode.
    required:
      - bucketNameOrArn
      - region
      - keyName
    type: object
    properties:
      bucketNameOrArn:
        title: Bucket Name
        description: The S3 Bucket name or Amazon Resource Name (ARN).
        type: string
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      autoCreateBucket:
        title: Autocreate Bucket
        description: Setting the autocreation of the S3 bucket bucketName.
        type: boolean
        default: false
      restartingPolicy:
        title: Restarting Policy
        description: The restarting policy to use in streaming upload mode. There are 2 enums and the value can be one of `override`, `lastPart`.
        type: string
        default: "lastPart"
      batchMessageNumber:
        title: Batch Message Number
        description: The number of messages composing a batch in streaming upload mode.
        type: integer
        default: 10
      batchSize:
        title: Batch Size
        description: The batch size (in bytes) in streaming upload mode.
        type: integer
        default: 1000000
      streamingUploadTimeout:
        title: Streaming Upload Timeout
        description: While streaming upload mode is true, this option set the timeout to complete upload.
        type: integer
      namingStrategy:
        title: Naming Strategy
        description: The naming strategy to use in streaming upload mode. There are 2 enums and the value can be one of progressive, random.
        type: string
        default: "progressive"
      keyName:
        title: Key Name
        description: Setting the key name for an element in the bucket through endpoint parameter. In Streaming Upload, with the default configuration, this is the base for the progressive creation of files.
        type: string
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: Set whether the S3 client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the S3 client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the S3 client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in S3.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
      forcePathStyle:
        title: Force Path Style
        description: Forces path style when accessing AWS S3 buckets.
        type: boolean
        default: false
  dependencies:
    - "camel:aws2-s3"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "aws2-s3:{{bucketNameOrArn}}"
          parameters:
            secretKey: "{{?secretKey}}"
            accessKey: "{{?accessKey}}"
            region: "{{region}}"
            autoCreateBucket: "{{autoCreateBucket}}"
            streamingUploadMode: "true"
            restartingPolicy: "{{restartingPolicy}}"
            batchMessageNumber: "{{batchMessageNumber}}"
            batchSize: "{{batchSize}}"
            namingStrategy: "{{namingStrategy}}"
            keyName: "{{keyName}}"
            streamingUploadTimeout: "{{?streamingUploadTimeout}}"
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}"
            uriEndpointOverride: "{{?uriEndpointOverride}}"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"
            overrideEndpoint: "{{overrideEndpoint}}"
            forcePathStyle: "{{forcePathStyle}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-secrets-manager-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNzUgNzUiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6dXJsKCNSZWRHcmFkaWVudCk7fS5jbHMtMntmaWxsOiNmZmY7fTwvc3R5bGU+PGxpbmVhckdyYWRpZW50IGlkPSJSZWRHcmFkaWVudCIgeDE9Ii0yMDQyLjU0IiB5MT0iMTk4NS40NyIgeDI9Ii0xOTM2LjQ3IiB5Mj0iMjA5MS41NCIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAwMSAtMTk1Mikgcm90YXRlKC05MCkiIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNiZDA4MTYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZjUyNTIiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48dGl0bGU+QVdTLVNlY3JldHMtTWFuYWdlcjwvdGl0bGU+PGcgaWQ9IlJlZmVyZW5jZSI+PHJlY3QgaWQ9IlJlZF9HcmFkaWVudCIgZGF0YS1uYW1lPSJSZWQgR3JhZGllbnQiIGNsYXNzPSJjbHMtMSIgd2lkdGg9Ijc1IiBoZWlnaHQ9Ijc1Ii8+PGcgaWQ9Ikljb25fVGVzdCIgZGF0YS1uYW1lPSJJY29uIFRlc3QiPjxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iNTQuNTIiIHk9IjQ3LjA4IiB3aWR0aD0iMiIgaGVpZ2h0PSIxNi45MSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTIzLjAxIDU1LjUzKSByb3RhdGUoLTQ1KSIvPjxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iMTkuMTMiIHk9IjEwLjc3IiB3aWR0aD0iMiIgaGVpZ2h0PSIxOC43NCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTguMzUgMjAuMTMpIHJvdGF0ZSgtNDUpIi8+PHJlY3QgY2xhc3M9ImNscy0yIiB4PSIxNS4wNSIgeT0iNTQuMDUiIHdpZHRoPSI5LjkiIGhlaWdodD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMzLjA3IDMwLjI3KSByb3RhdGUoLTQ1KSIvPjxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iNTAuMDUiIHk9IjE5LjA1IiB3aWR0aD0iOS45IiBoZWlnaHQ9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuOTMgNDQuNzYpIHJvdGF0ZSgtNDUpIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNjAuNDYsMzYuNTJhMjIuODcsMjIuODcsMCwwLDAtNC4zMS0xMi40NGwtMS42MiwxLjE4YTIwLjg2LDIwLjg2LDAsMCwxLDMuOTMsMTEuMjZoLTJ2MmgyYTIwLjcsMjAuNywwLDAsMS0zLjkzLDExLjMyTDU2LjE1LDUxYTIyLjcyLDIyLjcyLDAsMCwwLDQuMzEtMTIuNWgydi0yWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTI1LjIxLDIwLjUyQTIwLjc3LDIwLjc3LDAsMCwxLDM2LjUsMTYuNTl2MS45M2gyVjE2LjU5YTIwLjc3LDIwLjc3LDAsMCwxLDExLjI5LDMuOTNMNTEsMTguOUEyMi44MSwyMi44MSwwLDAsMCwzOC41LDE0LjU5VjEyLjUyaC0ydjIuMDdBMjIuODEsMjIuODEsMCwwLDAsMjQsMTguOVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00OS43OSw1NC41OEEyMC43NywyMC43NywwLDAsMSwzOC41LDU4LjUxdi0yaC0ydjJhMjAuNzcsMjAuNzcsMCwwLDEtMTEuMjktMy45M0wyNCw1Ni4yQTIyLjgxLDIyLjgxLDAsMCwwLDM2LjUsNjAuNTF2Mmgydi0yQTIyLjgxLDIyLjgxLDAsMCwwLDUxLDU2LjJaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMTguODUsNTFsMS42Mi0xLjE4YTIwLjcsMjAuNywwLDAsMS0zLjkzLTExLjMyaDJ2LTJoLTJhMjAuODYsMjAuODYsMCwwLDEsMy45My0xMS4yNmwtMS42Mi0xLjE4YTIyLjg3LDIyLjg3LDAsMCwwLTQuMzEsMTIuNDRoLTJ2MmgyQTIyLjcyLDIyLjcyLDAsMCwwLDE4Ljg1LDUxWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQyLjM5LDI0LjI1YTcuNSw3LjUsMCwwLDAtNC44OS0xLjczaDBjLTMuODYsMC03LDIuNzMtNyw2LjA5djQuOTFoLTJhMSwxLDAsMCwwLTEsMXYxNGExLDEsMCwwLDAsLjI5LjcxLDEsMSwwLDAsMCwuNzEuMjloMThhMSwxLDAsMCwwLDEtMXYtMTRhMSwxLDAsMCwwLS4yOS0uNywxLDEsMCwwLDAtLjcxLS4zaC0ydi00LjlBNS43MSw1LjcxLDAsMCwwLDQyLjM5LDI0LjI1Wk0zMi41LDI4LjYxYzAtMi4yNiwyLjI1LTQuMDksNS00LjA5aDBhNS41NSw1LjU1LDAsMCwxLDMuNiwxLjI1LDMuNzYsMy43NiwwLDAsMSwxLjQxLDIuODV2NC45aC0xMFptMTMsOS45MWgtM3YyaDN2MmgtM3YyaDN2M2gtMTZ2LTEyaDE2WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTM2LjUsNDIuNzZ2Mi43NmgyVjQyLjc2YTIuOTMsMi45MywwLDEsMC0yLDBabTEtMy44MkExLjA4LDEuMDgsMCwxLDEsMzYuNDMsNDAsMS4wNywxLjA3LDAsMCwxLDM3LjUsMzguOTRaIi8+PC9nPjwvZz48L3N2Zz4K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS Secrets Manager"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS Secrets Manager Sink"
    description: Create a secret in AWS Secrets Manager.
    required:
      - region
    type: object
    properties:
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: Set whether the Secrets Manager client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the Secrets Manager client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the Secrets Manager client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Secrets Manager.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  dependencies:
    - "camel:core"
    - "camel:aws-secrets-manager"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[secret-name]}"
            steps:
            - setHeader:
                name: CamelAwsSecretsManagerSecretName
                simple: "${header[secret-name]}"
          - simple: "${header[ce-secret-name]}"
            steps:
            - setHeader:
                name: CamelAwsSecretsManagerSecretName
                simple: "${header[ce-secret-name]}"
          otherwise:
            steps:
            - setHeader:
                name: CamelAwsSecretsManagerSecretName
                simple: "${exchangeId}"
      - to:
          uri: "aws-secrets-manager:kamelet"
          parameters:
            secretKey: "{{?secretKey}}"
            accessKey: "{{?accessKey}}"
            region: "{{region}}"
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}"
            operation: "createSecret"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"            
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-ses-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjI5OXB4IiB2aWV3Qm94PSIwIDAgMjU2IDI5OSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+Cgk8Zz4KCQk8cGF0aCBkPSJNNjAuNTU2LDQ3LjYwMiBMMCwxNDQuMDEgTDYwLjU1NiwyNDAuNDM0IEw2MS42MTIsMjM5LjY4MSBMNjAuODM3LDQ3LjggTDYwLjU1Niw0Ny42MDIiIGZpbGw9IiM4NzY5MjkiPjwvcGF0aD4KCQk8cGF0aCBkPSJNMTI4LjE4NywyMjMuMTA1IEw2MC41NTYsMjQwLjQzNCBMNjAuNTU2LDQ3LjYwMiBMMTI4LjE4Nyw2NC45MjcgTDEyOC4xODcsMjIzLjEwNSIgZmlsbD0iI0Q5QTc0MSI+PC9wYXRoPgoJCTxwYXRoIGQ9Ik0yNTUuOTc5LDcxLjg2OCBMMjIzLjM3OSw3Ny4yNTkgTDE0OC41MzgsMCBMMTExLjMzMSwxNi4yOTIgTDExNi4yMzksMjUuNDQ1IEw4OS45MDYsMzUuOTcxIEw4OS45MDYsMjc5LjM5OSBMMTI4LjE4NiwyOTguNTUyIEwxMjguODIzLDI5OC4wNTMgTDEyOC4yMzQsNDcuODE4IEwyMDkuMzc2LDE3MC43ODYgTDI1NS45NzksNzEuODY4IiBmaWxsPSIjODc2OTI5Ij48L3BhdGg+CgkJPHBhdGggZD0iTTE0OC41MzgsMCBMMjQ4LjIxNyw0OS44MzcgTDIwOC44LDEyMS4zNTcgTDE0OC41MzgsMCIgZmlsbD0iI0Q5QTc0MSI+PC9wYXRoPgoJCTxwYXRoIGQ9Ik0yNTUuOTc1LDcxLjg2OCBMMjU2LDIzNC41OTYgTDEyOC4xODcsMjk4LjU1MiBMMTI4LjE3LDIwLjY4MyBMMjA4LjgsMTY2Ljk3NCBMMjU1Ljk3NSw3MS44NjgiIGZpbGw9IiNEOUE3NDEiPjwvcGF0aD4KCTwvZz4KPC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS SES"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS SES Sink"
    description: Send email through the Amazon Simple Email Service (SES).
    required:
      - from
      - region
    type: object
    properties:
      from:
        title: From 
        description: From address
        type: string
        example: user@example.com
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: If true, the SES client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the SES client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the SES client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in SES.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  dependencies:
    - "camel:core"
    - "camel:aws2-ses"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[subject]}"
            steps:
            - setHeader:
                name: CamelAwsSesSubject
                simple: "${header[subject]}"
          - simple: "${header[ce-subject]}"
            steps:
            - setHeader:
                name: CamelAwsSesSubject
                simple: "${header[ce-subject]}"
          otherwise:
            steps:
            - setHeader:
                name: CamelAwsSesSubject
                simple: "${exchangeId}"
      - choice:
          when:
          - simple: "${header[to]}"
            steps:
            - setHeader:
                name: CamelAwsSesTo
                simple: "${header[to]}"
          - simple: "${header[ce-to]}"
            steps:
            - setHeader:
                name: CamelAwsSesTo
                simple: "${header[ce-to]}"
      - choice:
          when:
          - simple: "${header[reply-to-addresses]}"
            steps:
            - setHeader:
                name: CamelAwsSesReplyToAddresses
                simple: "${header[reply-to-addresses]}"
          - simple: "${header[ce-reply-to-addresses]}"
            steps:
            - setHeader:
                name: CamelAwsSesReplyToAddresses
                simple: "${header[ce-reply-to-addresses]}"
      - to:
          uri: "aws2-ses://{{from}}"
          parameters:
            secretKey: "{{?secretKey}}"
            accessKey: "{{?accessKey}}"
            region: "{{region}}"
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-sns-fifo-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnICAgdmlld0JveD0iMCAwIDI1NiAyNTciIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPg0KCTxnPg0KCQk8cGF0aCBkPSJNOTguODc1LDIzMi4wMzMgTDcyLjQ0MiwyMjQuNjI1IEw0Ny40NDEsMTk2LjExNyBMNzguNzEzLDE5NS4yNTQgTDk4Ljg3NSwyMzIuMDMzIiBmaWxsPSIjOTk1QjgwIj48L3BhdGg+DQoJCTxwYXRoIGQ9Ik0zNy43NSwyMTMuMjMzIEwyMi44NzUsMjA5LjA2NyBMOC44MTcsMTkzLjAzMyBMMjUuODk5LDE5MC4yMjQgTDM3Ljc1LDIxMy4yMzMiIGZpbGw9IiM5OTVCODAiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTAsMTkxLjAxNyBMMTUuMjA0LDE5NC4xMDggTDE3LjQxMSwxOTAuMjI2IEwxNy40MTEsNTguNTAzIEwxNS4yMDQsNTUuOTQyIEwwLDY0LjYgTDAsMTkxLjAxNyIgZmlsbD0iIzdCM0Y2NSI+PC9wYXRoPg0KCQk8cGF0aCBkPSJNNzMuOTMzLDY5LjcwOCBMMTUuMjA4LDU1Ljk0MiBMMTUuMjA4LDE5NC4xMDggTDI0LjAwNiwxOTMuMjkgTDM3Ljc1LDIxMy4yMzMgTDQ4LjM1LDE5MS4wMjggTDczLjkzMywxODguNjUgTDczLjkzMyw2OS43MDgiIGZpbGw9IiNDMTdCOUQiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTMzLjk1OCwxOTguMTMzIEw2MC4wMjEsMjAzLjM4MyBMNjEuNzM3LDE5OS4zMzggTDYxLjczNywzNy40NCBMNjAuMDIxLDMzLjc3NSBMMzMuOTU4LDQ2Ljk4MyBMMzMuOTU4LDE5OC4xMzMiIGZpbGw9IiM3QjNGNjUiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTIwOC43MzQsODEuNTE2IEw2MC4wMjEsMzMuNzc1IEw2MC4wMjEsMjAzLjM4NyBMNzcuMjQyLDIwMS4xNzEgTDk4Ljg3NSwyMzIuMDMzIEwxMTYuMDAxLDE5Ni4xODMgTDIwOC43MzQsMTg0LjI1IEwyMDguNzM0LDgxLjUxNiIgZmlsbD0iI0MxN0I5RCI+PC9wYXRoPg0KCQk8cGF0aCBkPSJNMTgxLjgzMywyNTYuNDkyIEwxNDQuMjY3LDI0NS45NjcgTDEwOC43NTgsMjA1LjQ2NyBMMTU0Ljc5MSwyMDQuOTk5IEwxODEuODMzLDI1Ni40OTIiIGZpbGw9IiM5OTVCODAiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTg5LjU5MSwyMDguOTUgTDEyNy45MjEsMjE2LjM2NyBMMTMwLjg5OCwyMTMuODAxIEwxMzAuODk4LDQuMTE3IEwxMjcuOTIxLDAgTDg5LjU5MSwxOS4xNTggTDg5LjU5MSwyMDguOTUiIGZpbGw9IiM3QjNGNjUiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTI1Niw2NC4wMzMgTDEyNy45MjUsMCBMMTI3LjkyNSwyMTYuMzY3IEwxNTAuNTIyLDIxMS44MzkgTDE4MS44MzMsMjU2LjQ5MiBMMjA4LjczNCwyMDAuMTgzIEwyMDguNzE3LDIwMC4xODEgTDI1NiwxOTAuNzA4IEwyNTYsNjQuMDMzIiBmaWxsPSIjQzE3QjlEIj48L3BhdGg+DQoJPC9nPg0KPC9zdmc+DQo="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS SNS"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS SNS FIFO Sink"
    description: Send message to an AWS SNS FIFO Topic.
    required:
      - topicNameOrArn
      - region
    type: object
    properties:
      topicNameOrArn:
        title: Topic Name
        description: The SNS Topic name or ARN.
        type: string
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      contentBasedDeduplication:
        title: Content-Based Deduplication
        description: Use content-based deduplication (should be enabled in the SQS FIFO queue first).
        type: boolean
        default: false
      autoCreateTopic:
        title: Autocreate Topic
        description: Setting the autocreation of the SNS topic. 
        type: boolean
        default: false
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: Set whether the SNS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the SNS client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the SNS client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in SNS.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
  dependencies:
  - "camel:aws2-sns"
  - "camel:core"
  - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - choice:
          when:
          - simple: "${header[subject]}"
            steps:
            - setHeader:
                name: CamelAwsSnsSubject
                simple: "${header[subject]}"
          - simple: "${header[ce-subject]}"
            steps:
            - setHeader:
                name: CamelAwsSnsSubject
                simple: "${header[ce-subject]}"
      - setProperty:
          name: contentBasedDeduplication
          constant: "{{contentBasedDeduplication}}"
      - choice:
          when:
          - simple: "${header[group]}"
            steps:
            - setProperty:
                name: CamelAwsSnsMessageGroupId
                simple: "${header[group]}"
          - simple: "${header[ce-group]}"
            steps:
            - setProperty:
                name: CamelAwsSnsMessageGroupId
                simple: "${header[ce-group]}"
          otherwise:
            steps:
            - setProperty:
                name: CamelAwsSnsMessageGroupId
                simple: "${exchangeId}"
      - choice:
          when:
          - simple: "${exchangeProperty.contentBasedDeduplication} == 'true'"
            steps:
            - to:
                uri: "aws2-sns:{{topicNameOrArn}}"
                parameters:
                  autoCreateTopic: "{{autoCreateTopic}}"
                  accessKey: "{{?accessKey}}"
                  secretKey: "{{?secretKey}}"
                  region: "{{region}}"
                  useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
                  useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
                  useSessionCredentials: "{{useSessionCredentials}}"
                  messageGroupIdStrategy: "usePropertyValue"
                  messageDeduplicationIdStrategy: "useContentBasedDeduplication"
                  profileCredentialsName: "{{?profileCredentialsName}}"
                  sessionToken: "{{?sessionToken}}"
                  uriEndpointOverride: "{{?uriEndpointOverride}}"
                  overrideEndpoint: "{{overrideEndpoint}}"
          otherwise:
            steps:
            - to:
                uri: "aws2-sns:{{topicNameOrArn}}"
                parameters:
                  autoCreateTopic: "{{autoCreateTopic}}"
                  accessKey: "{{?accessKey}}"
                  secretKey: "{{?secretKey}}"
                  region: "{{region}}"
                  useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
                  useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
                  useSessionCredentials: "{{useSessionCredentials}}"
                  messageGroupIdStrategy: "usePropertyValue"
                  messageDeduplicationIdStrategy: "useExchangeId"
                  profileCredentialsName: "{{?profileCredentialsName}}"
                  sessionToken: "{{?sessionToken}}"
                  uriEndpointOverride: "{{?uriEndpointOverride}}"
                  overrideEndpoint: "{{overrideEndpoint}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-sns-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnICAgdmlld0JveD0iMCAwIDI1NiAyNTciIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPg0KCTxnPg0KCQk8cGF0aCBkPSJNOTguODc1LDIzMi4wMzMgTDcyLjQ0MiwyMjQuNjI1IEw0Ny40NDEsMTk2LjExNyBMNzguNzEzLDE5NS4yNTQgTDk4Ljg3NSwyMzIuMDMzIiBmaWxsPSIjOTk1QjgwIj48L3BhdGg+DQoJCTxwYXRoIGQ9Ik0zNy43NSwyMTMuMjMzIEwyMi44NzUsMjA5LjA2NyBMOC44MTcsMTkzLjAzMyBMMjUuODk5LDE5MC4yMjQgTDM3Ljc1LDIxMy4yMzMiIGZpbGw9IiM5OTVCODAiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTAsMTkxLjAxNyBMMTUuMjA0LDE5NC4xMDggTDE3LjQxMSwxOTAuMjI2IEwxNy40MTEsNTguNTAzIEwxNS4yMDQsNTUuOTQyIEwwLDY0LjYgTDAsMTkxLjAxNyIgZmlsbD0iIzdCM0Y2NSI+PC9wYXRoPg0KCQk8cGF0aCBkPSJNNzMuOTMzLDY5LjcwOCBMMTUuMjA4LDU1Ljk0MiBMMTUuMjA4LDE5NC4xMDggTDI0LjAwNiwxOTMuMjkgTDM3Ljc1LDIxMy4yMzMgTDQ4LjM1LDE5MS4wMjggTDczLjkzMywxODguNjUgTDczLjkzMyw2OS43MDgiIGZpbGw9IiNDMTdCOUQiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTMzLjk1OCwxOTguMTMzIEw2MC4wMjEsMjAzLjM4MyBMNjEuNzM3LDE5OS4zMzggTDYxLjczNywzNy40NCBMNjAuMDIxLDMzLjc3NSBMMzMuOTU4LDQ2Ljk4MyBMMzMuOTU4LDE5OC4xMzMiIGZpbGw9IiM3QjNGNjUiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTIwOC43MzQsODEuNTE2IEw2MC4wMjEsMzMuNzc1IEw2MC4wMjEsMjAzLjM4NyBMNzcuMjQyLDIwMS4xNzEgTDk4Ljg3NSwyMzIuMDMzIEwxMTYuMDAxLDE5Ni4xODMgTDIwOC43MzQsMTg0LjI1IEwyMDguNzM0LDgxLjUxNiIgZmlsbD0iI0MxN0I5RCI+PC9wYXRoPg0KCQk8cGF0aCBkPSJNMTgxLjgzMywyNTYuNDkyIEwxNDQuMjY3LDI0NS45NjcgTDEwOC43NTgsMjA1LjQ2NyBMMTU0Ljc5MSwyMDQuOTk5IEwxODEuODMzLDI1Ni40OTIiIGZpbGw9IiM5OTVCODAiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTg5LjU5MSwyMDguOTUgTDEyNy45MjEsMjE2LjM2NyBMMTMwLjg5OCwyMTMuODAxIEwxMzAuODk4LDQuMTE3IEwxMjcuOTIxLDAgTDg5LjU5MSwxOS4xNTggTDg5LjU5MSwyMDguOTUiIGZpbGw9IiM3QjNGNjUiPjwvcGF0aD4NCgkJPHBhdGggZD0iTTI1Niw2NC4wMzMgTDEyNy45MjUsMCBMMTI3LjkyNSwyMTYuMzY3IEwxNTAuNTIyLDIxMS44MzkgTDE4MS44MzMsMjU2LjQ5MiBMMjA4LjczNCwyMDAuMTgzIEwyMDguNzE3LDIwMC4xODEgTDI1NiwxOTAuNzA4IEwyNTYsNjQuMDMzIiBmaWxsPSIjQzE3QjlEIj48L3BhdGg+DQoJPC9nPg0KPC9zdmc+DQo="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS SNS"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS SNS Sink"
    description: Send message to an Amazon Simple Notification Service (SNS) topic.
    required:
      - topicNameOrArn
      - region
    type: object
    properties:
      topicNameOrArn:
        title: Topic Name
        description: The SNS topic name name or Amazon Resource Name (ARN).
        type: string
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      autoCreateTopic:
        title: Autocreate Topic
        description: Setting the autocreation of the SNS topic. 
        type: boolean
        default: false
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: If true, the SNS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the SNS client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the SNS client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in SNS.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
  dependencies:
    - "camel:core"
    - "camel:aws2-sns"
    - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - choice:
          when:
          - simple: "${header[subject]}"
            steps:
            - setHeader:
                name: CamelAwsSnsSubject
                simple: "${header[subject]}"
          - simple: "${header[ce-subject]}"
            steps:
            - setHeader:
                name: CamelAwsSnsSubject
                simple: "${header[ce-subject]}"
      - to:
          uri: "aws2-sns:{{topicNameOrArn}}"
          parameters:
            autoCreateTopic: "{{autoCreateTopic}}"
            accessKey: "{{?accessKey}}"
            secretKey: "{{?secretKey}}"
            region: "{{region}}"
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}"
            uriEndpointOverride: "{{?uriEndpointOverride}}"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"
            overrideEndpoint: "{{overrideEndpoint}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-sqs-batch-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 4228 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS SQS"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS SQS Batch Sink"
    description: Send Batch message to an AWS SQS Queue.
    required:
      - queueNameOrArn
      - region
      - batchSeparator
    type: object
    properties:
      queueNameOrArn:
        title: Queue Name
        description: The SQS Queue name or ARN
        type: string
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      autoCreateQueue:
        title: Autocreate Queue
        description: Setting the autocreation of the SQS queue. 
        type: boolean
        default: false
      batchSeparator:
        title: Batch Separator
        description: The batch separator string
        type: string
        example: ","
      amazonAWSHost:
        title: AWS Host
        description: The hostname of the Amazon AWS cloud. 
        type: string
        default: amazonaws.com
      protocol:
        title: Protocol
        description: The underlying protocol used to communicate with SQS
        type: string
        example: http or https
        default: https
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: Set whether the SQS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the SQS client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the SQS client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in SQS.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false        
  dependencies:
    - "camel:aws2-sqs"
    - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - to:
          uri: "aws2-sqs:{{queueNameOrArn}}"
          parameters:
            autoCreateQueue: "{{autoCreateQueue}}"
            accessKey: "{{?accessKey}}"
            secretKey: "{{?secretKey}}"
            region: "{{region}}"
            batchSeparator: "{{batchSeparator}}"
            operation: "sendBatchMessage"
            amazonAWSHost: "{{?amazonAWSHost}}"
            protocol: "{{?protocol}}"
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}"
            uriEndpointOverride: "{{?uriEndpointOverride}}"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"
            overrideEndpoint: "{{overrideEndpoint}}"            
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-sqs-fifo-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 4228 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS SQS"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS SQS FIFO Sink"
    description: Send message to an AWS SQS FIFO Queue.
    required:
      - queueNameOrArn
      - region
    type: object
    properties:
      queueNameOrArn:
        title: Queue Name
        description: The SQS Queue name or ARN
        type: string
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      contentBasedDeduplication:
        title: Content-Based Deduplication
        description: Use content-based deduplication (should be enabled in the SQS FIFO queue first)
        type: boolean
        default: false
      autoCreateQueue:
        title: Autocreate Queue
        description: Setting the autocreation of the SQS queue. 
        type: boolean
        default: false
      amazonAWSHost:
        title: AWS Host
        description: The hostname of the Amazon AWS cloud. 
        type: string
        default: amazonaws.com
      protocol:
        title: Protocol
        description: The underlying protocol used to communicate with SQS
        type: string
        example: http or https
        default: https
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: Set whether the SQS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the SQS client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the SQS client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in SQS.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false   
  dependencies:
  - "camel:aws2-sqs"
  - "camel:core"
  - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - setProperty:
          name: contentBasedDeduplication
          constant: "{{contentBasedDeduplication}}"
      - choice:
          when:
          - simple: "${header[group]}"
            steps:
            - setProperty:
                name: CamelAwsMessageGroupId
                simple: "${header[group]}"
          - simple: "${header[ce-group]}"
            steps:
            - setProperty:
                name: CamelAwsMessageGroupId
                simple: "${header[ce-group]}"
          otherwise:
            steps:
            - setProperty:
                name: CamelAwsMessageGroupId
                simple: "${exchangeId}"
      - choice:
          when:
          - simple: "${exchangeProperty.contentBasedDeduplication} == 'true'"
            steps:
            - to:
                uri: "aws2-sqs:{{queueNameOrArn}}"
                parameters:
                  autoCreateQueue: "{{autoCreateQueue}}"
                  accessKey: "{{?accessKey}}"
                  secretKey: "{{?secretKey}}"
                  region: "{{region}}"
                  useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
                  useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
                  useSessionCredentials: "{{useSessionCredentials}}" 
                  messageGroupIdStrategy: "usePropertyValue"
                  messageDeduplicationIdStrategy: "useContentBasedDeduplication"
                  amazonAWSHost: "{{?amazonAWSHost}}"
                  protocol: "{{?protocol}}"
                  uriEndpointOverride: "{{?uriEndpointOverride}}"
                  profileCredentialsName: "{{?profileCredentialsName}}"
                  sessionToken: "{{?sessionToken}}"
                  overrideEndpoint: "{{overrideEndpoint}}"
          otherwise:
            steps:
            - to:
                uri: "aws2-sqs:{{queueNameOrArn}}"
                parameters:
                  autoCreateQueue: "{{autoCreateQueue}}"
                  accessKey: "{{?accessKey}}"
                  secretKey: "{{?secretKey}}"
                  region: "{{region}}"
                  useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
                  useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
                  useSessionCredentials: "{{useSessionCredentials}}"  
                  messageGroupIdStrategy: "usePropertyValue"
                  messageDeduplicationIdStrategy: "useExchangeId"
                  amazonAWSHost: "{{?amazonAWSHost}}"
                  protocol: "{{?protocol}}"
                  uriEndpointOverride: "{{?uriEndpointOverride}}"
                  profileCredentialsName: "{{?profileCredentialsName}}"
                  sessionToken: "{{?sessionToken}}"
                  overrideEndpoint: "{{overrideEndpoint}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-sqs-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 4228 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS SQS"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS SQS Sink"
    description: Send messages to an Amazon Simple Queue Service (SQS) queue.
    required:
      - queueNameOrArn
      - region
    type: object
    properties:
      queueNameOrArn:
        title: Queue Name
        description: The SQS Queue name or or Amazon Resource Name (ARN).
        type: string
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      autoCreateQueue:
        title: Autocreate Queue
        description: Automatically create the SQS queue. 
        type: boolean
        default: false
      amazonAWSHost:
        title: AWS Host
        description: The hostname of the Amazon AWS cloud. 
        type: string
        default: amazonaws.com
      protocol:
        title: Protocol
        description: The underlying protocol used to communicate with SQS.
        type: string
        example: http or https
        default: https
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the SQS client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the SQS client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in SQS.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false    
  dependencies:
    - "camel:aws2-sqs"
    - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - to:
          uri: "aws2-sqs:{{queueNameOrArn}}"
          parameters:
            autoCreateQueue: "{{autoCreateQueue}}"
            accessKey: "{{?accessKey}}"
            secretKey: "{{?secretKey}}"
            region: "{{region}}"
            amazonAWSHost: "{{?amazonAWSHost}}"
            protocol: "{{?protocol}}"
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}"
            uriEndpointOverride: "{{?uriEndpointOverride}}"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"
            overrideEndpoint: "{{overrideEndpoint}}"            
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-sqs-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 4228 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS SQS"
    camel.apache.org/keda.type: "aws-sqs-queue"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "AWS SQS Source"
    description: Receive data from AWS SQS.
    required:
      - queueNameOrArn
      - region
    type: object
    properties:
      queueNameOrArn:
        title: Queue Name
        description: The SQS Queue Name or ARN.
        type: string
      deleteAfterRead:
        title: Auto-delete Messages
        description: Delete messages after consuming them.
        type: boolean
        default: true
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:awsAccessKeyID
        - urn:keda:required
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:awsSecretAccessKey
        - urn:keda:required
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        x-descriptors:
        - urn:keda:metadata:awsRegion
        - urn:keda:required
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      autoCreateQueue:
        title: Autocreate Queue
        description: Setting the autocreation of the SQS queue.
        type: boolean
        default: false
      amazonAWSHost:
        title: AWS Host
        description: The hostname of the Amazon AWS cloud.
        type: string
        default: amazonaws.com
      protocol:
        title: Protocol
        description: The underlying protocol used to communicate with SQS.
        type: string
        example: http or https
        default: https
      queueURL:
        title: Queue URL
        description: The full SQS Queue URL (required if using KEDA).
        type: string
        x-descriptors:
        - urn:keda:metadata:queueURL
        - urn:keda:required
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the SQS client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the SQS client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in SQS.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
      delay:
        title: Delay
        description: The number of milliseconds before the next poll of the selected stream.
        type: integer
        default: 500
      greedy:
        title: Greedy Scheduler
        description: If greedy is enabled, then the polling will happen immediately again, if the previous run polled 1 or more messages.
        type: boolean
        default: false
      maxMessagesPerPoll:
        title: Max Messages Per Poll
        description: The maximum number of messages to return. Amazon SQS never returns more messages than this value (however, fewer messages might be returned). Valid values 1 to 10. Default 1.
        type: integer
        minimum: "1"
        maximum: "10"
        default: 1
      waitTimeSeconds:
        title: Wait Time Seconds
        description: The duration (in seconds) for which the call waits for a message to arrive in the queue before returning. If a message is available, the call returns sooner than WaitTimeSeconds. If no messages are available and the wait time expires, the call does not return a message list.
        type: integer
        minimum: "0"
      visibilityTimeout:
        title: Visibility Timeout
        description: The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request.
        type: integer
        minimum: "0"
  dataTypes:
    out:
      default: text
      headers:
        CamelAwsSqsMessageId:
          title: The SQS Message Id
          description: The Amazon SQS message ID.
          type: string
        CamelAwsSqsReceiptHandle:
          title: The SQS Message Receipt Handle
          description: The Amazon SQS message receipt handle.
          type: string
        CamelAwsSqsMD5OfBody:
          title: The SQS Message MD5 Checksum
          description: The content type of the retrieved object.
          default: application/octet-stream
          type: string
        CamelAwsSqsAttributes:
          title: The SQS Message System Attributes
          description: A map of the attributes requested in ReceiveMessage to their respective values, the Map type is Map<MessageSystemAttributeName, String>
          type: object
        CamelAwsSqsMessageAttributes:
          title: The SQS Message Attributes
          description: The Amazon SQS message attributes, the Map type is Map<String, MessageAttributeValue>
          type: object
      types:
        text:
          format: "text-plain"
          description: Default String representation of the SQS message received from the queue.
          mediaType: text/plain
        cloudevents:
          format: "aws2-sqs:application-cloudevents"
          description: Output data type represents AWS SQS receive message response as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange with respective data from the SQS message and its derived object.
          headers:
            CamelCloudEventID:
              title: CloudEvent ID
              description: The Camel exchange id set as event id.
              type: string
            CamelCloudEventType:
              title: CloudEvent Type
              description: The event type.
              default: "org.apache.camel.event.aws.sqs.receiveMessage"
              type: string
            CamelCloudEventSource:
              title: CloudEvent Source
              description: The event source. By default, the SQS Received message receipt handle with prefix "aws.sqs.queue.".
              type: string
            CamelCloudEventSubject:
              title: CloudEvent Subject
              description: The event subject. The SQS message ID.
              type: string
            CamelCloudEventTime:
              title: CloudEvent Time
              description: The exchange creation timestamp as event time.
              type: string
  dependencies:
    - "camel:core"
    - "camel:aws2-sqs"
    - "camel:kamelet"
  template:
    from:
      uri: "aws2-sqs:{{queueNameOrArn}}"
      parameters:
        autoCreateQueue: "{{autoCreateQueue}}"
        secretKey: "{{?secretKey}}"
        accessKey: "{{?accessKey}}"
        region: "{{region}}"
        deleteAfterRead: "{{deleteAfterRead}}"
        amazonAWSHost: "{{?amazonAWSHost}}"
        protocol: "{{?protocol}}"
        useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
        useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
        useSessionCredentials: "{{useSessionCredentials}}"
        uriEndpointOverride: "{{?uriEndpointOverride}}"
        profileCredentialsName: "{{?profileCredentialsName}}"
        sessionToken: "{{?sessionToken}}"
        overrideEndpoint: "{{overrideEndpoint}}"
        delay: "{{delay}}"
        greedy: "{{greedy}}"
        maxMessagesPerPoll: "{{maxMessagesPerPoll}}"
        waitTimeSeconds: "{{?waitTimeSeconds}}"
        visibilityTimeout: "{{?visibilityTimeout}}"
      steps:
      - to: "kamelet:sink"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-sts-assume-role-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjQ5MCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIHZpZXdCb3g9IjAgMCAyNTYgNDkwIiB3aWR0aD0iMjU2IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiMzYzQ5MjkiPjxwYXRoIGQ9Im0yMSAxNjUuNzUtMjEgNi44NTYgMjEuNzUgMi41MTl6Ii8+PHBhdGggZD0ibTE5Ljk1NSAyMDYuODA2IDEwOC4wNDUgNi45MDggMTA4LjA0NS02LjkwOC0xMDguMDQ1LTIxLjA1NnoiLz48cGF0aCBkPSJtMjM0LjUgMTc1LjEyNSAyMS41LTIuNTE5LTIxLjUtNS43MzF6Ii8+PC9nPjxwYXRoIGQ9Im0xNTcuMzg3IDM1Mi45MjkgNTYuNjA2IDEzLjM5Ni01Ni43NTYgMTcuMTE2eiIgZmlsbD0iI2I3Y2E5ZCIvPjxwYXRoIGQ9Im0xOS45NTUgOTIuMjIxdi0zOC4yMDJsMTA4LjA0NS01NC4wMTkuNDgyLjQwNS0uMjQ4IDQ4LjQ5Ni0uMjM0LjEwMi0uNDA1IDEuMTE3LTU5LjA5OCAyMy44NTYtLjU0MiA4NC4wMzcgMzEuNDUyLTUuMjkgMjguNTkzLTUuNzIxdjM0My4wMjhsLTMyLjM2OS0xNi4xNzd2LTQ1Ljc3MWwtMjguMzU0LTExLjMzOHYtMjE0LjY3NWwtNDcuMzIyIDQuNzM3di0zOC4xOTVsLTE5Ljk1NSAzLjk5NXYtNzIuNDA4eiIgZmlsbD0iIzRiNjEyYyIvPjxwYXRoIGQ9Im05OS40MDggMTUyLjcyNy0zMi4xMzEgNi40MjR2LTg1Ljg3MWwzMi4xMzEgMTAuMDE4eiIgZmlsbD0iIzc1OWMzZSIvPjxwYXRoIGQ9Im0xODMuOTI1IDI3Ljk1OSA1Mi4xMDYgMjYuMDZ2MzguMjAybDE5Ljk2OSA3Ljk3N3Y3Mi40MDJsLTE5Ljk2OS0zLjk4OXYzOC4xOTVsLTI1LjQ0MS0yLjUzOC0yMS44ODEtMi4xOTl2NDIuOTM5aDQ3LjMzNnYzOS4yODRsLTIxLjk5NyAxLjk3NHYzOS42MTFsLTUzLjY5MiAxMC42NzJ2NDUuNzdsNTMuNTctMTUuODk5LjEyMiA0MC4zOC01My42OTIgMjEuMjgydjQ1Ljc3MWwtMzIuMzU2IDE2LjE3N3YtMzQzLjAyOGwyOC41NzIgNS43MSAzMC41ODMgNC4wMzh2LTgyLjc4NGwtNTguMzM4LTIyLjQ5OC0uODE3LTIuNDY1di00OS4wMDN6IiBmaWxsPSIjNzU5YzNlIi8+PHBhdGggZD0ibTE2MC4zNTYgNjEuOTQxLTMyLjM1Ni0xMi45MzEtNjAuNzIzIDI0LjI3IDMyLjEzMSAxMC4wMTh6IiBmaWxsPSIjM2M0OTI5Ii8+PHBhdGggZD0ibTY3LjI3NyA3My4yOCA2MC43MjMtMjQuMjcgMTIuNzc1IDUuMTA0IDE5LjU4MSA3LjgyNyAyOC4zNTMgMTEuMzUzLTEuNTE1IDEuNTQxLTI4Ljg3NiA4Ljk5MS0xLjc0LS41MjgtMjguNTc4LTEwLjAxOC0yOC41OTIgMTAuMDE4eiIgZmlsbD0iIzNjNDkyOSIvPjxwYXRoIGQ9Im0xNTYuNTc4IDgzLjI5OCAzMi4xMzEtMTAuMDA0djg1Ljg2NGwtMzIuMTMxLTYuNDQ2eiIgZmlsbD0iIzRiNjEyYyIvPjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS STS"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "AWS STS Assume Role Action"
    description: Assume a role through STS
    required:
      - region
    type: object
    properties:
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: Set whether the STS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the STS client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the STS client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in STS.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  dependencies:
    - "camel:kamelet"
    - "camel:core"
    - "camel:aws2-sts"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[role-arn]}"
            steps:
            - setHeader:
                name: CamelAwsStsRoleArn
                simple: "${header[role-arn]}"
          - simple: "${header[ce-role-arn]}"
            steps:
            - setHeader:
                name: CamelAwsStsRoleArn
                simple: "${header[ce-role-arn]}"
      - choice:
          when:
          - simple: "${header[role-session-name]}"
            steps:
            - setHeader:
                name: CamelAwsStsRoleSessionName
                simple: "${header[role-session-name]}"
          - simple: "${header[ce-role-session-name]}"
            steps:
            - setHeader:
                name: CamelAwsStsRoleSessionName
                simple: "${header[ce-role-session-name]}"
      - to:
          uri: "aws2-sts://default"
          parameters:
            secretKey: "{{?secretKey}}"
            accessKey: "{{?accessKey}}"
            region: "{{region}}"
            operation: "assumeRole"
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"            
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-timestream-query-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 4300 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS Timestream"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "AWS Timestream Query Sink"
    description: Query an AWS Timestream Database
    required:
      - region
    type: object
    properties:
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: If true, the CloudWatch client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the Timestream client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the Timestream client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Timestream.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      uriEndpointOverride:
        title: Overwrite Endpoint URI
        description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
        type: string
      overrideEndpoint:
        title: Endpoint Overwrite
        description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
        type: boolean
        default: false
  dependencies:
    - "camel:core"
    - "camel:aws2-timestream"
    - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - choice:
          when:
          - simple: "${header[query]}"
            steps:
            - setHeader:
                name: CamelAwsTimestreamQueryString
                simple: "${header[query]}"
          - simple: "${header[ce-query]}"
            steps:
            - setHeader:
                name: CamelAwsTimestreamQueryString
                simple: "${header[ce-query]}"
      - to:
          uri: "aws2-timestream:query"
          parameters:
            accessKey: "{{?accessKey}}"
            secretKey: "{{?secretKey}}"
            region: "{{region}}"
            operation: "query"
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}"  
            uriEndpointOverride: "{{?uriEndpointOverride}}"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"
            overrideEndpoint: "{{overrideEndpoint}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: aws-translate-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTIyLjg4IDg0LjgxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMjIuODggODQuODEiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZDt9PC9zdHlsZT48Zz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTE4LjI5LDEwLjljMi4zMSwyLjMxLDMuOSw1LjM0LDQuNDEsOC43MmMwLjE5LDEuMywwLjE4LDIuNDIsMC4xOCwzLjd2MjEuMDljMCwxLjE0LDAuMDMsMi4yNy0wLjA3LDMuNDEgYy0wLjQ0LDQuNzItMy4wOCw5LjA3LTcuMDYsMTEuNjRjLTUuMDQsMy4yNy0xMC44LDIuNTItMTYuODMsMi41MmMxLjk5LDUuNDgsNiwxMC41NCwxMC4zMywxNC4zN2wtMS42MiwzLjA0bC0wLjA1LTAuMDIgYy0xMC40OS0yLjctMjEuNTUtOC45LTI4LjI5LTE3LjRjLTQuMTctMC4wNC03LjU4LDAuMDEtMTEuNzQtMC41NWMtNC41OCwyLjc4LTEwLjAzLDQuNTktMTUuNDEsNC41OSBjLTMuNDksNC4zNS03LjU1LDguMDctMTIuMTksMTEuMTJjLTUuMDEsMy4yOS0xMC42Nyw1Ljc5LTE2Ljk4LDcuNDVjLTAuMzEsMC4wOC0wLjYyLDAuMTYtMC45NCwwLjIgYy0xLjA5LDAuMTItMi4yMy0wLjI3LTMuMDEtMS4xNWMtMS4yOC0xLjQ0LTEuMTQtMy42NSwwLjMtNC45M2M0LjA4LTMuNjEsNi4zNi03LjU3LDcuOTktMTIuNjdjLTcuOTYsMC0xNC42MiwwLjg0LTIxLjEtNS42MyBjLTguMDktOC4xLTYuMDgtMjYuOTMtNS42Ny0zOC4yM2MwLjEzLTMuNjMtMC4xMi02LjAyLDEuMzMtOS44MUMzLjc1LDcuNDIsNy42NSwzLjQzLDEyLjU4LDEuNDVjNC42MS0xLjg2LDkuNjItMS40LDE0LjQ4LTEuNCBoMjkuNTVjMi4xNywwLDMuOTQtMC4wMSw2LjE2LDAuNTFjMy43NCwwLjg2LDcuMTMsMi44NSw5Ljc4LDUuNzRsMzQuMTIsMC4wMUMxMTEuMTgsNi4zMSwxMTUuMDUsNy42NSwxMTguMjksMTAuOUwxMTguMjksMTAuOXogTTk5LjkzLDQyLjc5aC04Ljk3bC0xLjI0LDQuNDZoLTguMDRjMi42OS03LjYsNS4zOS0xNS4yMSw4LjA4LTIyLjgyYzAuOTctMi43NSwyLjA3LTcuMyw1LjYtNy4zYzMuNjYsMCw0Ljg3LDQuMTcsNS44OSw3LjA1IGw4LjE4LDIzLjA2aC04LjI0TDk5LjkzLDQyLjc5TDk5LjkzLDQyLjc5eiBNOTguMjgsMzYuOTRsLTIuODItOS43MmwtMi44LDkuNzJIOTguMjhMOTguMjgsMzYuOTR6IE04My4xNSw3MS42NmwtNS44My00LjgyIGwtNy4yOCw4Ljk5bC0xMC41Ny05LjE3bC00Ljk5LDUuNjRsMTEuNDUsOS4xMWw5LjI4LTAuOEw4My4xNSw3MS42Nkw4My4xNSw3MS42NnogTTc2LjY1LDkuODZjMy40MiwxMy4zMSw3LjA3LDM2LjY5LTIuMTEsNDguNTMgYzIuMTcsMC4wMyw0LjMxLDAuMDMsNi40OCwwLjAzYzQuOTIsNi41NCwxMS4yNCwxMS4xMSwxOC42OCwxNC40NWMwLjcsMC4zMSwxLjQxLDAuNjIsMi4xMiwwLjljLTIuNTMtMy4wNi00Ljc1LTYuNTktNi4xNi0xMC4zMyBjLTAuNjUtMS43My0xLTMuMjUtMS40NC01LjAyYzIuMDQsMCw0LjA0LDAuMDIsNi4wOSwwLjA5YzQuNTMsMC4xNiw5LjMsMC4yOSwxMy4wNy0xLjgyYzEuNjMtMC45MSwyLjk0LTIuMiwzLjk3LTMuNzUgYzAuOTEtMS4zOSwxLjU1LTIuOTgsMS44My00LjY3YzAuMjEtMS4yOCwwLjE0LTIuNjksMC4xNC0zLjk5VjIyLjYzYzAtMC41NywwLjAxLTEuMDktMC4wMy0xLjY2Yy0wLjIzLTIuOTMtMS41My01LjU5LTMuNTEtNy41NyBjLTEuOTItMS45My00LjQ5LTMuMjEtNy4zMy0zLjQ5Yy0wLjczLTAuMDctMS40NS0wLjA2LTIuMTgtMC4wNkw3Ni42NSw5Ljg2TDc2LjY1LDkuODZ6IE0yMS4yMSwxMy40OWgxMy40NFY5LjdoNnYzLjc5aDEzLjQ5djYuMjIgaC0yLjc3Yy0wLjIyLDEuNzUtMC42MywzLjQ5LTEuMTksNS4yMWwwLjAxLDBjLTAuNTcsMS43NS0xLjM1LDMuNTEtMi4yOCw1LjI1Yy0xLjU4LDIuOTUtMy42Miw1Ljc4LTUuOTgsOC41IGMzLjc4LDQuNTIsOC40Niw4LjQ1LDE0LjA1LDEyLjAzbC0zLjA5LDQuODFjLTUuODYtMy43Ni0xMC44NC03LjktMTQuOTMtMTIuNjdjLTMuNjYsMy41NC03LjgxLDYuODQtMTIuMTcsOS44NWwtMy4yNS00LjcgYzQuMzEtMi45OCw4LjQtNi4yNCwxMS45Mi05LjcxYy0zLjI1LTQuNzUtNS43My0xMC4wOC03LjQ1LTE2LjIxbDUuNTEtMS41NGMxLjQxLDUuMDMsMy4zOSw5LjQ1LDUuOTMsMTMuNDEgYzEuNzMtMi4xLDMuMjMtNC4yNSw0LjQyLTYuNDZjMC43NS0xLjQsMS4zOS0yLjg2LDEuODgtNC4zNWwwLjAxLDB2MGMwLjM3LTEuMTEsMC42NS0yLjI2LDAuODQtMy40MkgyMS4yMVYxMy40OUwyMS4yMSwxMy40OXoiLz48L2c+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "AWS Translate"
    camel.apache.org/kamelet.namespace: "AWS"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "AWS Translate Action"
    description: Translate a text in a specific language.
    required:
      - region
      - sourceLanguage
      - targetLanguage
    type: object
    properties:
      accessKey:
        title: Access Key
        description: The access key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from AWS.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      region:
        title: AWS Region
        description: The AWS region to access.
        type: string
        enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "aws-cn-global", "aws-us-gov-global", "aws-iso-global", "aws-iso-b-global"]
      sourceLanguage:
        title: Source Language
        description: The source language of the translating text.
        type: string
        example: it
        enum: ["ar", "zh", "zh-TW", "cs", "da", "nl", "en", "fi", "fr", "de", "he", "hi", "id", "it", "ja", "ko", "ms", "no", "fa", "pl", "pt", "ru", "es", "sv", "tr"]
      targetLanguage:
        title: Target Language
        description: The target language of the translating text.
        type: string
        example: it
        enum: ["ar", "zh", "zh-TW", "cs", "da", "nl", "en", "fi", "fr", "de", "he", "hi", "id", "it", "ja", "ko", "ms", "no", "fa", "pl", "pt", "ru", "es", "sv", "tr"]
      useDefaultCredentialsProvider:
        title: Default Credentials Provider
        description: Set whether the Translate client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
        type: boolean
        default: false
      useProfileCredentialsProvider:
        title: Profile Credentials Provider
        description: Set whether the Translate client should expect to load credentials through a profile credentials provider.
        type: boolean
        default: false
      useSessionCredentials:
        title: Session Credentials
        description: Set whether the Translate client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Translate.
        type: boolean
        default: false
      profileCredentialsName:
        title: Profile Credentials Name
        description: If using a profile credentials provider this parameter sets the profile name.
        type: string
      sessionToken:
        title: Session Token
        description: Amazon AWS Session Token used when the user needs to assume a IAM role.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  dependencies:
    - "camel:dns"
    - "camel:kamelet"
    - "camel:aws2-translate"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "aws2-translate://translate"
          parameters:
            secretKey: "{{?secretKey}}"
            accessKey: "{{?accessKey}}"
            region: "{{region}}"
            sourceLanguage: "{{sourceLanguage}}"
            targetLanguage: "{{targetLanguage}}"
            useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
            useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
            useSessionCredentials: "{{useSessionCredentials}}"
            profileCredentialsName: "{{?profileCredentialsName}}"
            sessionToken: "{{?sessionToken}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: azure-cosmosdb-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOCAxOCI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJhIiBjeD0iLTEwNS4wMDYiIGN5PSItMTAuNDA5IiByPSI1Ljk1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLjAzNiAwIDAgMS4wMjcgMTE3LjczOSAxOS42NDQpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIuMTgzIiBzdG9wLWNvbG9yPSIjNWVhMGVmIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDA3OGQ0Ii8+PC9yYWRpYWxHcmFkaWVudD48Y2xpcFBhdGggaWQ9ImIiPjxwYXRoIGQ9Ik0xNC45NjkgNy41M2E2LjEzNyA2LjEzNyAwIDExLTcuMzk1LTQuNTQzIDYuMTM3IDYuMTM3IDAgMDE3LjM5NSA0LjU0M3oiIGZpbGw9Im5vbmUiLz48L2NsaXBQYXRoPjwvZGVmcz48cGF0aCBkPSJNMi45NTQgNS4yNjZhLjE3NS4xNzUgMCAwMS0uMTc2LS4xNzZBMi4wMTIgMi4wMTIgMCAwMC43NjkgMy4wODFhLjE3Ni4xNzYgMCAwMS0uMTc2LS4xNzUuMTc2LjE3NiAwIDAxLjE3Ni0uMTc2QTIuMDEyIDIuMDEyIDAgMDAyLjc3OC43MmEuMTc1LjE3NSAwIDAxLjE3Ni0uMTc2LjE3NS4xNzUgMCAwMS4xNzYuMTc2IDIuMDEyIDIuMDEyIDAgMDAyLjAwOSAyLjAwOS4xNzUuMTc1IDAgMDEuMTc2LjE3Ni4xNzUuMTc1IDAgMDEtLjE3Ni4xNzZBMi4wMTEgMi4wMTEgMCAwMDMuMTMgNS4wOWEuMTc3LjE3NyAwIDAxLS4xNzYuMTc2ek0xNS42MTEgMTcuNDU2YS4xNDEuMTQxIDAgMDEtLjE0MS0uMTQxIDEuNjA5IDEuNjA5IDAgMDAtMS42MDctMS42MDcuMTQxLjE0MSAwIDAxLS4xNDEtLjE0LjE0MS4xNDEgMCAwMS4xNDEtLjE0MSAxLjYwOCAxLjYwOCAwIDAwMS42MDctMS42MDcuMTQxLjE0MSAwIDAxLjE0MS0uMTQxLjE0MS4xNDEgMCAwMS4xNDEuMTQxIDEuNjA4IDEuNjA4IDAgMDAxLjYwNyAxLjYwNy4xNDEuMTQxIDAgMTEwIC4yODIgMS42MDkgMS42MDkgMCAwMC0xLjYwNyAxLjYwNy4xNDEuMTQxIDAgMDEtLjE0MS4xNHoiIGZpbGw9IiM1MGU2ZmYiLz48cGF0aCBkPSJNMTQuOTY5IDcuNTNhNi4xMzcgNi4xMzcgMCAxMS03LjM5NS00LjU0MyA2LjEzNyA2LjEzNyAwIDAxNy4zOTUgNC41NDN6IiBmaWxsPSJ1cmwoI2EpIi8+PGcgY2xpcC1wYXRoPSJ1cmwoI2IpIiBmaWxsPSIjZjJmMmYyIj48cGF0aCBkPSJNNS43MDkgMTMuMTE1YTEuNjM4IDEuNjM4IDAgMTAuMDA1LTMuMjc1IDEuMzA3IDEuMzA3IDAgMDAuMDA3LS4xNEExLjY1MSAxLjY1MSAwIDAwNC4wNiA4LjA2NEgyLjgzMmE2LjI1MSA2LjI1MSAwIDAwMS41OTUgNS4wNTF6TTE1LjA0NSA3LjgxNWMwLS4wMTUgMC0uMDMtLjAwNy0uMDQ0YTUuOTc4IDUuOTc4IDAgMDAtMS40MDYtMi44OCAxLjgyNSAxLjgyNSAwIDAwLS4yODktLjA5IDEuODA2IDEuODA2IDAgMDAtMi4zIDEuNjYzIDIgMiAwIDAwLS4yLS4wMTMgMS43MzcgMS43MzcgMCAwMC0uNTgxIDMuMzc0IDEuNDUxIDEuNDUxIDAgMDAuNTQxLjFoMi4wM2ExMy40NTMgMTMuNDUzIDAgMDAyLjIxMi0yLjExeiIvPjwvZz48cGF0aCBkPSJNMTcuMTkxIDMuODMyYy0uNjI5LTEuMDQ3LTIuMS0xLjQ1NS00LjE1NS0xLjE0OWExNC42MDYgMTQuNjA2IDAgMDAtMi4wODIuNDUyIDYuNDU2IDYuNDU2IDAgMDExLjUyOC43NjdjLjI0MS0uMDUzLjQ4My0uMTE2LjcxNS0uMTUxYTcuNDkgNy40OSAwIDAxMS4xMDMtLjA4OSAyLjE4OCAyLjE4OCAwIDAxMS45NTkuNzI1Yy4zODMuNjM4LjA2IDEuNzI5LS44ODYgM2ExNi43MjMgMTYuNzIzIDAgMDEtNC43NDkgNC4wNTFBMTYuNzU4IDE2Ljc1OCAwIDAxNC44IDEzLjdjLTEuNTY0LjIzNC0yLjY4MiAwLTMuMDY1LS42MzZzLS4wNi0xLjczLjg4Ni0yLjk5NWMuMTE3LS4xNTcuMTQ2LS4yMzQuMjc5LS4zOTJhNi4yNTIgNi4yNTIgMCAwMS4wMjYtMS42MyAxMS41NTIgMTEuNTUyIDAgMDAtMS4xNyAxLjM3MkMuNTE3IDExLjA3Ni4xODEgMTIuNTY2LjgwOSAxMy42MTNhMy4xNjUgMy4xNjUgMCAwMDIuOSAxLjI0OSA4LjQzNCA4LjQzNCAwIDAwMS4yNTEtLjEgMTcuODU1IDE3Ljg1NSAwIDAwNi4yMTktMi40QTE3LjgwOCAxNy44MDggMCAwMDE2LjI0IDguMDNjMS4yNDMtMS42NjEgMS41NzktMy4xNS45NTEtNC4xOTh6IiBmaWxsPSIjNTBlNmZmIi8+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Azure CosmosDB"
    camel.apache.org/kamelet.namespace: "Azure"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Azure CosmosDB Sink"
    description: Send Data to an Azure CosmosDB instance
    required:
      - databaseName
      - containerName
      - databaseEndpoint
    type: object
    properties:
      databaseName:
        title: Database Name
        description: The Azure Cosmos database name.
        type: string
      containerName:
        title: Container Name
        description: The Azure Cosmos container name.
        type: string
      accountKey:
        title: Account Key
        description: The Azure Cosmos account Key.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      databaseEndpoint:
        title: Database Endpoint
        description: Sets the Azure Cosmos database endpoint the component will connect to.
        type: string
      itemPartitionKey:
        title: Item Partition Key
        description: Represents a partition key value in the Azure Cosmos DB database service. A partition key identifies the partition where the item is stored in.
        type: string
      credentialType:
        title: Credential Type
        description: Determines the credential strategy to adopt.
        type: string
        enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"]
        default: "SHARED_ACCOUNT_KEY"
  types:
    in:
      mediaType: application/json
  dependencies:
    - "camel:azure-cosmosdb"
    - "camel:kamelet"
    - "camel:jackson"
    - "camel:core"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          precondition: true
          when:
            - simple: '${propertiesExist:!itemPartitionKey}'
              steps:
                - choice:   
                    when:
                      - simple: "${header[itemPartitionKey]}"
                        steps:
                          - setHeader:
                              name: CamelAzureCosmosDbItemPartitionKey
                              simple: "${header[itemPartitionKey]}"
                      - simple: "${header[ce-itemPartitionKey]}"
                        steps:
                          - setHeader:
                              name: CamelAzureCosmosDbItemPartitionKey
                              simple: "${header[ce-itemPartitionKey]}"
      - unmarshal:
          json: 
            library: Jackson
      - to:
          uri: "azure-cosmosdb:{{databaseName}}/{{containerName}}"
          parameters:
            accountKey: "{{?accountKey}}"
            databaseEndpoint: "{{databaseEndpoint}}"
            itemPartitionKey: "{{?itemPartitionKey}}"
            operation: createItem
            credentialType: "{{credentialType}}"

---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: azure-cosmosdb-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOCAxOCI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJhIiBjeD0iLTEwNS4wMDYiIGN5PSItMTAuNDA5IiByPSI1Ljk1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLjAzNiAwIDAgMS4wMjcgMTE3LjczOSAxOS42NDQpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIuMTgzIiBzdG9wLWNvbG9yPSIjNWVhMGVmIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDA3OGQ0Ii8+PC9yYWRpYWxHcmFkaWVudD48Y2xpcFBhdGggaWQ9ImIiPjxwYXRoIGQ9Ik0xNC45NjkgNy41M2E2LjEzNyA2LjEzNyAwIDExLTcuMzk1LTQuNTQzIDYuMTM3IDYuMTM3IDAgMDE3LjM5NSA0LjU0M3oiIGZpbGw9Im5vbmUiLz48L2NsaXBQYXRoPjwvZGVmcz48cGF0aCBkPSJNMi45NTQgNS4yNjZhLjE3NS4xNzUgMCAwMS0uMTc2LS4xNzZBMi4wMTIgMi4wMTIgMCAwMC43NjkgMy4wODFhLjE3Ni4xNzYgMCAwMS0uMTc2LS4xNzUuMTc2LjE3NiAwIDAxLjE3Ni0uMTc2QTIuMDEyIDIuMDEyIDAgMDAyLjc3OC43MmEuMTc1LjE3NSAwIDAxLjE3Ni0uMTc2LjE3NS4xNzUgMCAwMS4xNzYuMTc2IDIuMDEyIDIuMDEyIDAgMDAyLjAwOSAyLjAwOS4xNzUuMTc1IDAgMDEuMTc2LjE3Ni4xNzUuMTc1IDAgMDEtLjE3Ni4xNzZBMi4wMTEgMi4wMTEgMCAwMDMuMTMgNS4wOWEuMTc3LjE3NyAwIDAxLS4xNzYuMTc2ek0xNS42MTEgMTcuNDU2YS4xNDEuMTQxIDAgMDEtLjE0MS0uMTQxIDEuNjA5IDEuNjA5IDAgMDAtMS42MDctMS42MDcuMTQxLjE0MSAwIDAxLS4xNDEtLjE0LjE0MS4xNDEgMCAwMS4xNDEtLjE0MSAxLjYwOCAxLjYwOCAwIDAwMS42MDctMS42MDcuMTQxLjE0MSAwIDAxLjE0MS0uMTQxLjE0MS4xNDEgMCAwMS4xNDEuMTQxIDEuNjA4IDEuNjA4IDAgMDAxLjYwNyAxLjYwNy4xNDEuMTQxIDAgMTEwIC4yODIgMS42MDkgMS42MDkgMCAwMC0xLjYwNyAxLjYwNy4xNDEuMTQxIDAgMDEtLjE0MS4xNHoiIGZpbGw9IiM1MGU2ZmYiLz48cGF0aCBkPSJNMTQuOTY5IDcuNTNhNi4xMzcgNi4xMzcgMCAxMS03LjM5NS00LjU0MyA2LjEzNyA2LjEzNyAwIDAxNy4zOTUgNC41NDN6IiBmaWxsPSJ1cmwoI2EpIi8+PGcgY2xpcC1wYXRoPSJ1cmwoI2IpIiBmaWxsPSIjZjJmMmYyIj48cGF0aCBkPSJNNS43MDkgMTMuMTE1YTEuNjM4IDEuNjM4IDAgMTAuMDA1LTMuMjc1IDEuMzA3IDEuMzA3IDAgMDAuMDA3LS4xNEExLjY1MSAxLjY1MSAwIDAwNC4wNiA4LjA2NEgyLjgzMmE2LjI1MSA2LjI1MSAwIDAwMS41OTUgNS4wNTF6TTE1LjA0NSA3LjgxNWMwLS4wMTUgMC0uMDMtLjAwNy0uMDQ0YTUuOTc4IDUuOTc4IDAgMDAtMS40MDYtMi44OCAxLjgyNSAxLjgyNSAwIDAwLS4yODktLjA5IDEuODA2IDEuODA2IDAgMDAtMi4zIDEuNjYzIDIgMiAwIDAwLS4yLS4wMTMgMS43MzcgMS43MzcgMCAwMC0uNTgxIDMuMzc0IDEuNDUxIDEuNDUxIDAgMDAuNTQxLjFoMi4wM2ExMy40NTMgMTMuNDUzIDAgMDAyLjIxMi0yLjExeiIvPjwvZz48cGF0aCBkPSJNMTcuMTkxIDMuODMyYy0uNjI5LTEuMDQ3LTIuMS0xLjQ1NS00LjE1NS0xLjE0OWExNC42MDYgMTQuNjA2IDAgMDAtMi4wODIuNDUyIDYuNDU2IDYuNDU2IDAgMDExLjUyOC43NjdjLjI0MS0uMDUzLjQ4My0uMTE2LjcxNS0uMTUxYTcuNDkgNy40OSAwIDAxMS4xMDMtLjA4OSAyLjE4OCAyLjE4OCAwIDAxMS45NTkuNzI1Yy4zODMuNjM4LjA2IDEuNzI5LS44ODYgM2ExNi43MjMgMTYuNzIzIDAgMDEtNC43NDkgNC4wNTFBMTYuNzU4IDE2Ljc1OCAwIDAxNC44IDEzLjdjLTEuNTY0LjIzNC0yLjY4MiAwLTMuMDY1LS42MzZzLS4wNi0xLjczLjg4Ni0yLjk5NWMuMTE3LS4xNTcuMTQ2LS4yMzQuMjc5LS4zOTJhNi4yNTIgNi4yNTIgMCAwMS4wMjYtMS42MyAxMS41NTIgMTEuNTUyIDAgMDAtMS4xNyAxLjM3MkMuNTE3IDExLjA3Ni4xODEgMTIuNTY2LjgwOSAxMy42MTNhMy4xNjUgMy4xNjUgMCAwMDIuOSAxLjI0OSA4LjQzNCA4LjQzNCAwIDAwMS4yNTEtLjEgMTcuODU1IDE3Ljg1NSAwIDAwNi4yMTktMi40QTE3LjgwOCAxNy44MDggMCAwMDE2LjI0IDguMDNjMS4yNDMtMS42NjEgMS41NzktMy4xNS45NTEtNC4xOTh6IiBmaWxsPSIjNTBlNmZmIi8+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Azure CosmosDB"
    camel.apache.org/kamelet.namespace: "Azure"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Azure CosmosDB Source"
    description: Consume Changes from a CosmosDB instance.
    required:
      - databaseName
      - containerName
      - databaseEndpoint
    type: object
    properties:
      databaseName:
        title: Database Name
        description: The Azure Cosmos database name.
        type: string
      containerName:
        title: Container Name
        description: The Azure Cosmos container name.
        type: string
      accountKey:
        title: Account Key
        description: The Azure Cosmos account Key.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      leaseDatabaseName:
        title: Lease Database Name
        description: Sets the lease container which acts as a state storage and coordinates processing the change feed across multiple workers.
        type: string
      leaseContainerName:
        title: Lease Container Name
        description: Sets the lease database where the `leaseContainerName` is stored.
        type: string
      createLeaseDatabaseIfNotExists:
        title: Autocreate Lease Database
        description: Sets if the component should create Cosmos lease database for the consumer automatically in case it doesn’t exist in Cosmos account. 
        type: boolean
        default: false
      createLeaseContainerIfNotExists:
        title: Autocreate Lease Container
        description: Sets if the component should create Cosmos lease container for the consumer automatically in case it doesn’t exist in Cosmos database. 
        type: boolean
        default: false
      databaseEndpoint:
        title: Database Endpoint
        description: Sets the Azure Cosmos database endpoint the component will connect to.
        type: string
      credentialType:
        title: Credential Type
        description: Determines the credential strategy to adopt.
        type: string
        enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"]
        default: "SHARED_ACCOUNT_KEY"
  dataTypes:
    out:
      default: json
      headers:
      types:
        json:
          format: "application-json"
          description: Json mapping of Change Feed records
          mediaType: application/json
        cloudevents:
          format: "azure-cosmosdb:application-cloudevents"
          description: Data type transformer converts Azure CosmosDB Change Feed processor response to CloudEvent v1_0 data format. The data type sets Camel specific CloudEvent headers with values extracted from Azure CosmosDB Change Feed processor response.
          headers:
            CamelCloudEventID:
              title: CloudEvent ID
              description: The Camel exchange id set as event id
              type: string
            CamelCloudEventType:
              title: CloudEvent Type
              description: The event type
              default: "org.apache.camel.event.azure.cosmosdb.changes"
              type: string
            CamelCloudEventSource:
              title: CloudEvent Source
              description: The event source.
              type: string
              default: "org.apache.camel.event.azure.cosmosdb.changefeed"
            CamelCloudEventSubject:
              title: CloudEvent Subject
              description: The event subject. 
              type: string
              default: "org.apache.camel.event.azure.cosmosdb.changefeed"
            CamelCloudEventTime:
              title: CloudEvent Time
              description: The exchange creation timestamp as event time.
              type: string
  dependencies:
    - "camel:azure-cosmosdb"
    - "camel:kamelet"
    - "camel:jackson"
  template:
    from:
      uri: "azure-cosmosdb:{{databaseName}}/{{containerName}}"
      parameters:
        leaseDatabaseName: "{{?leaseDatabaseName}}"
        leaseContainerName: "{{?leaseContainerName}}"
        accountKey: "{{?accountKey}}"
        createLeaseDatabaseIfNotExists: "{{createLeaseDatabaseIfNotExists}}"
        createLeaseContainerIfNotExists: "{{createLeaseContainerIfNotExists}}"
        databaseEndpoint: "{{databaseEndpoint}}"
        credentialType: "{{credentialType}}"
      steps:
      - marshal:
          json: {}
      - to: "kamelet:sink"

---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: azure-eventhubs-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9Ii0uMDc1IC0uMTc0IDE1OC40IDE2My4xMDEiIHdpZHRoPSIyNDM5IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiMwMDZmZDQiPjxwYXRoIGQ9Im02LjIyNS4wMjZoMTQ2LjZjMS4zIDAgMy0uMiA0LjEuNS45LjYuOCAxLjUuOCAyLjR2MzEuOGMwIC45LS4xIDEuOC0uOCAyLjQtLjguOC0xLjcuOC0yLjguOGgtMTQuMWMtMS4yIDAtMi40LS4xLTMuMi0xLS43LS44LS43LTEuOS0uNy0yLjl2LTEyLjVoLTExNHYxMi44YzAgMS0uMSAyLS44IDIuOC0uOC44LTEuOC44LTIuOC44aC0xNC44Yy0xIDAtMiAwLTIuOC0uOC0uOC0uOC0uOC0xLjctLjktMi44di0yOC44YzAtMS4xLS4xLTIuMy4xLTMuNC4yLTEgMS4xLTEuOCAyLjEtMiAxLjQtLjIgMi43LS4xIDQtLjF6Ii8+PHBhdGggZD0ibTM2LjYyNSAzNy42MjdoMTkuNGMxLjIgMCAyLjYuMSAzLjQgMS4xLjcuOC43IDEuOC43IDIuOHYxNC40YzAgMS4xIDAgMi4xLS44IDMtLjguOC0xLjkuOC0zIC44aC0xNy43Yy0xLjMgMC0yLjcuMS0zLjktLjItMS4yLS41LTEuNy0xLjYtMS43LTIuOXYtMTUuMWMwLTEuMSAwLTIuMS43LTIuOS44LS45IDEuOS0xIDIuOS0xem0zOC4yIDE3LjJoMTkuOGMxIDAgMS45IDAgMi43LjdzLjkgMS42LjkgMi42djE0LjhjMCAxLjItLjQgMi4yLTEuNSAyLjgtMS4yLjUtMi44LjMtNC4xLjNoLTE3LjRjLTEuMSAwLTIuMSAwLTIuOS0uOHMtLjgtMS45LS44LTIuOXYtMTMuN2MwLTEuMS4xLTIuMS45LTIuOS42LS44IDEuNC0uOCAyLjQtLjl6bS0zNi4xIDE2aDE3LjdjMSAwIDEuOS4xIDIuNi44LjguOC44IDEuOS44IDIuOXYxNC4xYzAgMS0uMSAxLjgtLjggMi41LS44LjgtMS44LjgtMi45LjhoLTE5LjRjLTEgMC0xLjkgMC0yLjctLjdzLS45LTEuNi0xLTIuNnYtMTQuMWMwLTEuMSAwLTIuMi45LTMgMS4xLTEgMy4zLS42IDQuOC0uN3ptNzMuOSAwaDIwLjFjMSAwIDEuOS4xIDIuNi44LjkuOC44IDEuOS44IDN2MTQuMWMwIDEtLjEgMS45LS45IDIuNi0uOC44LTEuOC44LTIuOS44aC0xNy4xYy0xLjQgMC0yLjkuMS00LjItLjItMS4yLS41LTEuNy0xLjYtMS43LTIuOHYtMTQuNGMwLTEuMSAwLTIgLjgtMi45LjctLjggMS42LTEgMi41LTF6bS0zNy44IDE2LjRoMTkuOGMxIDAgMS45IDAgMi43LjdzLjkgMS43LjkgMi43djE0LjhjMCAxLjEtLjQgMi0xLjMgMi42LTEuMi42LTIuOS40LTQuMy40aC0xNy40Yy0xLjEgMC0yLjEgMC0yLjktLjhzLS44LTEuOC0uOS0yLjl2LTEzLjdjMC0xLjEgMC0yLjIuOC0yLjkuNy0uOCAxLjYtLjggMi42LS45em0tMzYuMSAxNmgxNy44YzEgMCAxLjkuMSAyLjYuOXMuNyAxLjcuNyAyLjd2MTQuMWMwIDEgMCAxLjktLjcgMi43cy0xLjcuOS0yLjcuOWgtMTkuOGMtMS4xIDAtMi4yIDAtMi45LTEtLjctLjktLjctMS45LS43LTN2LTE0LjFjMC0xLjMuNS0yLjQgMS43LTIuOSAxLjItLjQgMi43LS4yIDQtLjN6bS0zNC41IDIxLjZoMTQuNGMxLjEgMCAyLjIuMSAzIDEgLjcuOC42IDEuNy43IDIuN3YxMi43aDExNC40di0xMi40YzAtMSAwLTIgLjgtMi44LjktLjkgMS45LS45IDMuMS0uOWgxMy40YzEgMCAyLjIgMCAzIC42LjkuNyAxLjMgMS45IDEuMyAzdjMwLjVjMCAxLjEtLjEgMi0uOSAyLjctMSAxLTIuOC42LTQuMS43aC0xNDkuM2MtLjkgMC0xLjctLjEtMi4zLS43LS44LS43LS45LTEuNy0uOS0yLjd2LTMwLjhjMC0xLjIuMi0yLjMgMS4xLTMuMS41LS41IDEuNC0uNCAyLjMtLjV6Ii8+PC9nPjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Azure Eventhubs"
    camel.apache.org/kamelet.namespace: "Azure"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Azure Eventhubs Sink"
    description: Send events to Azure Event Hubs.        
    required:
      - namespaceName
      - eventhubName
    type: object
    properties:
      namespaceName:
        title: Eventhubs Namespace
        description: The Event Hubs namespace.
        type: string
      eventhubName:
        title: Eventhubs Name
        description: The Event Hub name.
        type: string
      sharedAccessName:
        title: Share Access Name
        description: The Event Hubs SAS key name.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      sharedAccessKey:
        title: Share Access Key
        description: The key for the Event Hubs SAS key name.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      credentialType:
        title: Credential Type
        description: Determines the credential strategy to adopt.
        type: string
        enum: ["CONNECTION_STRING", "AZURE_IDENTITY"]
        default: "CONNECTION_STRING"
  dependencies:
    - "camel:core"
    - "camel:azure-eventhubs"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[partition-id]}"
            steps:
            - setHeader:
                name: CamelAzureEventHubsPartitionId
                simple: "${header[partition-id]}"
          - simple: "${header[ce-partition-id]}"
            steps:
            - setHeader:
                name: CamelAzureEventHubsPartitionId
                simple: "${header[ce-partition-id]}"
      - to:
          uri: "azure-eventhubs://{{namespaceName}}/{{eventhubName}}"
          parameters:
            sharedAccessName: "{{?sharedAccessName}}"
            sharedAccessKey: "{{?sharedAccessKey}}"
            credentialType: "{{credentialType}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: azure-eventhubs-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9Ii0uMDc1IC0uMTc0IDE1OC40IDE2My4xMDEiIHdpZHRoPSIyNDM5IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiMwMDZmZDQiPjxwYXRoIGQ9Im02LjIyNS4wMjZoMTQ2LjZjMS4zIDAgMy0uMiA0LjEuNS45LjYuOCAxLjUuOCAyLjR2MzEuOGMwIC45LS4xIDEuOC0uOCAyLjQtLjguOC0xLjcuOC0yLjguOGgtMTQuMWMtMS4yIDAtMi40LS4xLTMuMi0xLS43LS44LS43LTEuOS0uNy0yLjl2LTEyLjVoLTExNHYxMi44YzAgMS0uMSAyLS44IDIuOC0uOC44LTEuOC44LTIuOC44aC0xNC44Yy0xIDAtMiAwLTIuOC0uOC0uOC0uOC0uOC0xLjctLjktMi44di0yOC44YzAtMS4xLS4xLTIuMy4xLTMuNC4yLTEgMS4xLTEuOCAyLjEtMiAxLjQtLjIgMi43LS4xIDQtLjF6Ii8+PHBhdGggZD0ibTM2LjYyNSAzNy42MjdoMTkuNGMxLjIgMCAyLjYuMSAzLjQgMS4xLjcuOC43IDEuOC43IDIuOHYxNC40YzAgMS4xIDAgMi4xLS44IDMtLjguOC0xLjkuOC0zIC44aC0xNy43Yy0xLjMgMC0yLjcuMS0zLjktLjItMS4yLS41LTEuNy0xLjYtMS43LTIuOXYtMTUuMWMwLTEuMSAwLTIuMS43LTIuOS44LS45IDEuOS0xIDIuOS0xem0zOC4yIDE3LjJoMTkuOGMxIDAgMS45IDAgMi43LjdzLjkgMS42LjkgMi42djE0LjhjMCAxLjItLjQgMi4yLTEuNSAyLjgtMS4yLjUtMi44LjMtNC4xLjNoLTE3LjRjLTEuMSAwLTIuMSAwLTIuOS0uOHMtLjgtMS45LS44LTIuOXYtMTMuN2MwLTEuMS4xLTIuMS45LTIuOS42LS44IDEuNC0uOCAyLjQtLjl6bS0zNi4xIDE2aDE3LjdjMSAwIDEuOS4xIDIuNi44LjguOC44IDEuOS44IDIuOXYxNC4xYzAgMS0uMSAxLjgtLjggMi41LS44LjgtMS44LjgtMi45LjhoLTE5LjRjLTEgMC0xLjkgMC0yLjctLjdzLS45LTEuNi0xLTIuNnYtMTQuMWMwLTEuMSAwLTIuMi45LTMgMS4xLTEgMy4zLS42IDQuOC0uN3ptNzMuOSAwaDIwLjFjMSAwIDEuOS4xIDIuNi44LjkuOC44IDEuOS44IDN2MTQuMWMwIDEtLjEgMS45LS45IDIuNi0uOC44LTEuOC44LTIuOS44aC0xNy4xYy0xLjQgMC0yLjkuMS00LjItLjItMS4yLS41LTEuNy0xLjYtMS43LTIuOHYtMTQuNGMwLTEuMSAwLTIgLjgtMi45LjctLjggMS42LTEgMi41LTF6bS0zNy44IDE2LjRoMTkuOGMxIDAgMS45IDAgMi43LjdzLjkgMS43LjkgMi43djE0LjhjMCAxLjEtLjQgMi0xLjMgMi42LTEuMi42LTIuOS40LTQuMy40aC0xNy40Yy0xLjEgMC0yLjEgMC0yLjktLjhzLS44LTEuOC0uOS0yLjl2LTEzLjdjMC0xLjEgMC0yLjIuOC0yLjkuNy0uOCAxLjYtLjggMi42LS45em0tMzYuMSAxNmgxNy44YzEgMCAxLjkuMSAyLjYuOXMuNyAxLjcuNyAyLjd2MTQuMWMwIDEgMCAxLjktLjcgMi43cy0xLjcuOS0yLjcuOWgtMTkuOGMtMS4xIDAtMi4yIDAtMi45LTEtLjctLjktLjctMS45LS43LTN2LTE0LjFjMC0xLjMuNS0yLjQgMS43LTIuOSAxLjItLjQgMi43LS4yIDQtLjN6bS0zNC41IDIxLjZoMTQuNGMxLjEgMCAyLjIuMSAzIDEgLjcuOC42IDEuNy43IDIuN3YxMi43aDExNC40di0xMi40YzAtMSAwLTIgLjgtMi44LjktLjkgMS45LS45IDMuMS0uOWgxMy40YzEgMCAyLjIgMCAzIC42LjkuNyAxLjMgMS45IDEuMyAzdjMwLjVjMCAxLjEtLjEgMi0uOSAyLjctMSAxLTIuOC42LTQuMS43aC0xNDkuM2MtLjkgMC0xLjctLjEtMi4zLS43LS44LS43LS45LTEuNy0uOS0yLjd2LTMwLjhjMC0xLjIuMi0yLjMgMS4xLTMuMS41LS41IDEuNC0uNCAyLjMtLjV6Ii8+PC9nPjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Azure Eventhubs"
    camel.apache.org/kamelet.namespace: "Azure"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Azure Eventhubs Source"
    description: Receive events from Azure Event Hubs.
    required:
      - namespaceName
      - eventhubName
      - blobAccountName
      - blobAccessKey
      - blobContainerName
    type: object
    properties:
      namespaceName:
        title: Eventhubs Namespace
        description: The Event Hubs namespace.
        type: string
      eventhubName:
        title: Eventhubs Name
        description: The Event Hub name.
        type: string
      sharedAccessName:
        title: Share Access Name
        description: The Event Hubs SAS key name.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      sharedAccessKey:
        title: Share Access Key
        description: The key for the Event Hubs SAS key name.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      blobAccountName:
        title: Azure Storage Blob Account Name
        description: The name of the Storage Blob account.
        type: string
      blobContainerName:
        title: Azure Storage Blob Container Name
        description: The name of the Storage Blob container.
        type: string
      blobAccessKey:
        title: Azure Storage Blob Access Key
        description: The key for the Azure Storage Blob service that is associated with the Storage Blob account name.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      credentialType:
        title: Credential Type
        description: Determines the credential strategy to adopt.
        type: string
        enum: ["CONNECTION_STRING", "AZURE_IDENTITY"]
        default: "CONNECTION_STRING"
  dataTypes:
    out:
      default: binary
      headers:
        CamelAzureEventHubsPartitionId:
          title: Azure Storage Event Hubs Partiton Id
          description: It sets the partition id of the Event Hub.
          type: string
        CamelAzureEventHubsOffset :
          title: Azure Storage Event Hubs Event Offset
          description: It sets the offset of the event when it was received from the associated Event Hub partition. This is only present on a received EventData.
          type: string
        CamelAzureEventHubsEnqueuedTime:
          title: Azure Event Hubs Event Enqueued Time
          description: It sets the instant, in UTC, of when the event was enqueued in the Event Hub partition. This is only present on a received EventData.
          type: java.time.Instant
        CamelAzureEventHubsSequenceNumber:
          title: Azure Event Hubs Event Sequence Number
          description: It sets the sequence number assigned to the event when it was enqueued in the associated Event Hub partition. This is unique for every message received in the Event Hub partition. This is only present on a received EventData.
          type: long
        CamelAzureEventHubsMetadata:
          title: Azure Event Hubs Event Metadata
          description: The set of free-form event properties which may be used for passing metadata associated with the event with the event body during Event Hubs operations.
          type: object
        CamelMessageTimestamp:
          title: Azure Event Hubs Message Timestamp
          description: The timestamp of the message.
          type: long
        CamelAzureEventHubsCheckpointUpdatedBy:
          title: Azure Event Hubs Checkpoint Updated By
          description: It sets the reason for the checkpoint to have been updated. This is only present on a received EventData.
          type: string
      types:
        binary:
          format: "application-octet-stream"
          description: Default binary representation of the Azure Event Hubs Event retrieved.
          mediaType: application/octet-stream
        cloudevents:
          format: "azure-eventhubs:application-cloudevents"
          description: Data type transformer converts Azure Eventhubs consumer response to CloudEvent v1_0 data format. The data type sets
          headers:
            CamelCloudEventID:
              title: CloudEvent ID
              description: The Camel exchange id set as event id
              type: string
            CamelCloudEventType:
              title: CloudEvent Type
              description: The event type
              default: "org.apache.camel.event.azure.eventhubs.consume"
              type: string
            CamelCloudEventSource:
              title: CloudEvent Source
              description: The event source. By default, the Partition Id with prefix "azure.eventhubs.".
              type: string
            CamelCloudEventSubject:
              title: CloudEvent Subject
              description: The event subject. The Azure Event Hubs Event Sequence Number.
              type: string
            CamelCloudEventTime:
              title: CloudEvent Time
              description: The exchange creation timestamp as event time.
              type: string
  dependencies:
  - "camel:azure-eventhubs"
  - "camel:kamelet"
  - "camel:jackson"
  template:
    from:
      uri: 'azure-eventhubs://{{namespaceName}}/{{eventhubName}}'
      parameters:
        sharedAccessName: "{{?sharedAccessName}}"
        sharedAccessKey: "{{?sharedAccessKey}}"
        blobAccountName: "{{blobAccountName}}"
        blobAccessKey: "{{blobAccessKey}}"
        blobContainerName: "{{blobContainerName}}"
        credentialType: "{{credentialType}}"
      steps:
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: azure-functions-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjE4LjI0IDIxLjQ2IDY0IDY0IiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiPjxwYXRoIGQ9Ik04MS44MzcgNTMuODVjLjU4NS0uNTg1LjQ4Ny0xLjcgMC0yLjMwN2wtMy4wODctMy4wODctMTMuOC0xMy4zODZjLS41ODUtLjU4NS0xLjQ5NS0uNTg1LTIuMiAwLS41ODUuNTg1LS44MTIgMS43IDAgMi4zMDdsMTQuNSAxNC4xOThjLjU4NS41ODUuNTg1IDEuNyAwIDIuMzA3TDYyLjQ0IDY4LjU2OGMtLjU4NS41ODUtLjU4NSAxLjcgMCAyLjMwNy41ODUuNTg1IDEuNy40ODcgMi4yIDBsMTMuOC0xMy42OHptLTYzLjE5NCAwYy0uNTg1LS41ODUtLjQ4Ny0xLjcgMC0yLjMwN2wzLjA4Ny0zLjA4NyAxMy44LTEzLjM4NmMuNTg1LS41ODUgMS40OTUtLjU4NSAyLjIgMCAuNTg1LjU4NS44MTIgMS43IDAgMi4zMDdsLTE0LjIgMTQuMmMtLjU4NS41ODUtLjU4NSAxLjcgMCAyLjMwN2wxNC41IDE0LjY4NmMuNTg1LjU4NS41ODUgMS43IDAgMi4zMDctLjU4NS41ODUtMS43LjQ4Ny0yLjIgMEwyMS43MyA1Ny40eiIgZmlsbD0iIzM5OTljNiIvPjxwYXRoIGQ9Ik01Mi44MjMgNDMuODc1TDY1LjgyIDIzLjk2SDQ2LjMyNUwzNS44MyA1My41NmwxMi44LjA5Ny0xMC4wMDcgMjkuMzA3TDY2LjI0IDQzLjg3OHoiIGZpbGw9IiNmY2QxMTYiLz48cGF0aCBkPSJNNjYuMjQyIDQzLjg3NWgtMTMuNDJMNjUuODIgMjMuOTZINTUuNjE3TDQ0LjgzIDQ4LjU1NGwxMi44LjA5Ny0xOS4wMDcgMzQuM3oiIG9wYWNpdHk9Ii4zIiBmaWxsPSIjZmY4YzAwIi8+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Azure Functions"
    camel.apache.org/kamelet.namespace: "Azure"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Azure Function Sink"
    description: Forward data to an Azure Function.
    required:
    - url
    type: object
    properties:
      url:
        title: URL
        description: The Azure Functions URL you want to send the data to.
        type: string
        example: "https://azure-function-demo-12234.azurewebsites.net/api/httpexample"
        pattern: "^(https)://.*"
      method:
        title: Method
        description: The HTTP method to use.
        type: string
        default: POST
        enum: ["GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS", "TRACE", "PATCH"]
      key:
        title: Key
        description: A function-specific API key is required, if the authLevel of the function is FUNCTION or master key if the authLevel is ADMIN.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  dependencies:
  - "camel:vertx-http"
  - "camel:kamelet"
  - "camel:core"
  template:
    from:
      uri: kamelet:source
      steps:
      - removeHeader:
          name: CamelHttpUri
      - setHeader:
          name: CamelHttpMethod
          constant: "{{method}}"
      - to: "vertx-http:{{url}}?code={{?key}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: azure-servicebus-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODEgODIiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNMS4zMzMgMEMuNTMzIDAgMCAuNTMzIDAgMS4zMzN2MTZjMCAuOC41MzMgMS4zMzMgMS4zMzMgMS4zMzNoOGMuOCAwIDEuMzMzLS41MzMgMS4zMzMtMS4zMzN2LTYuNjY2aDU4LjY2N3Y2LjY2N2MwIC44LjUzMyAxLjMzMyAxLjYgMS4zMzNoNy43MzNjLjggMCAxLjMzMy0uNTMzIDEuMzMzLTEuMzMzdi04LThDODAgLjUzMyA3OS40NjcgMCA3OC42NjcgMGgwSDEuMzMzem03Ny4zMzQgODBjLjggMCAxLjMzMy0uNTMzIDEuMzMzLTEuMzMzVjYyLjkzNGMwLS44LS41MzMtMS4zMzMtMS4zMzMtMS4zMzNoLTcuNzMzYy0uOCAwLTEuMzMzLjUzMy0xLjMzMyAxLjMzM3Y2LjRIMTAuNjY3di02LjY2N2MwLS44LS41MzMtMS4zMzMtMS42LTEuMzMzSDEuMzMzYy0uOCAwLTEuMzMzLjUzMy0xLjMzMyAxLjZ2MTUuNzMzQzAgNzkuNDY3LjUzMyA4MCAxLjMzMyA4MGg3Ny4zMzR6IiBmaWxsPSIjMDA3MmM2IiBzdHJva2U9Im5vbmUiLz48cGF0aCBkPSJNMjkuNTE5IDM2LjQ0N2wzLjQ1Mi0zLjQ1MiAyLjU1NiAyLjU1Ni0zLjQ1MiAzLjQ1MXptNS4wMDctNS4wMDhsMy40NTYtMy40NTYgMi41NiAyLjU2TDM3LjA4NiAzNHptNy41Ny0yLjQ2M2wtMi41Ni0yLjU0NCAzLjQyNC0zLjQyNCAyLjU2IDIuNTQ0ek0zOS41MzUgNTIuNWwyLjU2MS0yLjU2IDMuNDI0IDMuNDI2LTIuNTYxIDIuNTZ6bS0xLjU1MS0xLjU3MmwtMy40NTYtMy40NTYgMi41Ni0yLjU0NCAzLjQ1NiAzLjQ1NnptLTUuMDA4LTUuMDA4bC0zLjQ1Ni0zLjQ1NiAyLjU2LTIuNTQ0IDMuNDQgMy40NHoiIHN0cm9rZT0ibm9uZSIgZmlsbD0iI2I4ZDQzMiIvPjxwYXRoIGQ9Ik01Ny44MSAyNC4zOTVhNC40NCA0LjQ0IDAgMCAxLTMuMTU4IDEuMzA5IDQuNDMgNC40MyAwIDAgMS0zLjE1OC0xLjMwOWwtNi4wNTMtNi4wNTN2MTIuMzA2aDE4LjQyNFYxOC4zNDJsLTYuMDU0IDYuMDUzem0tMy4xNjEuNDA5YTMuNTQgMy41NCAwIDAgMCAyLjUyMy0xLjA0NWw2LjY5LTYuNjl2LS4zNTVINDUuNDM4di4zNTVsNi42OSA2LjY5YTMuNTQgMy41NCAwIDAgMCAyLjUyMiAxLjA0NXptMy4xNjEgMzEuMTVhNC40NCA0LjQ0IDAgMCAxLTMuMTU4IDEuMzA5IDQuNDMgNC40MyAwIDAgMS0zLjE1OC0xLjMwOWwtNi4wNTMtNi4wNTN2MTIuMzA2aDE4LjQyNFY0OS45MDFsLTYuMDU0IDYuMDUzem0tMy4xNjEuNDFhMy41NCAzLjU0IDAgMCAwIDIuNTIzLTEuMDQ1bDYuNjktNi42ODl2LS4zNTVINDUuNDM4di4zNTVsNi42OSA2LjY4OWEzLjU0IDMuNTQgMCAwIDAgMi41MjIgMS4wNDV6TTE5LjcxOCA0MC41OTljLTEuMzQ0IDEuMzQ0LTMuMTMzIDIuMDg1LTUuMDM1IDIuMDg1cy0zLjY5LS43NDEtNS4wMzUtMi4wODVMMCAzMC45NDl2MTkuNjEzaDI5LjM2NlYzMC45NDlsLTkuNjQ4IDkuNjV6bS01LjAzNS42NTJhNS42NSA1LjY1IDAgMCAwIDQuMDIyLTEuNjY2bDEwLjY2MS0xMC42NjF2LS41NjVIMHYuNTY2bDEwLjY2MSAxMC42NjFhNS42NiA1LjY2IDAgMCAwIDQuMDIyIDEuNjY0eiIgc3Ryb2tlPSJub25lIiBmaWxsPSIjNTliNGQ5Ii8+PC9zeW1ib2w+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Azure Servicebus"
    camel.apache.org/kamelet.namespace: "Azure"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Azure Servicebus Sink"
    description: Send Messages to Azure Servicebus.
    required:
      - topicOrQueueName
      - connectionString
    type: object
    properties:
      topicOrQueueName:
        title: Topic Or Queue Name
        description: Topic Or Queue Name for the Azure Servicebus instance
        type: string
      connectionString:
        title: Connection String
        description: Connection String for Azure Servicebus instance
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      serviceBusType:
        title: Servicebus Type
        description: The service bus type of connection to execute. Queue is for typical queue option and topic for subscription based model.
        type: string
        default: queue
        enum: ["queue", "topic"]
      credentialType:
        title: Credential Type
        description: Determines the credential strategy to adopt.
        type: string
        enum: ["AZURE_IDENTITY", "CONNECTION_STRING", "TOKEN_CREDENTIAL"]
        default: "CONNECTION_STRING"
  types:
    in:
      mediaType: application/octet-stream
  dependencies:
    - "camel:azure-servicebus"
    - "camel:kamelet"
    - "camel:core"
  template:
    from:
      uri: kamelet:source
      steps:
      - to:
          uri: "azure-servicebus:{{topicOrQueueName}}"
          parameters:
            connectionString: "{{connectionString}}"
            serviceBusType: "{{serviceBusType}}"
            producerOperation: "sendMessages"
            credentialType: "{{credentialType}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: azure-servicebus-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODEgODIiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNMS4zMzMgMEMuNTMzIDAgMCAuNTMzIDAgMS4zMzN2MTZjMCAuOC41MzMgMS4zMzMgMS4zMzMgMS4zMzNoOGMuOCAwIDEuMzMzLS41MzMgMS4zMzMtMS4zMzN2LTYuNjY2aDU4LjY2N3Y2LjY2N2MwIC44LjUzMyAxLjMzMyAxLjYgMS4zMzNoNy43MzNjLjggMCAxLjMzMy0uNTMzIDEuMzMzLTEuMzMzdi04LThDODAgLjUzMyA3OS40NjcgMCA3OC42NjcgMGgwSDEuMzMzem03Ny4zMzQgODBjLjggMCAxLjMzMy0uNTMzIDEuMzMzLTEuMzMzVjYyLjkzNGMwLS44LS41MzMtMS4zMzMtMS4zMzMtMS4zMzNoLTcuNzMzYy0uOCAwLTEuMzMzLjUzMy0xLjMzMyAxLjMzM3Y2LjRIMTAuNjY3di02LjY2N2MwLS44LS41MzMtMS4zMzMtMS42LTEuMzMzSDEuMzMzYy0uOCAwLTEuMzMzLjUzMy0xLjMzMyAxLjZ2MTUuNzMzQzAgNzkuNDY3LjUzMyA4MCAxLjMzMyA4MGg3Ny4zMzR6IiBmaWxsPSIjMDA3MmM2IiBzdHJva2U9Im5vbmUiLz48cGF0aCBkPSJNMjkuNTE5IDM2LjQ0N2wzLjQ1Mi0zLjQ1MiAyLjU1NiAyLjU1Ni0zLjQ1MiAzLjQ1MXptNS4wMDctNS4wMDhsMy40NTYtMy40NTYgMi41NiAyLjU2TDM3LjA4NiAzNHptNy41Ny0yLjQ2M2wtMi41Ni0yLjU0NCAzLjQyNC0zLjQyNCAyLjU2IDIuNTQ0ek0zOS41MzUgNTIuNWwyLjU2MS0yLjU2IDMuNDI0IDMuNDI2LTIuNTYxIDIuNTZ6bS0xLjU1MS0xLjU3MmwtMy40NTYtMy40NTYgMi41Ni0yLjU0NCAzLjQ1NiAzLjQ1NnptLTUuMDA4LTUuMDA4bC0zLjQ1Ni0zLjQ1NiAyLjU2LTIuNTQ0IDMuNDQgMy40NHoiIHN0cm9rZT0ibm9uZSIgZmlsbD0iI2I4ZDQzMiIvPjxwYXRoIGQ9Ik01Ny44MSAyNC4zOTVhNC40NCA0LjQ0IDAgMCAxLTMuMTU4IDEuMzA5IDQuNDMgNC40MyAwIDAgMS0zLjE1OC0xLjMwOWwtNi4wNTMtNi4wNTN2MTIuMzA2aDE4LjQyNFYxOC4zNDJsLTYuMDU0IDYuMDUzem0tMy4xNjEuNDA5YTMuNTQgMy41NCAwIDAgMCAyLjUyMy0xLjA0NWw2LjY5LTYuNjl2LS4zNTVINDUuNDM4di4zNTVsNi42OSA2LjY5YTMuNTQgMy41NCAwIDAgMCAyLjUyMiAxLjA0NXptMy4xNjEgMzEuMTVhNC40NCA0LjQ0IDAgMCAxLTMuMTU4IDEuMzA5IDQuNDMgNC40MyAwIDAgMS0zLjE1OC0xLjMwOWwtNi4wNTMtNi4wNTN2MTIuMzA2aDE4LjQyNFY0OS45MDFsLTYuMDU0IDYuMDUzem0tMy4xNjEuNDFhMy41NCAzLjU0IDAgMCAwIDIuNTIzLTEuMDQ1bDYuNjktNi42ODl2LS4zNTVINDUuNDM4di4zNTVsNi42OSA2LjY4OWEzLjU0IDMuNTQgMCAwIDAgMi41MjIgMS4wNDV6TTE5LjcxOCA0MC41OTljLTEuMzQ0IDEuMzQ0LTMuMTMzIDIuMDg1LTUuMDM1IDIuMDg1cy0zLjY5LS43NDEtNS4wMzUtMi4wODVMMCAzMC45NDl2MTkuNjEzaDI5LjM2NlYzMC45NDlsLTkuNjQ4IDkuNjV6bS01LjAzNS42NTJhNS42NSA1LjY1IDAgMCAwIDQuMDIyLTEuNjY2bDEwLjY2MS0xMC42NjF2LS41NjVIMHYuNTY2bDEwLjY2MSAxMC42NjFhNS42NiA1LjY2IDAgMCAwIDQuMDIyIDEuNjY0eiIgc3Ryb2tlPSJub25lIiBmaWxsPSIjNTliNGQ5Ii8+PC9zeW1ib2w+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Azure Servicebus"
    camel.apache.org/kamelet.namespace: "Azure"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Azure Servicebus Source"
    description: Consume Messages from Azure Servicebus.
    required:
      - topicOrQueueName
      - connectionString
    type: object
    properties:
      topicOrQueueName:
        title: Topic Or Queue Name
        description: Topic Or Queue Name for the Azure Servicebus instance
        type: string
      connectionString:
        title: Connection String
        description: Connection String for Azure Servicebus instance
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      serviceBusReceiveMode:
        title: Servicebus Receive Mode
        description: Sets the receive mode for the receiver
        type: string
        default: PEEK_LOCK
        enum: ["PEEK_LOCK", "RECEIVE_AND_DELETE"]
      subscriptionName:
        title: Subscription Name
        description: Sets the name of the subscription in the topic to listen to. This parameter is mandatory in case of topic.
        type: string
      serviceBusType:
        title: Servicebus Type
        description: The service bus type of connection to execute. Queue is for typical queue option and topic for subscription based model.
        type: string
        default: queue
        enum: ["queue", "topic"]
      credentialType:
        title: Credential Type
        description: Determines the credential strategy to adopt.
        type: string
        enum: ["AZURE_IDENTITY", "CONNECTION_STRING", "TOKEN_CREDENTIAL"]
        default: "CONNECTION_STRING"
  types:
    out:
      mediaType: application/octet-stream
  dependencies:
    - "camel:azure-servicebus"
    - "camel:kamelet"
    - "camel:core"
  template:
    from:
      uri: "azure-servicebus:{{topicOrQueueName}}"
      parameters:
        connectionString: "{{connectionString}}"
        serviceBusReceiveMode: "{{serviceBusReceiveMode}}"
        subscriptionName: "{{?subscriptionName}}"
        serviceBusType: "{{serviceBusType}}"
        credentialType: "{{credentialType}}"
      steps:
      - setBody:
          simple: "${body.toBytes()}"
      - to: "kamelet:sink"

---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: azure-storage-blob-append-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny41NTggMHptLjIzNCA1Ny45NjRjMCAzLjM1My0yLjgwNSA2LjIyNy02LjA3OCA2LjIyN0gyOC41MmMtMy4yNzMgMC02LjA3OC0yLjg3NC02LjA3OC02LjIyN1YyMi4yNzZjMC0zLjM1MyAyLjgwNS02LjIyOCA2LjA3OC02LjIyOGgyOS45MjJsOS4zNTEgOS41ODF2MzIuMzM1ek00MS42MSA0Ni40NjdjMC0uNDc5LS4yMzQtLjcxOC0uMjM0LS45NThzLS4yMzQtLjQ3OS0uNDY3LS43MTgtLjIzNC0uMjQtLjQ2OC0uMjRoLS43MDFjLS40NjggMC0uNzAyIDAtLjkzNS4yNHMtLjQ2OC40NzktLjcwMS45NTgtLjIzNC45NTgtLjIzNCAxLjQzN3Y0LjU1MWMwIC43MTkuMjM0IDEuMTk3LjQ2OCAxLjQzNy4yMzQuNDc5LjQ2OC43MTkuNzAxLjcxOS4yMzQuMjQuNDY4LjI0LjkzNS4yNC4yMzQgMCAuNDY4IDAgLjcwMS0uMjRhLjUxLjUxIDAgMCAwIC40NjgtLjQ3OWMuMjM0LS4yNC4yMzQtLjQ3OS40NjctLjcxOCAwLS4yNC4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE5LjIzMy0xLjE5OHYtMy4xMTRjLS40NjctLjI0LS40NjctLjQ3OS0uNDY3LS45NTh6bTEwLjUyLTE4LjY4M2MwLS40NzktLjIzNC0uNzE4LS4yMzQtLjk1OHMtLjIzNC0uNDc5LS40NjgtLjcxOS0uMjM0LS4yNC0uNDY4LS4yNGgtLjcwMWMtLjQ2NyAwLS43MDEgMC0uOTM1LjI0cy0uNDY4LjQ3OS0uNzAyLjk1OC0uMjMzLjk1OC0uMjMzIDEuNDM3djQuNTUxYzAgLjcxOS4yMzMgMS4xOTguNDY3IDEuNDM3LjIzNC40NzkuNDY4LjcxOS43MDEuNzE5LjIzNC4yNC40NjcuMjQuOTM1LjI0LjIzNCAwIC40NjcgMCAuNzAxLS4yNGEuNTEuNTEgMCAwIDAgLjQ2OC0uNDc5Yy4yMzQtLjI0LjIzNC0uNDc5LjQ2OC0uNzE5IDAtLjIzOS4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE4LjIzNC0xLjE5OHYtMy4xMTRjLS4yMzQgMC0uMjM0LS40NzktLjQ2Ny0uOTU4em00LjY3NS04LjM4M0gyOC41MTljLTEuNjM2IDAtMi44MDUgMS4xOTgtMi44MDUgMi44NzR2MzUuNjg5YzAgMS42NzcgMS4xNjkgMi44NzQgMi44MDUgMi44NzRoMzMuMTk1YTIuODggMi44OCAwIDAgMCAyLjgwNS0yLjg3NFYyNy4zMDVoLTcuNDh2LTcuOTA0ek0zNiAyNi41ODd2LS40NzlsLjIzNC0uMjQgMi44MDUtMS45MTZoMi41NzF2MTEuNDk3aDIuMzM4bC4yMzMuMjRjLjIzNC4yMzkgMCAuMjM5IDAgLjIzOXYxLjE5N3MwIC4yNC0uMjMzLjI0aC03LjcxNGwtLjIzNC0uMjR2LTEuNDM3czAtLjI0LjIzNC0uMjRoMi44MDV2LTguODYybC0yLjEwNCAxLjE5OGMtLjIzNCAwLS4yMzQuMjM5LS40NjcuMjM5aC0uMjM0czAtLjIzOS0uMjM0LS4yMzl2LTEuMTk4em04LjE4MiAyNS42MjljLS4yMzMuOTU4LS40NjcgMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjM5LTEuNDAzLjQ3OS0yLjMzOC40NzlzLTEuNjM2LS4yNC0yLjMzOC0uNDc5YTIuMTMgMi4xMyAwIDAgMS0xLjQwMy0xLjQzN2MtLjIzNC0uNzE4LS43MDEtMS40MzctLjcwMS0yLjE1Ni0uMjM0LS45NTgtLjIzNC0xLjkxNi0uMjM0LTIuODc0IDAtMS4xOTggMC0yLjE1Ni4yMzQtMi44NzQuMjM0LS45NTguNDY3LTEuNjc3LjkzNS0yLjE1NnMuOTM1LTEuMTk4IDEuNDAzLTEuNDM3Yy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yMzkgMi4zMzcuNDc5YTIuMTMgMi4xMyAwIDAgMSAxLjQwMyAxLjQzN2MuMjM0LjcxOS43MDEgMS40MzcuNzAxIDIuMTU2LjIzNC45NTguMjM0IDEuOTE2LjIzNCAyLjg3NCAwIDEuMTk4IDAgMi4xNTYtLjIzNCAyLjg3NHptMTAuNTIgMy4zNTN2LjI0czAgLjIzOS0uMjM0LjIzOWgtNy43MTRsLS4yMzQtLjIzOXYtMS40MzdzMC0uMjM5LjIzNC0uMjM5aDIuODA1di04Ljg2MmwtMi4xMDQgMS4xOThjLS4yMzQgMC0uMjM0LjIzOS0uNDY4LjIzOWgtLjIzNHMwLS4yMzktLjIzNC0uMjM5VjQ0Ljc5bC4yMzQtLjI0IDIuODA1LTEuOTE2aDIuNTcydjExLjQ5N2gyLjMzOGwuMjM0LjIzOXYxLjE5OHptLjIzNC0yMi4wMzZjLS4yMzQuOTU4LS40NjggMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjQtMS40MDMuNDc5LTIuMzM4LjQ3OXMtMS42MzYtLjI0LTIuMzM4LS40NzlhMi4xMyAyLjEzIDAgMCAxLTEuNDAzLTEuNDM3Yy0uMjM0LS40NzktLjcwMS0xLjQzNy0uNzAxLTIuMTU2cy0uMjM0LTEuOTE2LS4yMzQtMi44NzRjMC0xLjE5OCAwLTIuMTU2LjIzNC0yLjg3NC4yMzQtLjk1OC40NjgtMS42NzcuOTM1LTIuMTU2LjQ2OC0uNzE4LjkzNS0xLjE5OCAxLjQwMy0xLjQzNy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yNCAyLjMzOC40NzlhMi4xMyAyLjEzIDAgMCAxIDEuNDAzIDEuNDM3Yy4yMzQuNzE4LjcwMSAxLjQzNy43MDEgMi4xNTYuMjM0Ljk1OC4yMzQgMS45MTYuMjM0IDIuODc0IDAgMS4xOTgtLjIzNCAyLjE1Ni0uMjM0IDIuODc0eiIgZmlsbD0iIzAwNzhkNyIgc3Ryb2tlPSJub25lIi8+PC9zeW1ib2w+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Azure Storage Blob"
    camel.apache.org/kamelet.namespace: "Azure"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Azure Storage Blob Append Sink"
    description: Upload data in append mode to Azure Storage Blob.
    required:
      - accountName
      - containerName
    type: object
    properties:
      accountName:
        title: Account Name
        description: The Azure Storage Blob account name.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      containerName:
        title: Container Name
        description: The Azure Storage Blob container name.
        type: string
      accessKey:
        title: Access Key
        description: The Azure Storage Blob access key.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      credentialType:
        title: Credential Type
        description: Determines the credential strategy to adopt.
        type: string
        enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"]
        default: "SHARED_ACCOUNT_KEY"
  dependencies:
    - "camel:core"
    - "camel:azure-storage-blob"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[file]}"
            steps:
            - setHeader:
                name: CamelAzureStorageBlobBlobName
                simple: "${header[file]}"
          - simple: "${header[ce-file]}"
            steps:
            - setHeader:
                name: CamelAzureStorageBlobBlobName
                simple: "${header[ce-file]}"
          otherwise:
            steps:
            - setHeader:
                name: CamelAzureStorageBlobBlobName
                simple: "${exchangeId}"
      - to:
          uri: "azure-storage-blob://{{accountName}}/{{containerName}}"
          parameters:
            accessKey: "{{?accessKey}}"
            operation: "commitAppendBlob"
            blobType: "appendBlob"
            credentialType: "{{credentialType}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: azure-storage-blob-changefeed-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny41NTggMHptLjIzNCA1Ny45NjRjMCAzLjM1My0yLjgwNSA2LjIyNy02LjA3OCA2LjIyN0gyOC41MmMtMy4yNzMgMC02LjA3OC0yLjg3NC02LjA3OC02LjIyN1YyMi4yNzZjMC0zLjM1MyAyLjgwNS02LjIyOCA2LjA3OC02LjIyOGgyOS45MjJsOS4zNTEgOS41ODF2MzIuMzM1ek00MS42MSA0Ni40NjdjMC0uNDc5LS4yMzQtLjcxOC0uMjM0LS45NThzLS4yMzQtLjQ3OS0uNDY3LS43MTgtLjIzNC0uMjQtLjQ2OC0uMjRoLS43MDFjLS40NjggMC0uNzAyIDAtLjkzNS4yNHMtLjQ2OC40NzktLjcwMS45NTgtLjIzNC45NTgtLjIzNCAxLjQzN3Y0LjU1MWMwIC43MTkuMjM0IDEuMTk3LjQ2OCAxLjQzNy4yMzQuNDc5LjQ2OC43MTkuNzAxLjcxOS4yMzQuMjQuNDY4LjI0LjkzNS4yNC4yMzQgMCAuNDY4IDAgLjcwMS0uMjRhLjUxLjUxIDAgMCAwIC40NjgtLjQ3OWMuMjM0LS4yNC4yMzQtLjQ3OS40NjctLjcxOCAwLS4yNC4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE5LjIzMy0xLjE5OHYtMy4xMTRjLS40NjctLjI0LS40NjctLjQ3OS0uNDY3LS45NTh6bTEwLjUyLTE4LjY4M2MwLS40NzktLjIzNC0uNzE4LS4yMzQtLjk1OHMtLjIzNC0uNDc5LS40NjgtLjcxOS0uMjM0LS4yNC0uNDY4LS4yNGgtLjcwMWMtLjQ2NyAwLS43MDEgMC0uOTM1LjI0cy0uNDY4LjQ3OS0uNzAyLjk1OC0uMjMzLjk1OC0uMjMzIDEuNDM3djQuNTUxYzAgLjcxOS4yMzMgMS4xOTguNDY3IDEuNDM3LjIzNC40NzkuNDY4LjcxOS43MDEuNzE5LjIzNC4yNC40NjcuMjQuOTM1LjI0LjIzNCAwIC40NjcgMCAuNzAxLS4yNGEuNTEuNTEgMCAwIDAgLjQ2OC0uNDc5Yy4yMzQtLjI0LjIzNC0uNDc5LjQ2OC0uNzE5IDAtLjIzOS4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE4LjIzNC0xLjE5OHYtMy4xMTRjLS4yMzQgMC0uMjM0LS40NzktLjQ2Ny0uOTU4em00LjY3NS04LjM4M0gyOC41MTljLTEuNjM2IDAtMi44MDUgMS4xOTgtMi44MDUgMi44NzR2MzUuNjg5YzAgMS42NzcgMS4xNjkgMi44NzQgMi44MDUgMi44NzRoMzMuMTk1YTIuODggMi44OCAwIDAgMCAyLjgwNS0yLjg3NFYyNy4zMDVoLTcuNDh2LTcuOTA0ek0zNiAyNi41ODd2LS40NzlsLjIzNC0uMjQgMi44MDUtMS45MTZoMi41NzF2MTEuNDk3aDIuMzM4bC4yMzMuMjRjLjIzNC4yMzkgMCAuMjM5IDAgLjIzOXYxLjE5N3MwIC4yNC0uMjMzLjI0aC03LjcxNGwtLjIzNC0uMjR2LTEuNDM3czAtLjI0LjIzNC0uMjRoMi44MDV2LTguODYybC0yLjEwNCAxLjE5OGMtLjIzNCAwLS4yMzQuMjM5LS40NjcuMjM5aC0uMjM0czAtLjIzOS0uMjM0LS4yMzl2LTEuMTk4em04LjE4MiAyNS42MjljLS4yMzMuOTU4LS40NjcgMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjM5LTEuNDAzLjQ3OS0yLjMzOC40NzlzLTEuNjM2LS4yNC0yLjMzOC0uNDc5YTIuMTMgMi4xMyAwIDAgMS0xLjQwMy0xLjQzN2MtLjIzNC0uNzE4LS43MDEtMS40MzctLjcwMS0yLjE1Ni0uMjM0LS45NTgtLjIzNC0xLjkxNi0uMjM0LTIuODc0IDAtMS4xOTggMC0yLjE1Ni4yMzQtMi44NzQuMjM0LS45NTguNDY3LTEuNjc3LjkzNS0yLjE1NnMuOTM1LTEuMTk4IDEuNDAzLTEuNDM3Yy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yMzkgMi4zMzcuNDc5YTIuMTMgMi4xMyAwIDAgMSAxLjQwMyAxLjQzN2MuMjM0LjcxOS43MDEgMS40MzcuNzAxIDIuMTU2LjIzNC45NTguMjM0IDEuOTE2LjIzNCAyLjg3NCAwIDEuMTk4IDAgMi4xNTYtLjIzNCAyLjg3NHptMTAuNTIgMy4zNTN2LjI0czAgLjIzOS0uMjM0LjIzOWgtNy43MTRsLS4yMzQtLjIzOXYtMS40MzdzMC0uMjM5LjIzNC0uMjM5aDIuODA1di04Ljg2MmwtMi4xMDQgMS4xOThjLS4yMzQgMC0uMjM0LjIzOS0uNDY4LjIzOWgtLjIzNHMwLS4yMzktLjIzNC0uMjM5VjQ0Ljc5bC4yMzQtLjI0IDIuODA1LTEuOTE2aDIuNTcydjExLjQ5N2gyLjMzOGwuMjM0LjIzOXYxLjE5OHptLjIzNC0yMi4wMzZjLS4yMzQuOTU4LS40NjggMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjQtMS40MDMuNDc5LTIuMzM4LjQ3OXMtMS42MzYtLjI0LTIuMzM4LS40NzlhMi4xMyAyLjEzIDAgMCAxLTEuNDAzLTEuNDM3Yy0uMjM0LS40NzktLjcwMS0xLjQzNy0uNzAxLTIuMTU2cy0uMjM0LTEuOTE2LS4yMzQtMi44NzRjMC0xLjE5OCAwLTIuMTU2LjIzNC0yLjg3NC4yMzQtLjk1OC40NjgtMS42NzcuOTM1LTIuMTU2LjQ2OC0uNzE4LjkzNS0xLjE5OCAxLjQwMy0xLjQzNy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yNCAyLjMzOC40NzlhMi4xMyAyLjEzIDAgMCAxIDEuNDAzIDEuNDM3Yy4yMzQuNzE4LjcwMSAxLjQzNy43MDEgMi4xNTYuMjM0Ljk1OC4yMzQgMS45MTYuMjM0IDIuODc0IDAgMS4xOTgtLjIzNCAyLjE1Ni0uMjM0IDIuODc0eiIgZmlsbD0iIzAwNzhkNyIgc3Ryb2tlPSJub25lIi8+PC9zeW1ib2w+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Azure Storage Blob Changefeed"
    camel.apache.org/kamelet.namespace: "Azure"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Azure Storage Blob Changefeed Source"
    description: Consume events from an Azure Storage Blob change feed.
    required:
      - period
      - accountName
      - accessKey
    type: object
    properties:
      period:
        title: Period between Polls
        description: The interval (in milliseconds) between fetches to the Azure Storage change feed.
        type: integer
        default: 10000
      accountName:
        title: Account Name
        description: The Azure Storage Blob account name.
        type: string
        x-descriptors:
          - urn:camel:group:credentials
      accessKey:
        title: Access Key
        description: The Azure Storage Blob access Key.
        type: string
        format: password
        x-descriptors:
          - urn:camel:group:credentials
  dependencies:
    - "camel:azure-storage-blob"
    - "camel:kamelet"
    - "camel:core"
    - "camel:jackson"
    - "camel:jsonpath"
    - "camel:timer"
  template:
    from:
      uri: "timer:azure-storage-blob-stream"
      parameters:
        period: "{{period}}"
      steps:
        - to:
            uri: "azure-storage-blob:{{accountName}}"
            parameters:
              operation: "getChangeFeed"
              accessKey: "{{accessKey}}"
              credentialType: "SHARED_ACCOUNT_KEY"
        - split:
            expression:
              simple: "${body}"
        - marshal:
            json:
              library: Jackson
              unmarshalType: com.fasterxml.jackson.databind.JsonNode
        - setHeader:
            name: "azure-storage-blob-changefeed-topic"
            jsonpath:
              suppressExceptions: true
              expression: $.topic
        - setHeader:
            name: "azure-storage-blob-changefeed-subject"
            jsonpath:
              suppressExceptions: true
              expression: $.subject
        - setHeader:
            name: "azure-storage-blob-changefeed-eventType"
            jsonpath:
              suppressExceptions: true
              expression: $.eventType
        - setHeader:
            name: "azure-storage-blob-changefeed-eventTime"
            jsonpath:
              suppressExceptions: true
              expression: $.eventTime
        - setHeader:
            name: "azure-storage-blob-changefeed-id"
            jsonpath:
              suppressExceptions: true
              expression: $.id
        - setHeader:
            name: "azure-storage-blob-changefeed-dataVersion"
            jsonpath:
              suppressExceptions: true
              expression: $.dataVersion
        - setHeader:
            name: "azure-storage-blob-changefeed-metadataVersion"
            jsonpath:
              suppressExceptions: true
              expression: $.metadataVersion
        - setBody:
            jsonpath:
              expression: $.data
        - marshal:
            json:
              library: Jackson
              module-class-names: com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
        - to: "kamelet:sink"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: azure-storage-blob-event-based-source
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODEgODIiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNMS4zMzMgMEMuNTMzIDAgMCAuNTMzIDAgMS4zMzN2MTZjMCAuOC41MzMgMS4zMzMgMS4zMzMgMS4zMzNoOGMuOCAwIDEuMzMzLS41MzMgMS4zMzMtMS4zMzN2LTYuNjY2aDU4LjY2N3Y2LjY2N2MwIC44LjUzMyAxLjMzMyAxLjYgMS4zMzNoNy43MzNjLjggMCAxLjMzMy0uNTMzIDEuMzMzLTEuMzMzdi04LThDODAgLjUzMyA3OS40NjcgMCA3OC42NjcgMGgwSDEuMzMzem03Ny4zMzQgODBjLjggMCAxLjMzMy0uNTMzIDEuMzMzLTEuMzMzVjYyLjkzNGMwLS44LS41MzMtMS4zMzMtMS4zMzMtMS4zMzNoLTcuNzMzYy0uOCAwLTEuMzMzLjUzMy0xLjMzMyAxLjMzM3Y2LjRIMTAuNjY3di02LjY2N2MwLS44LS41MzMtMS4zMzMtMS42LTEuMzMzSDEuMzMzYy0uOCAwLTEuMzMzLjUzMy0xLjMzMyAxLjZ2MTUuNzMzQzAgNzkuNDY3LjUzMyA4MCAxLjMzMyA4MGg3Ny4zMzR6IiBmaWxsPSIjMDA3MmM2IiBzdHJva2U9Im5vbmUiLz48cGF0aCBkPSJNMjkuNTE5IDM2LjQ0N2wzLjQ1Mi0zLjQ1MiAyLjU1NiAyLjU1Ni0zLjQ1MiAzLjQ1MXptNS4wMDctNS4wMDhsMy40NTYtMy40NTYgMi41NiAyLjU2TDM3LjA4NiAzNHptNy41Ny0yLjQ2M2wtMi41Ni0yLjU0NCAzLjQyNC0zLjQyNCAyLjU2IDIuNTQ0ek0zOS41MzUgNTIuNWwyLjU2MS0yLjU2IDMuNDI0IDMuNDI2LTIuNTYxIDIuNTZ6bS0xLjU1MS0xLjU3MmwtMy40NTYtMy40NTYgMi41Ni0yLjU0NCAzLjQ1NiAzLjQ1NnptLTUuMDA4LTUuMDA4bC0zLjQ1Ni0zLjQ1NiAyLjU2LTIuNTQ0IDMuNDQgMy40NHoiIHN0cm9rZT0ibm9uZSIgZmlsbD0iI2I4ZDQzMiIvPjxwYXRoIGQ9Ik01Ny44MSAyNC4zOTVhNC40NCA0LjQ0IDAgMCAxLTMuMTU4IDEuMzA5IDQuNDMgNC40MyAwIDAgMS0zLjE1OC0xLjMwOWwtNi4wNTMtNi4wNTN2MTIuMzA2aDE4LjQyNFYxOC4zNDJsLTYuMDU0IDYuMDUzem0tMy4xNjEuNDA5YTMuNTQgMy41NCAwIDAgMCAyLjUyMy0xLjA0NWw2LjY5LTYuNjl2LS4zNTVINDUuNDM4di4zNTVsNi42OSA2LjY5YTMuNTQgMy41NCAwIDAgMCAyLjUyMiAxLjA0NXptMy4xNjEgMzEuMTVhNC40NCA0LjQ0IDAgMCAxLTMuMTU4IDEuMzA5IDQuNDMgNC40MyAwIDAgMS0zLjE1OC0xLjMwOWwtNi4wNTMtNi4wNTN2MTIuMzA2aDE4LjQyNFY0OS45MDFsLTYuMDU0IDYuMDUzem0tMy4xNjEuNDFhMy41NCAzLjU0IDAgMCAwIDIuNTIzLTEuMDQ1bDYuNjktNi42ODl2LS4zNTVINDUuNDM4di4zNTVsNi42OSA2LjY4OWEzLjU0IDMuNTQgMCAwIDAgMi41MjIgMS4wNDV6TTE5LjcxOCA0MC41OTljLTEuMzQ0IDEuMzQ0LTMuMTMzIDIuMDg1LTUuMDM1IDIuMDg1cy0zLjY5LS43NDEtNS4wMzUtMi4wODVMMCAzMC45NDl2MTkuNjEzaDI5LjM2NlYzMC45NDlsLTkuNjQ4IDkuNjV6bS01LjAzNS42NTJhNS42NSA1LjY1IDAgMCAwIDQuMDIyLTEuNjY2bDEwLjY2MS0xMC42NjF2LS41NjVIMHYuNTY2bDEwLjY2MSAxMC42NjFhNS42NiA1LjY2IDAgMCAwIDQuMDIyIDEuNjY0eiIgc3Ryb2tlPSJub25lIiBmaWxsPSIjNTliNGQ5Ii8+PC9zeW1ib2w+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Azure Storage Blob Event Based"
    camel.apache.org/kamelet.namespace: "Azure"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Azure Storage Blob Event-based Source"
    description: Receive data from Azure Service Bus subscribed to Azure Eventgrid reporting events related to a Azure Storage Blob account.
    required:
      - topicOrQueueName
      - connectionString
      - accountName
      - containerName
      - accessKey
    type: object
    properties:
      topicOrQueueName:
        title: Topic Or Queue Name
        description: Topic Or Queue Name for the Azure Servicebus instance
        type: string
      connectionString:
        title: Connection String
        description: Connection String for Azure Servicebus instance
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      serviceBusReceiveMode:
        title: Servicebus Receive Mode
        description: Sets the receive mode for the receiver.
        type: string
        default: RECEIVE_AND_DELETE
        enum: ["RECEIVE_AND_DELETE", "PEEK_LOCK"]
      subscriptionName:
        title: Subscription Name
        description: Sets the name of the subscription in the topic to listen to. This parameter is mandatory in case of topic.
        type: string
      accountName:
        title: Account Name
        description: The Azure Storage Blob account name.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      containerName:
        title: Container Name
        description: The Azure Storage Blob container name.
        type: string
      accessKey:
        title: Access Key
        description: The Azure Storage Blob access key.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      credentialType:
        title: Credential Type
        description: Determines the credential strategy to adopt.
        type: string
        default: SHARED_ACCOUNT_KEY
        enum: ["SHARED_ACCOUNT_KEY", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY"]
      getBlob:
        title: Get Object in Container
        description: >-
          If `getBlob` is enabled, then the file created in the container is
          retrieved and returned as body. If not only the event is returned as body.
        type: boolean
        default: false
  types:
    out:
      mediaType: application/octet-stream
  dependencies:
    - "camel:azure-servicebus"
    - "camel:azure-storage-blob"
    - "camel:kamelet"
    - "camel:core"
    - 'camel:jsonpath'
    - 'camel:jackson'
  template:
    from:
      uri: "azure-servicebus:{{topicOrQueueName}}"
      parameters:
        connectionString: "{{connectionString}}"
        serviceBusReceiveMode: "{{serviceBusReceiveMode}}"
        subscriptionName: "{{?subscriptionName}}"
      steps:
        - choice:
            precondition: true
            when:
              - simple: '${properties:getBlob:true}'
                steps:
                  - setBody:
                      simple: ${body.toString()}
                  - unmarshal:
                      json:
                        library: Jackson
                        unmarshalType: com.fasterxml.jackson.databind.JsonNode
                  - setProperty:
                      name: azure-storage-blob-event-type
                      jsonpath: $.eventType
                  - setProperty:
                      name: azure-storage-blob-subject
                      jsonpath: $.subject
                  - setProperty:
                      name: azure-storage-blob-blob-name
                      simple: '${exchangeProperty.azure-storage-blob-subject.substring(${exchangeProperty.azure-storage-blob-subject.lastIndexOf("/")}++)}'
                  - log: "${exchangeProperty.azure-storage-blob-event-type} - ${exchangeProperty.azure-storage-blob-subject} - ${exchangeProperty.azure-storage-blob-blob-name}"
                  - choice:
                      when:
                        - simple: '${exchangeProperty.azure-storage-blob-event-type} == "Microsoft.Storage.BlobCreated" && ${exchangeProperty.azure-storage-blob-subject} contains "{{containerName}}"'
                          steps:
                            - toD: >-
                                azure-storage-blob:{{accountName}}/{{containerName}}?accessKey=RAW({{accessKey}})&operation=getBlob&blobName=${exchangeProperty.azure-storage-blob-blob-name}&credentialType={{credentialType}}
        - to: 'kamelet:sink'

---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: azure-storage-blob-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny41NTggMHptLjIzNCA1Ny45NjRjMCAzLjM1My0yLjgwNSA2LjIyNy02LjA3OCA2LjIyN0gyOC41MmMtMy4yNzMgMC02LjA3OC0yLjg3NC02LjA3OC02LjIyN1YyMi4yNzZjMC0zLjM1MyAyLjgwNS02LjIyOCA2LjA3OC02LjIyOGgyOS45MjJsOS4zNTEgOS41ODF2MzIuMzM1ek00MS42MSA0Ni40NjdjMC0uNDc5LS4yMzQtLjcxOC0uMjM0LS45NThzLS4yMzQtLjQ3OS0uNDY3LS43MTgtLjIzNC0uMjQtLjQ2OC0uMjRoLS43MDFjLS40NjggMC0uNzAyIDAtLjkzNS4yNHMtLjQ2OC40NzktLjcwMS45NTgtLjIzNC45NTgtLjIzNCAxLjQzN3Y0LjU1MWMwIC43MTkuMjM0IDEuMTk3LjQ2OCAxLjQzNy4yMzQuNDc5LjQ2OC43MTkuNzAxLjcxOS4yMzQuMjQuNDY4LjI0LjkzNS4yNC4yMzQgMCAuNDY4IDAgLjcwMS0uMjRhLjUxLjUxIDAgMCAwIC40NjgtLjQ3OWMuMjM0LS4yNC4yMzQtLjQ3OS40NjctLjcxOCAwLS4yNC4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE5LjIzMy0xLjE5OHYtMy4xMTRjLS40NjctLjI0LS40NjctLjQ3OS0uNDY3LS45NTh6bTEwLjUyLTE4LjY4M2MwLS40NzktLjIzNC0uNzE4LS4yMzQtLjk1OHMtLjIzNC0uNDc5LS40NjgtLjcxOS0uMjM0LS4yNC0uNDY4LS4yNGgtLjcwMWMtLjQ2NyAwLS43MDEgMC0uOTM1LjI0cy0uNDY4LjQ3OS0uNzAyLjk1OC0uMjMzLjk1OC0uMjMzIDEuNDM3djQuNTUxYzAgLjcxOS4yMzMgMS4xOTguNDY3IDEuNDM3LjIzNC40NzkuNDY4LjcxOS43MDEuNzE5LjIzNC4yNC40NjcuMjQuOTM1LjI0LjIzNCAwIC40NjcgMCAuNzAxLS4yNGEuNTEuNTEgMCAwIDAgLjQ2OC0uNDc5Yy4yMzQtLjI0LjIzNC0uNDc5LjQ2OC0uNzE5IDAtLjIzOS4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE4LjIzNC0xLjE5OHYtMy4xMTRjLS4yMzQgMC0uMjM0LS40NzktLjQ2Ny0uOTU4em00LjY3NS04LjM4M0gyOC41MTljLTEuNjM2IDAtMi44MDUgMS4xOTgtMi44MDUgMi44NzR2MzUuNjg5YzAgMS42NzcgMS4xNjkgMi44NzQgMi44MDUgMi44NzRoMzMuMTk1YTIuODggMi44OCAwIDAgMCAyLjgwNS0yLjg3NFYyNy4zMDVoLTcuNDh2LTcuOTA0ek0zNiAyNi41ODd2LS40NzlsLjIzNC0uMjQgMi44MDUtMS45MTZoMi41NzF2MTEuNDk3aDIuMzM4bC4yMzMuMjRjLjIzNC4yMzkgMCAuMjM5IDAgLjIzOXYxLjE5N3MwIC4yNC0uMjMzLjI0aC03LjcxNGwtLjIzNC0uMjR2LTEuNDM3czAtLjI0LjIzNC0uMjRoMi44MDV2LTguODYybC0yLjEwNCAxLjE5OGMtLjIzNCAwLS4yMzQuMjM5LS40NjcuMjM5aC0uMjM0czAtLjIzOS0uMjM0LS4yMzl2LTEuMTk4em04LjE4MiAyNS42MjljLS4yMzMuOTU4LS40NjcgMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjM5LTEuNDAzLjQ3OS0yLjMzOC40NzlzLTEuNjM2LS4yNC0yLjMzOC0uNDc5YTIuMTMgMi4xMyAwIDAgMS0xLjQwMy0xLjQzN2MtLjIzNC0uNzE4LS43MDEtMS40MzctLjcwMS0yLjE1Ni0uMjM0LS45NTgtLjIzNC0xLjkxNi0uMjM0LTIuODc0IDAtMS4xOTggMC0yLjE1Ni4yMzQtMi44NzQuMjM0LS45NTguNDY3LTEuNjc3LjkzNS0yLjE1NnMuOTM1LTEuMTk4IDEuNDAzLTEuNDM3Yy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yMzkgMi4zMzcuNDc5YTIuMTMgMi4xMyAwIDAgMSAxLjQwMyAxLjQzN2MuMjM0LjcxOS43MDEgMS40MzcuNzAxIDIuMTU2LjIzNC45NTguMjM0IDEuOTE2LjIzNCAyLjg3NCAwIDEuMTk4IDAgMi4xNTYtLjIzNCAyLjg3NHptMTAuNTIgMy4zNTN2LjI0czAgLjIzOS0uMjM0LjIzOWgtNy43MTRsLS4yMzQtLjIzOXYtMS40MzdzMC0uMjM5LjIzNC0uMjM5aDIuODA1di04Ljg2MmwtMi4xMDQgMS4xOThjLS4yMzQgMC0uMjM0LjIzOS0uNDY4LjIzOWgtLjIzNHMwLS4yMzktLjIzNC0uMjM5VjQ0Ljc5bC4yMzQtLjI0IDIuODA1LTEuOTE2aDIuNTcydjExLjQ5N2gyLjMzOGwuMjM0LjIzOXYxLjE5OHptLjIzNC0yMi4wMzZjLS4yMzQuOTU4LS40NjggMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjQtMS40MDMuNDc5LTIuMzM4LjQ3OXMtMS42MzYtLjI0LTIuMzM4LS40NzlhMi4xMyAyLjEzIDAgMCAxLTEuNDAzLTEuNDM3Yy0uMjM0LS40NzktLjcwMS0xLjQzNy0uNzAxLTIuMTU2cy0uMjM0LTEuOTE2LS4yMzQtMi44NzRjMC0xLjE5OCAwLTIuMTU2LjIzNC0yLjg3NC4yMzQtLjk1OC40NjgtMS42NzcuOTM1LTIuMTU2LjQ2OC0uNzE4LjkzNS0xLjE5OCAxLjQwMy0xLjQzNy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yNCAyLjMzOC40NzlhMi4xMyAyLjEzIDAgMCAxIDEuNDAzIDEuNDM3Yy4yMzQuNzE4LjcwMSAxLjQzNy43MDEgMi4xNTYuMjM0Ljk1OC4yMzQgMS45MTYuMjM0IDIuODc0IDAgMS4xOTgtLjIzNCAyLjE1Ni0uMjM0IDIuODc0eiIgZmlsbD0iIzAwNzhkNyIgc3Ryb2tlPSJub25lIi8+PC9zeW1ib2w+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Azure Storage Blob"
    camel.apache.org/kamelet.namespace: "Azure"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Azure Storage Blob Sink"
    description: Upload data to Azure Storage Blob.
    required:
      - accountName
      - containerName
    type: object
    properties:
      accountName:
        title: Account Name
        description: The Azure Storage Blob account name.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      containerName:
        title: Container Name
        description: The Azure Storage Blob container name.
        type: string
      accessKey:
        title: Access Key
        description: The Azure Storage Blob access key.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      credentialType:
        title: Credential Type
        description: Determines the credential strategy to adopt.
        type: string
        enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"]
        default: "SHARED_ACCOUNT_KEY"
  dependencies:
    - "camel:core"
    - "camel:azure-storage-blob"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[file]}"
            steps:
            - setHeader:
                name: CamelAzureStorageBlobBlobName
                simple: "${header[file]}"
          - simple: "${header[ce-file]}"
            steps:
            - setHeader:
                name: CamelAzureStorageBlobBlobName
                simple: "${header[ce-file]}"
          otherwise:
            steps:
            - setHeader:
                name: CamelAzureStorageBlobBlobName
                simple: "${exchangeId}"
      - to:
          uri: "azure-storage-blob://{{accountName}}/{{containerName}}"
          parameters:
            accessKey: "{{?accessKey}}"
            operation: "uploadBlockBlob"
            credentialType: "{{credentialType}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: azure-storage-blob-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny41NTggMHptLjIzNCA1Ny45NjRjMCAzLjM1My0yLjgwNSA2LjIyNy02LjA3OCA2LjIyN0gyOC41MmMtMy4yNzMgMC02LjA3OC0yLjg3NC02LjA3OC02LjIyN1YyMi4yNzZjMC0zLjM1MyAyLjgwNS02LjIyOCA2LjA3OC02LjIyOGgyOS45MjJsOS4zNTEgOS41ODF2MzIuMzM1ek00MS42MSA0Ni40NjdjMC0uNDc5LS4yMzQtLjcxOC0uMjM0LS45NThzLS4yMzQtLjQ3OS0uNDY3LS43MTgtLjIzNC0uMjQtLjQ2OC0uMjRoLS43MDFjLS40NjggMC0uNzAyIDAtLjkzNS4yNHMtLjQ2OC40NzktLjcwMS45NTgtLjIzNC45NTgtLjIzNCAxLjQzN3Y0LjU1MWMwIC43MTkuMjM0IDEuMTk3LjQ2OCAxLjQzNy4yMzQuNDc5LjQ2OC43MTkuNzAxLjcxOS4yMzQuMjQuNDY4LjI0LjkzNS4yNC4yMzQgMCAuNDY4IDAgLjcwMS0uMjRhLjUxLjUxIDAgMCAwIC40NjgtLjQ3OWMuMjM0LS4yNC4yMzQtLjQ3OS40NjctLjcxOCAwLS4yNC4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE5LjIzMy0xLjE5OHYtMy4xMTRjLS40NjctLjI0LS40NjctLjQ3OS0uNDY3LS45NTh6bTEwLjUyLTE4LjY4M2MwLS40NzktLjIzNC0uNzE4LS4yMzQtLjk1OHMtLjIzNC0uNDc5LS40NjgtLjcxOS0uMjM0LS4yNC0uNDY4LS4yNGgtLjcwMWMtLjQ2NyAwLS43MDEgMC0uOTM1LjI0cy0uNDY4LjQ3OS0uNzAyLjk1OC0uMjMzLjk1OC0uMjMzIDEuNDM3djQuNTUxYzAgLjcxOS4yMzMgMS4xOTguNDY3IDEuNDM3LjIzNC40NzkuNDY4LjcxOS43MDEuNzE5LjIzNC4yNC40NjcuMjQuOTM1LjI0LjIzNCAwIC40NjcgMCAuNzAxLS4yNGEuNTEuNTEgMCAwIDAgLjQ2OC0uNDc5Yy4yMzQtLjI0LjIzNC0uNDc5LjQ2OC0uNzE5IDAtLjIzOS4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE4LjIzNC0xLjE5OHYtMy4xMTRjLS4yMzQgMC0uMjM0LS40NzktLjQ2Ny0uOTU4em00LjY3NS04LjM4M0gyOC41MTljLTEuNjM2IDAtMi44MDUgMS4xOTgtMi44MDUgMi44NzR2MzUuNjg5YzAgMS42NzcgMS4xNjkgMi44NzQgMi44MDUgMi44NzRoMzMuMTk1YTIuODggMi44OCAwIDAgMCAyLjgwNS0yLjg3NFYyNy4zMDVoLTcuNDh2LTcuOTA0ek0zNiAyNi41ODd2LS40NzlsLjIzNC0uMjQgMi44MDUtMS45MTZoMi41NzF2MTEuNDk3aDIuMzM4bC4yMzMuMjRjLjIzNC4yMzkgMCAuMjM5IDAgLjIzOXYxLjE5N3MwIC4yNC0uMjMzLjI0aC03LjcxNGwtLjIzNC0uMjR2LTEuNDM3czAtLjI0LjIzNC0uMjRoMi44MDV2LTguODYybC0yLjEwNCAxLjE5OGMtLjIzNCAwLS4yMzQuMjM5LS40NjcuMjM5aC0uMjM0czAtLjIzOS0uMjM0LS4yMzl2LTEuMTk4em04LjE4MiAyNS42MjljLS4yMzMuOTU4LS40NjcgMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjM5LTEuNDAzLjQ3OS0yLjMzOC40NzlzLTEuNjM2LS4yNC0yLjMzOC0uNDc5YTIuMTMgMi4xMyAwIDAgMS0xLjQwMy0xLjQzN2MtLjIzNC0uNzE4LS43MDEtMS40MzctLjcwMS0yLjE1Ni0uMjM0LS45NTgtLjIzNC0xLjkxNi0uMjM0LTIuODc0IDAtMS4xOTggMC0yLjE1Ni4yMzQtMi44NzQuMjM0LS45NTguNDY3LTEuNjc3LjkzNS0yLjE1NnMuOTM1LTEuMTk4IDEuNDAzLTEuNDM3Yy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yMzkgMi4zMzcuNDc5YTIuMTMgMi4xMyAwIDAgMSAxLjQwMyAxLjQzN2MuMjM0LjcxOS43MDEgMS40MzcuNzAxIDIuMTU2LjIzNC45NTguMjM0IDEuOTE2LjIzNCAyLjg3NCAwIDEuMTk4IDAgMi4xNTYtLjIzNCAyLjg3NHptMTAuNTIgMy4zNTN2LjI0czAgLjIzOS0uMjM0LjIzOWgtNy43MTRsLS4yMzQtLjIzOXYtMS40MzdzMC0uMjM5LjIzNC0uMjM5aDIuODA1di04Ljg2MmwtMi4xMDQgMS4xOThjLS4yMzQgMC0uMjM0LjIzOS0uNDY4LjIzOWgtLjIzNHMwLS4yMzktLjIzNC0uMjM5VjQ0Ljc5bC4yMzQtLjI0IDIuODA1LTEuOTE2aDIuNTcydjExLjQ5N2gyLjMzOGwuMjM0LjIzOXYxLjE5OHptLjIzNC0yMi4wMzZjLS4yMzQuOTU4LS40NjggMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjQtMS40MDMuNDc5LTIuMzM4LjQ3OXMtMS42MzYtLjI0LTIuMzM4LS40NzlhMi4xMyAyLjEzIDAgMCAxLTEuNDAzLTEuNDM3Yy0uMjM0LS40NzktLjcwMS0xLjQzNy0uNzAxLTIuMTU2cy0uMjM0LTEuOTE2LS4yMzQtMi44NzRjMC0xLjE5OCAwLTIuMTU2LjIzNC0yLjg3NC4yMzQtLjk1OC40NjgtMS42NzcuOTM1LTIuMTU2LjQ2OC0uNzE4LjkzNS0xLjE5OCAxLjQwMy0xLjQzNy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yNCAyLjMzOC40NzlhMi4xMyAyLjEzIDAgMCAxIDEuNDAzIDEuNDM3Yy4yMzQuNzE4LjcwMSAxLjQzNy43MDEgMi4xNTYuMjM0Ljk1OC4yMzQgMS45MTYuMjM0IDIuODc0IDAgMS4xOTgtLjIzNCAyLjE1Ni0uMjM0IDIuODc0eiIgZmlsbD0iIzAwNzhkNyIgc3Ryb2tlPSJub25lIi8+PC9zeW1ib2w+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Azure Storage Blob"
    camel.apache.org/kamelet.namespace: "Azure"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Azure Storage Blob Source"
    description: Consume files from Azure Storage Blob.
    required:
      - accountName
      - containerName
    type: object
    properties:
      accountName:
        title: Account Name
        description: The Azure Storage Blob account name.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      containerName:
        title: Container Name
        description: The Azure Storage Blob container name.
        type: string
      accessKey:
        title: Access Key
        description: The Azure Storage Blob access key.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      delay:
        title: Delay
        description: The number of milliseconds before the next poll of the selected blob.
        type: integer
        default: 500
      deleteAfterRead:
        title: Auto-delete Blob 
        description: Specifies to delete blobs after consuming them
        type: boolean
        default: false
      credentialType:
        title: Credential Type
        description: Determines the credential strategy to adopt.
        type: string
        enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"]
        default: "SHARED_ACCOUNT_KEY"
  dataTypes:
    out:
      default: binary
      headers:
        CamelAzureStorageBlobBlobName:
          title: Azure Storage Blob Name
          description: The name of the blob retrieved
          type: string
        CamelAzureStorageBlobBlobType:
          title: The Azure Storage Blob Type
          description: The Blob type, one of blockblob, appendblob or pageblob
          type: string
        CamelAzureStorageBlobContentType:
          title: Content Type
          description: The content type of the retrieved object.
          default: application/octet-stream
          type: string
        CamelAzureStorageBlobETag:
          title: ETag Value
          description: The E tag of the blob
          type: string
        CamelAzureStorageBlobCreationTime:
          title: Creation time
          description: The Creation time of the blob
          type: string
        CamelAzureStorageBlobLastModified:
          title: Last modification time
          description: The Last modification time of the blob
          type: string
        CamelAzureStorageBlobLeaseStatus:
          title: Lease status
          description: Status of the lease on the blob, one of locked or unlocked
          type: string
        CamelAzureStorageBlobMetadata:
          title: Blob Metadata
          description: Additional Metadata of the blob of type Map<String,Object>
          type: object
      types:
        binary:
          format: "application-octet-stream"
          description: Default binary representation of the Blob object retrieved from the container.
          mediaType: application/octet-stream
        cloudevents:
          format: "azure-storage-blob:application-cloudevents"
          description: Output data type represents Azure Storage Blob get blob response as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange with respective data from the Azure container and its derived object.
          headers:
            CamelCloudEventID:
              title: CloudEvent ID
              description: The Camel exchange id set as event id
              type: string
            CamelCloudEventType:
              title: CloudEvent Type
              description: The event type
              default: "org.apache.camel.event.azure.storage.blob.getBlob"
              type: string
            CamelCloudEventSource:
              title: CloudEvent Source
              description: The event source. By default, the E Tag name of the blob with prefix "azure.storage.blob.".
              type: string
            CamelCloudEventSubject:
              title: CloudEvent Subject
              description: The event subject. Usually the Azure Storage Blob name.
              type: string
            CamelCloudEventTime:
              title: CloudEvent Time
              description: The exchange creation timestamp as event time.
              type: string
  dependencies:
    - "camel:azure-storage-blob"
    - "camel:kamelet"
    - "camel:core"
    - "camel:jsonpath"
    - "camel:timer"
  template:
    from:
      uri: "azure-storage-blob:{{accountName}}/{{containerName}}"
      parameters:
        accessKey: "{{?accessKey}}"
        credentialType: "{{credentialType}}"
        delay: "{{delay}}"
      steps:
        - to: "kamelet:sink"
        - choice:
            precondition: true
            when:
              - simple: '${properties:deleteAfterRead:true}'
                steps:
                  - to:
                      uri: "azure-storage-blob:{{accountName}}/{{containerName}}"
                      parameters:
                        operation: "deleteBlob"
                        accessKey: "{{?accessKey}}"
                        credentialType: "{{credentialType}}"

---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: azure-storage-datalake-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyNi4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4wIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAxMTU4LjIgODYwLjQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDExNTguMiA4NjAuNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzA5NUNBMjt9DQoJLnN0MXtmaWxsOiNGRkZGRkY7fQ0KCS5zdDJ7ZmlsbDojMzJCRUVEO30NCgkuc3Qze2ZpbGw6IzFCMUIyMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTkyNy43LDE5Ny44SDYwOC44Yy0zLjQsMC4xLTYuOC0wLjktOS41LTNsLTkxLjItNjAuN2MtMi45LTEuNy02LjEtMi42LTkuNS0yLjZIMjMwLjVjLTkuMywwLTE3LDcuNC0xNy4yLDE2LjgNCgl2NTYzLjdjMC4yLDkuMyw3LjksMTYuOCwxNy4yLDE2LjhoNjk3LjFjOS4zLDAsMTctNy41LDE3LjItMTYuOHYtNDk3Qzk0NC45LDIwNS42LDkzNy4yLDE5Ny44LDkyNy43LDE5Ny44TDkyNy43LDE5Ny44eiIvPg0KPHBhdGggY2xhc3M9InN0MSIgZD0iTTQzOS4zLDE2NC4zSDI4Ni45Yy0zLjgsMC02LjksMy4xLTYuOSw2Ljl2MTkuNGMwLDMuOCwzLjEsNi45LDYuOSw2LjloMTUyLjNjMy44LDAsNi45LTMuMSw2LjktNi45DQoJYzAsMCwwLDAsMCwwdi0xOS40QzQ0Ni4xLDE2Ny4zLDQ0My4xLDE2NC4zLDQzOS4zLDE2NC4zeiIvPg0KPHBhdGggY2xhc3M9InN0MiIgZD0iTTMwOC40LDE2NC4zaC0yMy43Yy0yLjYsMC00LjcsMi4xLTQuNyw0Ljd2MjMuN2MwLDIuNiwyLjEsNC43LDQuNyw0LjdoMjMuN2MyLjYsMCw0LjctMi4xLDQuNy00LjdWMTY5DQoJQzMxMy4yLDE2Ni40LDMxMS4xLDE2NC4zLDMwOC40LDE2NC4zeiIvPg0KPHBhdGggY2xhc3M9InN0MyIgZD0iTTkyNy43LDE5N0g1NzkuMWMtNC42LTAuMS05LDEuOC0xMiw1LjJMNTA5LDI1OC4xYy0zLjMsMy03LjYsNC43LTEyLDQuN0gyMzAuNWMtOS41LDAtMTcuMiw3LjctMTcuMiwxNy4ybDAsMA0KCXY0MzAuM2MwLjIsOS4zLDcuOSwxNi44LDE3LjIsMTYuOGg2OTcuMWM5LjMsMCwxNy03LjQsMTcuMi0xNi44VjIxNWMwLjEtMi4zLTAuMy00LjctMS4xLTYuOUM5NDEuMywyMDEuNCw5MzQuOSwxOTcsOTI3LjcsMTk3eiIvPg0KPHBhdGggY2xhc3M9InN0MSIgZD0iTTYyOS45LDI4OC4yYy0xLjEtMC4zLTIuMy0wLjMtMy41LDBjMCwwLTMuOSwwLTUuNiwzbC0xMzYsMTk3LjVjLTEuMiwyLjEtMS4yLDQuOCwwLDYuOWMxLjMsMi40LDMuNyw0LDYuNSw0LjMNCgloODAuNWwtMzUuNiwxMTkuNmMtMC40LDAuNy0wLjYsMS41LTAuNiwyLjJjMCwwLjgsMC4xLDEuNiwwLjQsMi4zYzAuMywwLjcsMC43LDEuNCwxLjMsMS45YzAuNiwwLjYsMS4zLDEsMiwxLjNjMSwwLjQsMiwwLjQsMywwDQoJYzIuNiwwLDMuOSwwLDUuNi0zTDY4OCw0MjMuN3YtNC4zYy0wLjItMy45LTMuNC02LjktNy4zLTYuOWgtODYuMWwzNC45LTExNy41QzYzMS4yLDI5My4yLDYzMS4zLDI5MC4zLDYyOS45LDI4OC4yTDYyOS45LDI4OC4yeiIvPg0KPC9zdmc+DQo="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Azure Storage Blob Data Lake"
    camel.apache.org/kamelet.namespace: "Azure"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Azure Storage Blob Data Lake Sink"
    description: Send data to Azure Storage Blob Data Lake.
    required:
      - accountName
      - clientId
      - clientSecret
      - tenantId
      - fileSystemName
    type: object
    properties:
      accountName:
        title: Account Name
        description: The Azure Storage Blob Data lake account name.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      clientId:
        title: Client Id
        description: The Azure Storage Blob Data lake client Id.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      clientSecret:
        title: Client Secret
        description: The Azure Storage Blob Data lake client secret.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      tenantId:
        title: Tenant Id
        description: The Azure Storage Blob Data lake tenant id.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      fileSystemName:
        title: File System Name
        description: The Azure Storage Blob Data lake File system name.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      credentialType:
        title: Credential Type
        description: Determines the credential strategy to adopt.
        type: string
        enum: ["CLIENT_SECRET", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY", "AZURE_SAS", "SERVICE_CLIENT_INSTANCE"]
        default: "CLIENT_SECRET"
  dependencies:
    - "camel:azure-storage-datalake"
    - "camel:kamelet"
    - "camel:core"
    - "camel:timer"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[file]}"
            steps:
            - setHeader:
                name: CamelAzureStorageDataLakeFileName
                simple: "${header[file]}"
          - simple: "${header[ce-file]}"
            steps:
            - setHeader:
                name: CamelAzureStorageDataLakeFileName
                simple: "${header[ce-file]}"
          otherwise:
            steps:
            - setHeader:
                name: CamelAzureStorageDataLakeFileName
                simple: "${exchangeId}"
      - to:
          uri: "azure-storage-datalake:{{accountName}}/{{fileSystemName}}"
          parameters:
            clientId: "{{clientId}}"
            clientSecret: "{{clientSecret}}"
            tenantId: "{{tenantId}}"
            operation: "upload"
            credentialType: "{{credentialType}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: azure-storage-datalake-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyNi4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4wIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAxMTU4LjIgODYwLjQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDExNTguMiA4NjAuNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCgkuc3Qwe2ZpbGw6IzA5NUNBMjt9DQoJLnN0MXtmaWxsOiNGRkZGRkY7fQ0KCS5zdDJ7ZmlsbDojMzJCRUVEO30NCgkuc3Qze2ZpbGw6IzFCMUIyMDt9DQo8L3N0eWxlPg0KPHBhdGggY2xhc3M9InN0MCIgZD0iTTkyNy43LDE5Ny44SDYwOC44Yy0zLjQsMC4xLTYuOC0wLjktOS41LTNsLTkxLjItNjAuN2MtMi45LTEuNy02LjEtMi42LTkuNS0yLjZIMjMwLjVjLTkuMywwLTE3LDcuNC0xNy4yLDE2LjgNCgl2NTYzLjdjMC4yLDkuMyw3LjksMTYuOCwxNy4yLDE2LjhoNjk3LjFjOS4zLDAsMTctNy41LDE3LjItMTYuOHYtNDk3Qzk0NC45LDIwNS42LDkzNy4yLDE5Ny44LDkyNy43LDE5Ny44TDkyNy43LDE5Ny44eiIvPg0KPHBhdGggY2xhc3M9InN0MSIgZD0iTTQzOS4zLDE2NC4zSDI4Ni45Yy0zLjgsMC02LjksMy4xLTYuOSw2Ljl2MTkuNGMwLDMuOCwzLjEsNi45LDYuOSw2LjloMTUyLjNjMy44LDAsNi45LTMuMSw2LjktNi45DQoJYzAsMCwwLDAsMCwwdi0xOS40QzQ0Ni4xLDE2Ny4zLDQ0My4xLDE2NC4zLDQzOS4zLDE2NC4zeiIvPg0KPHBhdGggY2xhc3M9InN0MiIgZD0iTTMwOC40LDE2NC4zaC0yMy43Yy0yLjYsMC00LjcsMi4xLTQuNyw0Ljd2MjMuN2MwLDIuNiwyLjEsNC43LDQuNyw0LjdoMjMuN2MyLjYsMCw0LjctMi4xLDQuNy00LjdWMTY5DQoJQzMxMy4yLDE2Ni40LDMxMS4xLDE2NC4zLDMwOC40LDE2NC4zeiIvPg0KPHBhdGggY2xhc3M9InN0MyIgZD0iTTkyNy43LDE5N0g1NzkuMWMtNC42LTAuMS05LDEuOC0xMiw1LjJMNTA5LDI1OC4xYy0zLjMsMy03LjYsNC43LTEyLDQuN0gyMzAuNWMtOS41LDAtMTcuMiw3LjctMTcuMiwxNy4ybDAsMA0KCXY0MzAuM2MwLjIsOS4zLDcuOSwxNi44LDE3LjIsMTYuOGg2OTcuMWM5LjMsMCwxNy03LjQsMTcuMi0xNi44VjIxNWMwLjEtMi4zLTAuMy00LjctMS4xLTYuOUM5NDEuMywyMDEuNCw5MzQuOSwxOTcsOTI3LjcsMTk3eiIvPg0KPHBhdGggY2xhc3M9InN0MSIgZD0iTTYyOS45LDI4OC4yYy0xLjEtMC4zLTIuMy0wLjMtMy41LDBjMCwwLTMuOSwwLTUuNiwzbC0xMzYsMTk3LjVjLTEuMiwyLjEtMS4yLDQuOCwwLDYuOWMxLjMsMi40LDMuNyw0LDYuNSw0LjMNCgloODAuNWwtMzUuNiwxMTkuNmMtMC40LDAuNy0wLjYsMS41LTAuNiwyLjJjMCwwLjgsMC4xLDEuNiwwLjQsMi4zYzAuMywwLjcsMC43LDEuNCwxLjMsMS45YzAuNiwwLjYsMS4zLDEsMiwxLjNjMSwwLjQsMiwwLjQsMywwDQoJYzIuNiwwLDMuOSwwLDUuNi0zTDY4OCw0MjMuN3YtNC4zYy0wLjItMy45LTMuNC02LjktNy4zLTYuOWgtODYuMWwzNC45LTExNy41QzYzMS4yLDI5My4yLDYzMS4zLDI5MC4zLDYyOS45LDI4OC4yTDYyOS45LDI4OC4yeiIvPg0KPC9zdmc+DQo="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Azure Storage Blob Data Lake"
    camel.apache.org/kamelet.namespace: "Azure"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Azure Storage Blob Data Lake Source"
    description: Consume files from Azure Storage Blob Data Lake.
    required:
      - accountName
      - clientId
      - clientSecret
      - tenantId
      - fileSystemName
    type: object
    properties:
      accountName:
        title: Account Name
        description: The Azure Storage Blob Data lake account name.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      clientId:
        title: Client Id
        description: The Azure Storage Blob Data lake client Id.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      clientSecret:
        title: Client Secret
        description: The Azure Storage Blob Data lake client secret.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      tenantId:
        title: Tenant Id
        description: The Azure Storage Blob Data lake tenant id.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      fileSystemName:
        title: File System Name
        description: The Azure Storage Blob Data lake File system name.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      delay:
        title: Delay
        description: The number of milliseconds before the next poll of the selected blob.
        type: integer
        default: 500
      credentialType:
        title: Credential Type
        description: Determines the credential strategy to adopt.
        type: string
        enum: ["CLIENT_SECRET", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY", "AZURE_SAS", "SERVICE_CLIENT_INSTANCE"]
        default: "CLIENT_SECRET"
  dataTypes:
    out:
      default: binary
      headers:
        CamelAzureStorageDataLakeFileName:
          title: Azure Storage Datalake File Name
          description: The name of the file retrieved
          type: string
        CamelAzureStorageDataLakeRawHttpHeaders:
          title: Azure Storage Data Lake Raw Http Headers
          description: Non parsed http headers that can be used by the user.
          type: object
        CamelAzureStorageDataLakeAccessTier:
          title: Azure Storage Data Lake File Access Tier
          description: Access tier of file.
          type: object
        CamelAzureStorageDataLakeAccessTierChangeTime:
          title: Azure Storage Data Lake Access Tier Change Time.
          description: Datetime when the access tier of the blob last changed.
          type: object
        CamelAzureStorageDataLakeArchiveStatus:
          title: Azure Storage Data Lake Archive Status
          description: Archive status of file
          type: object
        CamelAzureStorageDataLakeCacheControl:
          title: Azure Storage Data Lake File Cache Control
          description: Cache control specified for the file.
          type: string
        CamelAzureStorageDataLakeContentDisposition:
          title: Azure Storage Data Lake File Content Disposition
          description: Content disposition specified for the file.
          type: string
        CamelAzureStorageDataLakeContentEncoding:
          title: Azure Storage Data Lake File Content Encoding
          description: Content encoding specified for the file.
          type: string
        CamelAzureStorageDataLakeContentLanguage:
          title: Azure Storage Data Lake File Content Language
          description: Content language specified for the file.
          type: string
        CamelAzureStorageDataLakeContentType:
          title: Azure Storage Data Lake File Content Type
          description: Content Type specified for the file.
          type: string
        CamelAzureStorageDataLakeCopyCompletionTime:
          title: Azure Storage Data Lake File Copy Completion time
          description: Conclusion time of the last attempted Copy Blob operation where this file was the destination file.
          type: object
        CamelAzureStorageDataLakeCopyId:
          title: Azure Storage Data Lake File Copy Id
          description: String identifier for this copy operation.
          type: string
        amelAzureStorageDataLakeCopyProgress:
          title: Azure Storage Data Lake File Copy Progress
          description: Contains the number of bytes copied and the total bytes in the source in the last attempted Copy Blob operation where this file was the destination file.
          type: string
        CamelAzureStorageDataLakeCopySource:
          title: Azure Storage Data Lake File Copy Source
          description: URL up to 2 KB in length that specifies the source file or file used in the last attempted Copy Blob operation where this file was the destination file.
          type: string
        CamelAzureStorageDataLakeCopyStatus:
          title: Azure Storage Data Lake File Copy Status
          description: Status of the last copy operation performed on the file.
          type: object
        CamelAzureStorageDataLakeCopyStatusDescription:
          title: Azure Storage Data Lake File Copy Status Description
          description: The description of the copy’s status.
          type: string
        CamelAzureStorageDataLakeCreationTime:
          title: Azure Storage Data Lake File Creation Time.
          description: Creation time of the file.
          type: object
        CamelAzureStorageDataLakeEncryptionKeySha256:
          title: Azure Storage Data Lake File SHA-256 Hash
          description: The SHA-256 hash of the encryption key used to encrypt the file.
          type: string
        CamelAzureStorageDataLakeETag:
          title: Azure Storage Data Lake File E Tag
          description: The E Tag of the file.
          type: string
        CamelAzureStorageDataLakeFileSize:
          title: Azure Storage Data Lake File Size
          description: The File Size
          type: long
        CamelAzureStorageDataLakeLastModified:
          title: Azure Storage Data Lake File Last Modified Date
          description: Datetime when the file was last modified.
          type: object
        CamelAzureStorageDataLakeLeaseDuration:
          title: Azure Storage Data Lake File Lease Duration
          description: Type of lease on the file.
          type: object
        CamelAzureStorageDataLakeLeaseState:
          title: Azure Storage Data Lake File Lease State
          description: State of the lease on the file.
          type: object
        CamelAzureStorageDataLakeLeaseStatus:
          title: Azure Storage Data Lake File Lease Status
          description: Status of the lease on the file.
          type: object
        CamelAzureStorageDataLakeServerEncrypted:
          title: Azure Storage Data Lake File Content Encrypted
          description: Flag indicating if the file’s content is encrypted on the server.
          type: boolean
        CamelAzureStorageDataLakeDownloadLink:
          title: Azure Storage Data Lake File Download Link
          description: The link that can be used to download the file from data lake.
          type: string
      types:
        binary:
          format: "application-octet-stream"
          description: Default binary representation of the object retrieved from the Azure Data Lake.
          mediaType: application/octet-stream
        cloudevents:
          format: "azure-storage-datalake:application-cloudevents"
          description: Data type transformer converts Azure Data Lake consumer response to CloudEvent v1_0 data format. The data type sets Camel specific CloudEvent headers with values extracted from Azure Data Lake consumer response.
          headers:
            CamelCloudEventID:
              title: CloudEvent ID
              description: The Camel exchange id set as event id
              type: string
            CamelCloudEventType:
              title: CloudEvent Type
              description: The event type
              default: "org.apache.camel.event.azure.storage.datalake.consume"
              type: string
            CamelCloudEventSource:
              title: CloudEvent Source
              description: The event source. By default, the Archive Status of the file with prefix "azure.storage.datalake.".
              type: string
            CamelCloudEventSubject:
              title: CloudEvent Subject
              description: The event subject. Usually the Azure Storage Datalake E Tag of file.
              type: string
            CamelCloudEventTime:
              title: CloudEvent Time
              description: The exchange creation timestamp as event time.
              type: string
  dependencies:
    - "camel:azure-storage-datalake"
    - "camel:kamelet"
    - "camel:core"
    - "camel:timer"
  template:
    from:
      uri: "azure-storage-datalake:{{accountName}}/{{fileSystemName}}"
      parameters:
        clientId: "{{clientId}}"
        clientSecret: "{{clientSecret}}"
        tenantId: "{{tenantId}}"
        delay: "{{delay}}"
        credentialType: "{{credentialType}}"
      steps:
        - to: "kamelet:sink"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: azure-storage-files-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny41NTggMHptLjIzNCA1Ny45NjRjMCAzLjM1My0yLjgwNSA2LjIyNy02LjA3OCA2LjIyN0gyOC41MmMtMy4yNzMgMC02LjA3OC0yLjg3NC02LjA3OC02LjIyN1YyMi4yNzZjMC0zLjM1MyAyLjgwNS02LjIyOCA2LjA3OC02LjIyOGgyOS45MjJsOS4zNTEgOS41ODF2MzIuMzM1ek00MS42MSA0Ni40NjdjMC0uNDc5LS4yMzQtLjcxOC0uMjM0LS45NThzLS4yMzQtLjQ3OS0uNDY3LS43MTgtLjIzNC0uMjQtLjQ2OC0uMjRoLS43MDFjLS40NjggMC0uNzAyIDAtLjkzNS4yNHMtLjQ2OC40NzktLjcwMS45NTgtLjIzNC45NTgtLjIzNCAxLjQzN3Y0LjU1MWMwIC43MTkuMjM0IDEuMTk3LjQ2OCAxLjQzNy4yMzQuNDc5LjQ2OC43MTkuNzAxLjcxOS4yMzQuMjQuNDY4LjI0LjkzNS4yNC4yMzQgMCAuNDY4IDAgLjcwMS0uMjRhLjUxLjUxIDAgMCAwIC40NjgtLjQ3OWMuMjM0LS4yNC4yMzQtLjQ3OS40NjctLjcxOCAwLS4yNC4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE5LjIzMy0xLjE5OHYtMy4xMTRjLS40NjctLjI0LS40NjctLjQ3OS0uNDY3LS45NTh6bTEwLjUyLTE4LjY4M2MwLS40NzktLjIzNC0uNzE4LS4yMzQtLjk1OHMtLjIzNC0uNDc5LS40NjgtLjcxOS0uMjM0LS4yNC0uNDY4LS4yNGgtLjcwMWMtLjQ2NyAwLS43MDEgMC0uOTM1LjI0cy0uNDY4LjQ3OS0uNzAyLjk1OC0uMjMzLjk1OC0uMjMzIDEuNDM3djQuNTUxYzAgLjcxOS4yMzMgMS4xOTguNDY3IDEuNDM3LjIzNC40NzkuNDY4LjcxOS43MDEuNzE5LjIzNC4yNC40NjcuMjQuOTM1LjI0LjIzNCAwIC40NjcgMCAuNzAxLS4yNGEuNTEuNTEgMCAwIDAgLjQ2OC0uNDc5Yy4yMzQtLjI0LjIzNC0uNDc5LjQ2OC0uNzE5IDAtLjIzOS4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE4LjIzNC0xLjE5OHYtMy4xMTRjLS4yMzQgMC0uMjM0LS40NzktLjQ2Ny0uOTU4em00LjY3NS04LjM4M0gyOC41MTljLTEuNjM2IDAtMi44MDUgMS4xOTgtMi44MDUgMi44NzR2MzUuNjg5YzAgMS42NzcgMS4xNjkgMi44NzQgMi44MDUgMi44NzRoMzMuMTk1YTIuODggMi44OCAwIDAgMCAyLjgwNS0yLjg3NFYyNy4zMDVoLTcuNDh2LTcuOTA0ek0zNiAyNi41ODd2LS40NzlsLjIzNC0uMjQgMi44MDUtMS45MTZoMi41NzF2MTEuNDk3aDIuMzM4bC4yMzMuMjRjLjIzNC4yMzkgMCAuMjM5IDAgLjIzOXYxLjE5N3MwIC4yNC0uMjMzLjI0aC03LjcxNGwtLjIzNC0uMjR2LTEuNDM3czAtLjI0LjIzNC0uMjRoMi44MDV2LTguODYybC0yLjEwNCAxLjE5OGMtLjIzNCAwLS4yMzQuMjM5LS40NjcuMjM5aC0uMjM0czAtLjIzOS0uMjM0LS4yMzl2LTEuMTk4em04LjE4MiAyNS42MjljLS4yMzMuOTU4LS40NjcgMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjM5LTEuNDAzLjQ3OS0yLjMzOC40NzlzLTEuNjM2LS4yNC0yLjMzOC0uNDc5YTIuMTMgMi4xMyAwIDAgMS0xLjQwMy0xLjQzN2MtLjIzNC0uNzE4LS43MDEtMS40MzctLjcwMS0yLjE1Ni0uMjM0LS45NTgtLjIzNC0xLjkxNi0uMjM0LTIuODc0IDAtMS4xOTggMC0yLjE1Ni4yMzQtMi44NzQuMjM0LS45NTguNDY3LTEuNjc3LjkzNS0yLjE1NnMuOTM1LTEuMTk4IDEuNDAzLTEuNDM3Yy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yMzkgMi4zMzcuNDc5YTIuMTMgMi4xMyAwIDAgMSAxLjQwMyAxLjQzN2MuMjM0LjcxOS43MDEgMS40MzcuNzAxIDIuMTU2LjIzNC45NTguMjM0IDEuOTE2LjIzNCAyLjg3NCAwIDEuMTk4IDAgMi4xNTYtLjIzNCAyLjg3NHptMTAuNTIgMy4zNTN2LjI0czAgLjIzOS0uMjM0LjIzOWgtNy43MTRsLS4yMzQtLjIzOXYtMS40MzdzMC0uMjM5LjIzNC0uMjM5aDIuODA1di04Ljg2MmwtMi4xMDQgMS4xOThjLS4yMzQgMC0uMjM0LjIzOS0uNDY4LjIzOWgtLjIzNHMwLS4yMzktLjIzNC0uMjM5VjQ0Ljc5bC4yMzQtLjI0IDIuODA1LTEuOTE2aDIuNTcydjExLjQ5N2gyLjMzOGwuMjM0LjIzOXYxLjE5OHptLjIzNC0yMi4wMzZjLS4yMzQuOTU4LS40NjggMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjQtMS40MDMuNDc5LTIuMzM4LjQ3OXMtMS42MzYtLjI0LTIuMzM4LS40NzlhMi4xMyAyLjEzIDAgMCAxLTEuNDAzLTEuNDM3Yy0uMjM0LS40NzktLjcwMS0xLjQzNy0uNzAxLTIuMTU2cy0uMjM0LTEuOTE2LS4yMzQtMi44NzRjMC0xLjE5OCAwLTIuMTU2LjIzNC0yLjg3NC4yMzQtLjk1OC40NjgtMS42NzcuOTM1LTIuMTU2LjQ2OC0uNzE4LjkzNS0xLjE5OCAxLjQwMy0xLjQzNy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yNCAyLjMzOC40NzlhMi4xMyAyLjEzIDAgMCAxIDEuNDAzIDEuNDM3Yy4yMzQuNzE4LjcwMSAxLjQzNy43MDEgMi4xNTYuMjM0Ljk1OC4yMzQgMS45MTYuMjM0IDIuODc0IDAgMS4xOTgtLjIzNCAyLjE1Ni0uMjM0IDIuODc0eiIgZmlsbD0iIzAwNzhkNyIgc3Ryb2tlPSJub25lIi8+PC9zeW1ib2w+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Azure Storage Blob"
    camel.apache.org/kamelet.namespace: "Azure"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Azure Storage Files Sink"
    description: Upload data to Azure Storage Files Share.
    required:
      - accountName
      - shareName
    type: object
    properties:
      accountName:
        title: Account Name
        description: The Azure Storage Blob account name.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      shareName:
        title: Share Name
        description: The Azure Storage File Share share name.
        type: string
      sharedKey:
        title: Shared Access Key
        description: The Azure Storage Blob access key.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      credentialType:
        title: Credential Type
        description: Determines the credential strategy to adopt.
        type: string
        enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY", "SHARED_KEY_CREDENTIAL", "AZURE_SAS"]
        default: "SHARED_ACCOUNT_KEY"
      directoryName:
        title: Directory Name
        description: The directory from where the producer will upload the file.
        type: string
        default: "."
  dependencies:
    - "camel:core"
    - "camel:azure-storage-blob"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[file]}"
            steps:
            - setHeader:
                name: CamelFileName
                simple: "${header[file]}"
          - simple: "${header[ce-file]}"
            steps:
            - setHeader:
                name: CamelFileName
                simple: "${header[ce-file]}"
          otherwise:
            steps:
            - setHeader:
                name: CamelFileName
                simple: "${exchangeId}"
      - to:
          uri: "azure-files://{{accountName}}/{{shareName}}/{{directoryName}}"
          parameters:
            sharedKey: "{{?sharedKey}}"
            credentialType: "{{credentialType}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: azure-storage-files-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny41NTggMHptLjIzNCA1Ny45NjRjMCAzLjM1My0yLjgwNSA2LjIyNy02LjA3OCA2LjIyN0gyOC41MmMtMy4yNzMgMC02LjA3OC0yLjg3NC02LjA3OC02LjIyN1YyMi4yNzZjMC0zLjM1MyAyLjgwNS02LjIyOCA2LjA3OC02LjIyOGgyOS45MjJsOS4zNTEgOS41ODF2MzIuMzM1ek00MS42MSA0Ni40NjdjMC0uNDc5LS4yMzQtLjcxOC0uMjM0LS45NThzLS4yMzQtLjQ3OS0uNDY3LS43MTgtLjIzNC0uMjQtLjQ2OC0uMjRoLS43MDFjLS40NjggMC0uNzAyIDAtLjkzNS4yNHMtLjQ2OC40NzktLjcwMS45NTgtLjIzNC45NTgtLjIzNCAxLjQzN3Y0LjU1MWMwIC43MTkuMjM0IDEuMTk3LjQ2OCAxLjQzNy4yMzQuNDc5LjQ2OC43MTkuNzAxLjcxOS4yMzQuMjQuNDY4LjI0LjkzNS4yNC4yMzQgMCAuNDY4IDAgLjcwMS0uMjRhLjUxLjUxIDAgMCAwIC40NjgtLjQ3OWMuMjM0LS4yNC4yMzQtLjQ3OS40NjctLjcxOCAwLS4yNC4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE5LjIzMy0xLjE5OHYtMy4xMTRjLS40NjctLjI0LS40NjctLjQ3OS0uNDY3LS45NTh6bTEwLjUyLTE4LjY4M2MwLS40NzktLjIzNC0uNzE4LS4yMzQtLjk1OHMtLjIzNC0uNDc5LS40NjgtLjcxOS0uMjM0LS4yNC0uNDY4LS4yNGgtLjcwMWMtLjQ2NyAwLS43MDEgMC0uOTM1LjI0cy0uNDY4LjQ3OS0uNzAyLjk1OC0uMjMzLjk1OC0uMjMzIDEuNDM3djQuNTUxYzAgLjcxOS4yMzMgMS4xOTguNDY3IDEuNDM3LjIzNC40NzkuNDY4LjcxOS43MDEuNzE5LjIzNC4yNC40NjcuMjQuOTM1LjI0LjIzNCAwIC40NjcgMCAuNzAxLS4yNGEuNTEuNTEgMCAwIDAgLjQ2OC0uNDc5Yy4yMzQtLjI0LjIzNC0uNDc5LjQ2OC0uNzE5IDAtLjIzOS4yMzQtLjQ3OS4yMzQtLjk1OCAwLS4yMzkgMC0uNzE4LjIzNC0xLjE5OHYtMy4xMTRjLS4yMzQgMC0uMjM0LS40NzktLjQ2Ny0uOTU4em00LjY3NS04LjM4M0gyOC41MTljLTEuNjM2IDAtMi44MDUgMS4xOTgtMi44MDUgMi44NzR2MzUuNjg5YzAgMS42NzcgMS4xNjkgMi44NzQgMi44MDUgMi44NzRoMzMuMTk1YTIuODggMi44OCAwIDAgMCAyLjgwNS0yLjg3NFYyNy4zMDVoLTcuNDh2LTcuOTA0ek0zNiAyNi41ODd2LS40NzlsLjIzNC0uMjQgMi44MDUtMS45MTZoMi41NzF2MTEuNDk3aDIuMzM4bC4yMzMuMjRjLjIzNC4yMzkgMCAuMjM5IDAgLjIzOXYxLjE5N3MwIC4yNC0uMjMzLjI0aC03LjcxNGwtLjIzNC0uMjR2LTEuNDM3czAtLjI0LjIzNC0uMjRoMi44MDV2LTguODYybC0yLjEwNCAxLjE5OGMtLjIzNCAwLS4yMzQuMjM5LS40NjcuMjM5aC0uMjM0czAtLjIzOS0uMjM0LS4yMzl2LTEuMTk4em04LjE4MiAyNS42MjljLS4yMzMuOTU4LS40NjcgMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjM5LTEuNDAzLjQ3OS0yLjMzOC40NzlzLTEuNjM2LS4yNC0yLjMzOC0uNDc5YTIuMTMgMi4xMyAwIDAgMS0xLjQwMy0xLjQzN2MtLjIzNC0uNzE4LS43MDEtMS40MzctLjcwMS0yLjE1Ni0uMjM0LS45NTgtLjIzNC0xLjkxNi0uMjM0LTIuODc0IDAtMS4xOTggMC0yLjE1Ni4yMzQtMi44NzQuMjM0LS45NTguNDY3LTEuNjc3LjkzNS0yLjE1NnMuOTM1LTEuMTk4IDEuNDAzLTEuNDM3Yy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yMzkgMi4zMzcuNDc5YTIuMTMgMi4xMyAwIDAgMSAxLjQwMyAxLjQzN2MuMjM0LjcxOS43MDEgMS40MzcuNzAxIDIuMTU2LjIzNC45NTguMjM0IDEuOTE2LjIzNCAyLjg3NCAwIDEuMTk4IDAgMi4xNTYtLjIzNCAyLjg3NHptMTAuNTIgMy4zNTN2LjI0czAgLjIzOS0uMjM0LjIzOWgtNy43MTRsLS4yMzQtLjIzOXYtMS40MzdzMC0uMjM5LjIzNC0uMjM5aDIuODA1di04Ljg2MmwtMi4xMDQgMS4xOThjLS4yMzQgMC0uMjM0LjIzOS0uNDY4LjIzOWgtLjIzNHMwLS4yMzktLjIzNC0uMjM5VjQ0Ljc5bC4yMzQtLjI0IDIuODA1LTEuOTE2aDIuNTcydjExLjQ5N2gyLjMzOGwuMjM0LjIzOXYxLjE5OHptLjIzNC0yMi4wMzZjLS4yMzQuOTU4LS40NjggMS42NzctLjkzNSAyLjE1Ni0uNDY4LjcxOC0uOTM1IDEuMTk4LTEuNDAzIDEuNDM3LS43MDEuMjQtMS40MDMuNDc5LTIuMzM4LjQ3OXMtMS42MzYtLjI0LTIuMzM4LS40NzlhMi4xMyAyLjEzIDAgMCAxLTEuNDAzLTEuNDM3Yy0uMjM0LS40NzktLjcwMS0xLjQzNy0uNzAxLTIuMTU2cy0uMjM0LTEuOTE2LS4yMzQtMi44NzRjMC0xLjE5OCAwLTIuMTU2LjIzNC0yLjg3NC4yMzQtLjk1OC40NjgtMS42NzcuOTM1LTIuMTU2LjQ2OC0uNzE4LjkzNS0xLjE5OCAxLjQwMy0xLjQzNy43MDEtLjI0IDEuNDAzLS40NzkgMi4zMzgtLjQ3OXMxLjYzNi4yNCAyLjMzOC40NzlhMi4xMyAyLjEzIDAgMCAxIDEuNDAzIDEuNDM3Yy4yMzQuNzE4LjcwMSAxLjQzNy43MDEgMi4xNTYuMjM0Ljk1OC4yMzQgMS45MTYuMjM0IDIuODc0IDAgMS4xOTgtLjIzNCAyLjE1Ni0uMjM0IDIuODc0eiIgZmlsbD0iIzAwNzhkNyIgc3Ryb2tlPSJub25lIi8+PC9zeW1ib2w+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Azure Storage Blob"
    camel.apache.org/kamelet.namespace: "Azure"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Azure Storage File Source"
    description: Consume files from Azure Storage File Shares.
    required:
      - accountName
      - shareName
    type: object
    properties:
      accountName:
        title: Account Name
        description: The Azure Storage File Share account name.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      shareName:
        title: Share Name
        description: The Azure Storage File Share share name.
        type: string
      sharedKey:
        title: Shared Access Key
        description: The Azure Storage Blob access key.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      delay:
        title: Delay
        description: The number of milliseconds before the next poll of the selected blob.
        type: integer
        default: 500
      deleteAfterRead:
        title: Auto-delete Blob 
        description: Specifies to delete blobs after consuming them
        type: boolean
        default: false
      credentialType:
        title: Credential Type
        description: Determines the credential strategy to adopt.
        type: string
        enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY", "SHARED_KEY_CREDENTIAL", "AZURE_SAS"]
        default: "SHARED_ACCOUNT_KEY"
      directoryName:
        title: Directory Name
        description: The directory from where the consumer will start reading files.
        type: string
        default: "."
      recursive:
        title: Recursive Mode 
        description: If a directory, the consumer will look for files in all the sub-directories as well.
        type: boolean
        default: false
  dataTypes:
    out:
      default: binary
      headers:
        CamelFileLength:
          title: Azure Storage Files File Length
          description: A long value containing the file size
          type: long
        CamelFileLastModified:
          title: Azure Storage Files File Last Modified Date
          description: A Long value containing the last modified timestamp of the file.
          type: long
        CamelFileNameOnly:
          title: Azure Storage Files File Name Only
          description: Only the file name (the name with no leading paths).
          type: string
        CamelFileName:
          title: Azure Storage Files File Name 
          description: Name of the consumed file as a relative file path with offset from the starting directory configured on the endpoint.
          type: string
        CamelFileNameConsumed:
          title: Azure Storage Files Consumed File Name
          description: The name of the file that has been consumed.
          type: string
        CamelFileAbsolute:
          title: Azure Storage Files Consumed Absolute Format
          description: A boolean option specifying whether the consumed file denotes an absolute path or not.
          type: boolean
        CamelFileAbsolutePath:
          title: Azure Storage Files Consumed Absolute Path
          description: The absolute path to the file. For relative files this path holds the relative path instead.
          type: string
        CamelFileExtendedAttributes:
          title: Azure Storage Files Extended Attributes
          description: Additional Metadata of the file of type Map<String,Object>
          type: object
        CamelFileContentType:
          title: Content Type
          description: The content type of the retrieved object.
          default: application/octet-stream
          type: string
        CamelFilePath:
          title: Azure Storage Files File Path
          description: The file path. For relative files this is the starting directory the relative filename. For absolute files this is the absolute path.
          type: string
        CamelFileRelativePath:
          title: Azure Storage Files File Relative Path
          description: The relative path.
          type: string
        CamelFileParent:
          title: Azure Storage Files File Relative Path
          description: The parent path.
          type: string
      types:
        binary:
          format: "application-octet-stream"
          description: Default binary representation of the File retrieved from Azure Storage Files.
          mediaType: application/octet-stream
        cloudevents:
          format: "azure-files:application-cloudevents"
          description: Data type transformer converts Azure Storage Files poll response to CloudEvent v1_0 data format. The data type sets Camel specific CloudEvent headers with values extracted from Azure Storage Files poll response.
          headers:
            CamelCloudEventID:
              title: CloudEvent ID
              description: The Camel exchange id set as event id
              type: string
            CamelCloudEventType:
              title: CloudEvent Type
              description: The event type
              default: "org.apache.camel.event.azure.storage.files.poll"
              type: string
            CamelCloudEventSource:
              title: CloudEvent Source
              description: The event source. By default, the Host name of the share with prefix "azure.storage.files.".
              type: string
            CamelCloudEventSubject:
              title: CloudEvent Subject
              description: The event subject. Usually the Azure Storage Files file name.
              type: string
            CamelCloudEventTime:
              title: CloudEvent Time
              description: The exchange creation timestamp as event time.
              type: string       
  dependencies:
    - "camel:azure-files"
    - "camel:kamelet"
    - "camel:core"
    - "camel:timer"
  template:
    from:
      uri: "azure-files:{{accountName}}/{{shareName}}/{{directoryName}}"
      parameters:
        sharedKey: "{{?sharedKey}}"
        credentialType: "{{credentialType}}"
        delay: "{{delay}}"
        delete: "{{deleteAfterRead}}"
        recursive: "{{recursive}}"
      steps:
        - to: "kamelet:sink"

---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: azure-storage-queue-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNzAuMDUzIDM0LjYzNEg1MC41OGw5LjczNiA3LjgwNXptLTM5LjQyIDEwLjQ4OGMtLjIzOCAwLS40NzUgMC0uNzEzLS4yNDRsLTkuMDI0LTcuMzE3djExLjk1MWgyMC42NlYzNy4zMTdsLTkuNzM2IDcuNTYxYy0uNDc1LjI0NC0uOTUuMjQ0LTEuMTg3LjI0NHptMjkuNjgzIDBjLS4yMzggMC0uNzEzIDAtLjcxMy0uMjQ0bC05LjI2MS03LjMxN3YxMS45NTFoMjAuNjZWMzcuMzE3bC05LjczNiA3LjU2MWMtLjQ3NS4yNDQtLjcxMy4yNDQtLjk1LjI0NHpNNjcuNjc4IDBIMjIuNTU5TDAgNDBsMjIuNTU5IDQwSDY3LjQ0TDkwIDQwIDY3LjY3OCAwem03LjgzNiA1Ny4wNzNIMTQuMDExYy0xLjkgMC0zLjMyNS0xLjcwNy0zLjMyNS0zLjY1OVYyOS4yNjhjMC0xLjk1MSAxLjQyNS0zLjY1OCAzLjMyNS0zLjY1OGg2MS41MDRjLjcxMyAwIDEuOSAwIDkuOTc0IDE1LjYxbC4yMzcuNzMyLS4yMzcuNzMyYy04LjA3NCAxNC4zOS05LjI2MSAxNC4zOS05Ljk3NCAxNC4zOXpNNDAuMzcgMzQuNjM0SDIwLjY2bDkuNzM2IDcuODA1em0tMjYuMzU5LTYuMzQxYy0uNDc1IDAtLjk1LjQ4OC0uOTUuOTc2djI0LjE0NmMwIC40ODguNDc1IDEuMjIuOTUgMS4yMkg3NS4wNGMxLjE4OC0xLjIyIDQuNzQ5LTcuMDczIDcuODM3LTEyLjY4My0zLjA4Ny02LjA5OC02Ljg4Ni0xMi40MzktNy44MzctMTMuNjU5SDE0LjAxMXptMjkuOTIxIDIyLjQzOWMwIC43MzItLjcxMyAxLjQ2My0xLjY2MyAxLjQ2M0gxOC45OThjLS43MTMgMC0uOTUtLjczMi0uOTUtMS40NjNWMzIuOTI3YzAtLjczMi4yMzgtLjk3Ni45NS0uOTc2SDQyLjI3Yy43MTIgMCAxLjY2My4yNDQgMS42NjMuOTc2djE3LjgwNXptMjkuMjA5IDBjMCAuNzMyLS40NzUgMS40NjMtMS4xODggMS40NjNINDguOTE5Yy0uNzEyIDAtMS4xODctLjczMi0xLjE4Ny0xLjQ2M1YzMi45MjdjMC0uNzMyLjQ3NS0uOTc2IDEuMTg3LS45NzZoMjMuMDM0Yy43MTMgMCAxLjE4OC4yNDQgMS4xODguOTc2djE3LjgwNXoiIGZpbGw9IiMwMDc4ZDciIHN0cm9rZT0ibm9uZSIvPjwvc3ltYm9sPjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Azure Storage Queue"
    camel.apache.org/kamelet.namespace: "Azure"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Azure Storage Queue Sink"
    description: Send events to Azure Storage queues.
    required:
      - accountName
      - queueName
      - accessKey
    type: object
    properties:
      accountName:
        title: Account Name
        description: The Azure Storage Queue account name.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      queueName:
        title: Queue Name
        description: The Azure Storage Queue container name.
        type: string
      accessKey:
        title: Access Key
        description: The Azure Storage Queue access key.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      credentialType:
        title: Credential Type
        description: Determines the credential strategy to adopt.
        type: string
        enum: ["SHARED_ACCOUNT_KEY", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY"]
        default: "SHARED_ACCOUNT_KEY"
  dependencies:
    - "camel:core"
    - "camel:azure-storage-queue"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[expiration]}"
            steps:
            - setHeader:
                name: CamelAzureStorageQueueTimeToLive
                simple: "${header[expiration]}"
          - simple: "${header[ce-expiration]}"
            steps:
            - setHeader:
                name: CamelAzureStorageQueueTimeToLive
                simple: "${header[ce-expiration]}"
      - to:
          uri: "azure-storage-queue://{{accountName}}/{{queueName}}"
          parameters:
            accessKey: "{{accessKey}}"
            credentialType: "{{credentialType}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: azure-storage-queue-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNzAuMDUzIDM0LjYzNEg1MC41OGw5LjczNiA3LjgwNXptLTM5LjQyIDEwLjQ4OGMtLjIzOCAwLS40NzUgMC0uNzEzLS4yNDRsLTkuMDI0LTcuMzE3djExLjk1MWgyMC42NlYzNy4zMTdsLTkuNzM2IDcuNTYxYy0uNDc1LjI0NC0uOTUuMjQ0LTEuMTg3LjI0NHptMjkuNjgzIDBjLS4yMzggMC0uNzEzIDAtLjcxMy0uMjQ0bC05LjI2MS03LjMxN3YxMS45NTFoMjAuNjZWMzcuMzE3bC05LjczNiA3LjU2MWMtLjQ3NS4yNDQtLjcxMy4yNDQtLjk1LjI0NHpNNjcuNjc4IDBIMjIuNTU5TDAgNDBsMjIuNTU5IDQwSDY3LjQ0TDkwIDQwIDY3LjY3OCAwem03LjgzNiA1Ny4wNzNIMTQuMDExYy0xLjkgMC0zLjMyNS0xLjcwNy0zLjMyNS0zLjY1OVYyOS4yNjhjMC0xLjk1MSAxLjQyNS0zLjY1OCAzLjMyNS0zLjY1OGg2MS41MDRjLjcxMyAwIDEuOSAwIDkuOTc0IDE1LjYxbC4yMzcuNzMyLS4yMzcuNzMyYy04LjA3NCAxNC4zOS05LjI2MSAxNC4zOS05Ljk3NCAxNC4zOXpNNDAuMzcgMzQuNjM0SDIwLjY2bDkuNzM2IDcuODA1em0tMjYuMzU5LTYuMzQxYy0uNDc1IDAtLjk1LjQ4OC0uOTUuOTc2djI0LjE0NmMwIC40ODguNDc1IDEuMjIuOTUgMS4yMkg3NS4wNGMxLjE4OC0xLjIyIDQuNzQ5LTcuMDczIDcuODM3LTEyLjY4My0zLjA4Ny02LjA5OC02Ljg4Ni0xMi40MzktNy44MzctMTMuNjU5SDE0LjAxMXptMjkuOTIxIDIyLjQzOWMwIC43MzItLjcxMyAxLjQ2My0xLjY2MyAxLjQ2M0gxOC45OThjLS43MTMgMC0uOTUtLjczMi0uOTUtMS40NjNWMzIuOTI3YzAtLjczMi4yMzgtLjk3Ni45NS0uOTc2SDQyLjI3Yy43MTIgMCAxLjY2My4yNDQgMS42NjMuOTc2djE3LjgwNXptMjkuMjA5IDBjMCAuNzMyLS40NzUgMS40NjMtMS4xODggMS40NjNINDguOTE5Yy0uNzEyIDAtMS4xODctLjczMi0xLjE4Ny0xLjQ2M1YzMi45MjdjMC0uNzMyLjQ3NS0uOTc2IDEuMTg3LS45NzZoMjMuMDM0Yy43MTMgMCAxLjE4OC4yNDQgMS4xODguOTc2djE3LjgwNXoiIGZpbGw9IiMwMDc4ZDciIHN0cm9rZT0ibm9uZSIvPjwvc3ltYm9sPjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Azure Storage Queue"
    camel.apache.org/kamelet.namespace: "Azure"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Azure Storage Queue Source"
    description: Receive events from Azure Storage queues.
    required:
      - accountName
      - queueName
      - accessKey
    type: object
    properties:
      accountName:
        title: Account Name
        description: The Azure Storage Queue account name.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      queueName:
        title: Queue Name
        description: The Azure Storage Queue container name.
        type: string
      accessKey:
        title: Access Key
        description: The Azure Storage Queue access key.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      maxMessages:
        title: Maximum Messages
        description: The maximum number of messages to get. You can specify a value between 1 and 32. The default is 1 (one message). If there are fewer than the maximum number of messages in the queue, then all the messages are returned.
        type: integer
        default: 1
      credentialType:
        title: Credential Type
        description: Determines the credential strategy to adopt.
        type: string
        enum: ["SHARED_ACCOUNT_KEY", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY"]
        default: "SHARED_ACCOUNT_KEY"
  dataTypes:
    out:
      default: text
      headers:
        CamelAzureStorageQueueMessageId:
          title: Azure Storage Queue Message Id
          description: The id of the message.
          type: string
        CamelAzureStorageQueueInsertionTime:
          title: Azure Storage Queue Message Insertion Time
          description: The time the Message was inserted into the Queue.
          type: OffsetDateTime
        CamelAzureStorageQueueExpirationTime:
          title: Azure Storage Queue Message Expiration Time
          description: The time that the Message will expire and be automatically deleted.
          type: OffsetDateTime
        CamelAzureStorageQueuePopReceipt:
          title: Pop Receipt
          description: Unique identifier that must match for the message to be deleted or updated. If deletion fails using this pop receipt then the message has been dequeued by another client.
          type: string
        CamelAzureStorageQueueTimeNextVisible:
          title: Azure Storage Queue Message Time Next Visible
          description: The time that the message will again become visible in the Queue.
          type: OffsetDateTime
        CamelAzureStorageQueueDequeueCount:
          title: Dequeue Count
          description: The number of times the message has been dequeued.
          type: long
      types:
        text:
          format: "text-plain"
          description: Default text representation of the Message dequeued from the queue.
          mediaType: text/plain
        cloudevents:
          format: "azure-storage-queue:application-cloudevents"
          description: Output data type represents Azure Storage Queue receive messages operation as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange.
          headers:
            CamelCloudEventID:
              title: CloudEvent ID
              description: The Camel exchange id set as event id.
              type: string
            CamelCloudEventType:
              title: CloudEvent Type
              description: The event type.
              default: "org.apache.camel.event.azure.storage.queue.receiveMessages"
              type: string
            CamelCloudEventSource:
              title: CloudEvent Source
              description: The event source. By default, the Message Id of the message received with prefix "azure.storage.queue.".
              type: string
            CamelCloudEventSubject:
              title: CloudEvent Subject
              description: The event subject. Usually the Pop receipt of the message dequeued.
              type: string
            CamelCloudEventTime:
              title: CloudEvent Time
              description: The exchange creation timestamp as event time.
              type: string
  dependencies:
    - "camel:azure-storage-queue"
    - "camel:kamelet"
    - "camel:core"
  template:
    from:
      uri: "azure-storage-queue://{{accountName}}/{{queueName}}"
      parameters:
        accessKey: "{{accessKey}}"
        maxMessages: "{{maxMessages}}"
        credentialType: "{{credentialType}}"
      steps:
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: bitcoin-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PCEtLSBDcmVhdGVkIHdpdGggSW5rc2NhcGUgKGh0dHA6Ly93d3cuaW5rc2NhcGUub3JnLykgLS0+CjxzdmcgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iNjQiIHdpZHRoPSI2NCIgdmVyc2lvbj0iMS4xIiB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwNjMwODc2LC0wLjAwMzAxOTg0KSI+CjxwYXRoIGZpbGw9IiNmNzkzMWEiIGQ9Im02My4wMzMsMzkuNzQ0Yy00LjI3NCwxNy4xNDMtMjEuNjM3LDI3LjU3Ni0zOC43ODIsMjMuMzAxLTE3LjEzOC00LjI3NC0yNy41NzEtMjEuNjM4LTIzLjI5NS0zOC43OCw0LjI3Mi0xNy4xNDUsMjEuNjM1LTI3LjU3OSwzOC43NzUtMjMuMzA1LDE3LjE0NCw0LjI3NCwyNy41NzYsMjEuNjQsMjMuMzAyLDM4Ljc4NHoiLz4KPHBhdGggZmlsbD0iI0ZGRiIgZD0ibTQ2LjEwMywyNy40NDRjMC42MzctNC4yNTgtMi42MDUtNi41NDctNy4wMzgtOC4wNzRsMS40MzgtNS43NjgtMy41MTEtMC44NzUtMS40LDUuNjE2Yy0wLjkyMy0wLjIzLTEuODcxLTAuNDQ3LTIuODEzLTAuNjYybDEuNDEtNS42NTMtMy41MDktMC44NzUtMS40MzksNS43NjZjLTAuNzY0LTAuMTc0LTEuNTE0LTAuMzQ2LTIuMjQyLTAuNTI3bDAuMDA0LTAuMDE4LTQuODQyLTEuMjA5LTAuOTM0LDMuNzVzMi42MDUsMC41OTcsMi41NSwwLjYzNGMxLjQyMiwwLjM1NSwxLjY3OSwxLjI5NiwxLjYzNiwyLjA0MmwtMS42MzgsNi41NzFjMC4wOTgsMC4wMjUsMC4yMjUsMC4wNjEsMC4zNjUsMC4xMTctMC4xMTctMC4wMjktMC4yNDItMC4wNjEtMC4zNzEtMC4wOTJsLTIuMjk2LDkuMjA1Yy0wLjE3NCwwLjQzMi0wLjYxNSwxLjA4LTEuNjA5LDAuODM0LDAuMDM1LDAuMDUxLTIuNTUyLTAuNjM3LTIuNTUyLTAuNjM3bC0xLjc0Myw0LjAxOSw0LjU2OSwxLjEzOWMwLjg1LDAuMjEzLDEuNjgzLDAuNDM2LDIuNTAzLDAuNjQ2bC0xLjQ1Myw1LjgzNCwzLjUwNywwLjg3NSwxLjQzOS01Ljc3MmMwLjk1OCwwLjI2LDEuODg4LDAuNSwyLjc5OCwwLjcyNmwtMS40MzQsNS43NDUsMy41MTEsMC44NzUsMS40NTMtNS44MjNjNS45ODcsMS4xMzMsMTAuNDg5LDAuNjc2LDEyLjM4NC00LjczOSwxLjUyNy00LjM2LTAuMDc2LTYuODc1LTMuMjI2LTguNTE1LDIuMjk0LTAuNTI5LDQuMDIyLTIuMDM4LDQuNDgzLTUuMTU1em0tOC4wMjIsMTEuMjQ5Yy0xLjA4NSw0LjM2LTguNDI2LDIuMDAzLTEwLjgwNiwxLjQxMmwxLjkyOC03LjcyOWMyLjM4LDAuNTk0LDEwLjAxMiwxLjc3LDguODc4LDYuMzE3em0xLjA4Ni0xMS4zMTJjLTAuOTksMy45NjYtNy4xLDEuOTUxLTkuMDgyLDEuNDU3bDEuNzQ4LTcuMDFjMS45ODIsMC40OTQsOC4zNjUsMS40MTYsNy4zMzQsNS41NTN6Ii8+CjwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Bitcoin"
    camel.apache.org/kamelet.namespace: "Bitcoin"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Bitcoin Source"
    description: Provides a feed of the value of the Bitcoin compared to USDT using the Binance service.
    type: object
    properties:
      period:
        title: Period between Updates
        description: The interval between updates in milliseconds.
        type: integer
        default: 10000
  types:
    out:
      mediaType: application/json  
      schema:
        type: object
        properties:
          currencyPair:
            type: string
          open:
            type: number
          last:
            type: number
          bid:
            type: number
          ask:
            type: number
          high:
            type: number
          low:
            type: number
          vwap:
            type: number
          volume:
            type: number
          quoteVolume:
            type: number
          bidSize:
            type: number
          askSize:
            type: number
  dependencies:
    - "camel:xchange"
    - "camel:kamelet"
    - "camel:jackson"
    - "camel:timer"
  template:
    from:
      uri: "timer:update"
      parameters:
        period: "{{period}}"
      steps:
      - to: "xchange:binance?service=marketdata&method=ticker&currencyPair=BTC/USDT"
      - marshal:
          json: {}
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: caffeine-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 4724 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Caffeine"
    camel.apache.org/kamelet.namespace: "Cache"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Caffeine Action"
    description: Perform operations on a caffeine cache
    required:
      - cacheName
    type: object
    properties:
      cacheName:
        title: Cache name
        description: The name of the cache we want to use
        type: string
        default: caffeine-cache
  dependencies:
    - "camel:core"
    - "camel:caffeine"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[caffeine-key]}"
            steps:
            - setHeader:
                name: CamelCaffeineKey
                simple: "${header[caffeine-key]}"
          - simple: "${header[ce-caffeinekey]}"
            steps:
            - setHeader:
                name: CamelCaffeineKey
                simple: "${header[ce-caffeinekey]}"
          otherwise:
            steps:
            - setHeader:
                name: CamelCaffeineKey
                simple: "${body}"
      - choice:
          when:
          - simple: "${header[caffeine-operation]}"
            steps:
            - setHeader:
                name: CamelCaffeineAction
                simple: "${header[caffeine-operation]}"
          - simple: "${header[ce-caffeineoperation]}"
            steps:
            - setHeader:
                name: CamelCaffeineAction
                simple: "${header[ce-caffeineoperation]}"
          otherwise:
            steps:
            - setHeader:
                name: CamelCaffeineAction
                constant: "GET"
      - to:
          uri: "caffeine-cache:{{cacheName}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: cassandra-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 7036 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Cassandra"
    camel.apache.org/kamelet.namespace: "Nosql"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Cassandra Sink"
    description: Send data to an Apache Cassandra cluster.
    required:
      - connectionHost
      - connectionPort
      - keyspace
      - query
    type: object
    properties:
      connectionHost:
        title: Connection Host
        description: The hostname(s) for the Cassandra server(s). Use a comma to separate multiple hostnames.
        type: string
        example: localhost
      connectionPort:
        title: Connection Port
        description: The port number(s) of the cassandra server(s). Use a comma to separate multiple port numbers.
        type: string
        example: 9042
      keyspace:
        title: Keyspace 
        description: The keyspace to use.
        type: string
        example: customers
      username:
        title: Username
        description: The username for accessing a secured Cassandra cluster.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password for accessing a secured Cassandra cluster.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      consistencyLevel:
        title: Consistency Level
        description: The consistency level to use.
        type: string
        default: ANY
        enum: ["ANY", "ONE", "TWO", "THREE", "QUORUM", "ALL", "LOCAL_QUORUM", "EACH_QUORUM", "LOCAL_ONE"]
      prepareStatements:
        title: Prepare Statements
        description: If true, specifies to use PreparedStatements as the query. If false, specifies to use regular Statements as the query.
        type: boolean
        default: true
      query:
        title: Query
        description: The query to execute against the Cassandra cluster table.
        type: string
      extraTypeCodecs:
        title: Extra Type Codecs
        description: To use a specific comma separated list of Extra Type codecs. 
        type: string
        enum: ["BLOB_TO_ARRAY", "BOOLEAN_LIST_TO_ARRAY", "BYTE_LIST_TO_ARRAY", "SHORT_LIST_TO_ARRAY", "INT_LIST_TO_ARRAY", "LONG_LIST_TO_ARRAY", "FLOAT_LIST_TO_ARRAY", "DOUBLE_LIST_TO_ARRAY", "TIMESTAMP_UTC", "TIMESTAMP_MILLIS_SYSTEM", "TIMESTAMP_MILLIS_UTC", "ZONED_TIMESTAMP_SYSTEM", "ZONED_TIMESTAMP_UTC", "ZONED_TIMESTAMP_PERSISTED", "LOCAL_TIMESTAMP_SYSTEM", "LOCAL_TIMESTAMP_UTC"]
      jsonPayload:
        title: JSON Payload
        description: If we want to transform the payload in json or not
        type: boolean
        default: true
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:cassandraql"
  - "camel:core"
  template:
    beans:
      - name: local-sql-cassandraql-sink
        type: "#class:org.apache.camel.component.cassandra.CassandraComponent"
        properties:
          autowiredEnabled: "false"
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          precondition: true
          when:
            - simple: '${properties:jsonPayload:true}'
              steps:
                - unmarshal:
                    json: 
                      library: Jackson
                      useList: true
      - to: 
          uri: "{{local-sql-cassandraql-sink}}://{{connectionHost}}:{{connectionPort}}/{{keyspace}}"
          parameters:
            username: "{{?username}}"
            password: "{{?password}}"
            prepareStatements: "{{prepareStatements}}"
            consistencyLevel: "{{consistencyLevel}}"
            cql: "{{query}}"
            extraTypeCodecs: "{{?extraTypeCodecs}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: cassandra-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 7036 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Cassandra"
    camel.apache.org/kamelet.namespace: "Nosql"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Cassandra Source"
    description: Send a query to an Apache Cassandra cluster table.
    required:
      - connectionHost
      - connectionPort
      - keyspace
      - query
    type: object
    properties:
      connectionHost:
        title: Connection Host
        description: The hostname(s) for the Cassandra server(s). Use a comma to separate multiple hostnames.
        type: string
        example: localhost
      connectionPort:
        title: Connection Port
        description: The port number(s) of the cassandra server(s). Use a comma to separate multiple port numbers.
        type: string
        example: 9042
      keyspace:
        title: Keyspace 
        description: The keyspace to use.
        type: string
        example: customers
      username:
        title: Username
        description: The username for accessing a secured Cassandra cluster.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password for accessing a secured Cassandra cluster.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      resultStrategy:
        title: Result Strategy
        description: The strategy to convert the result set of the query. 
        type: string
        default: ALL
        enum: ["ALL", "ONE", "LIMIT_10", "LIMIT_100"]
      consistencyLevel:
        title: Consistency Level
        description: The consistency level to use.
        type: string
        default: QUORUM
        enum: ["ONE", "TWO", "THREE", "QUORUM", "ALL", "LOCAL_QUORUM", "EACH_QUORUM", "SERIAL", "LOCAL_SERIAL", "LOCAL_ONE"]
      query:
        title: Query
        description: The query to execute against the Cassandra cluster table.
        type: string
      extraTypeCodecs:
        title: Extra Type Codecs
        description: To use a specific comma separated list of Extra Type codecs. 
        type: string
        enum: ["BLOB_TO_ARRAY", "BOOLEAN_LIST_TO_ARRAY", "BYTE_LIST_TO_ARRAY", "SHORT_LIST_TO_ARRAY", "INT_LIST_TO_ARRAY", "LONG_LIST_TO_ARRAY", "FLOAT_LIST_TO_ARRAY", "DOUBLE_LIST_TO_ARRAY", "TIMESTAMP_UTC", "TIMESTAMP_MILLIS_SYSTEM", "TIMESTAMP_MILLIS_UTC", "ZONED_TIMESTAMP_SYSTEM", "ZONED_TIMESTAMP_UTC", "ZONED_TIMESTAMP_PERSISTED", "LOCAL_TIMESTAMP_SYSTEM", "LOCAL_TIMESTAMP_UTC"]
  types:
    out:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:cassandraql"
  template:
    beans:
      - name: local-sql-cassandraql-source
        type: "#class:org.apache.camel.component.cassandra.CassandraComponent"
        properties:
          autowiredEnabled: "false"
    from:
      uri: "{{local-sql-cassandraql-source}}://{{connectionHost}}:{{connectionPort}}/{{keyspace}}"
      parameters:
        username: "{{?username}}"
        password: "{{?password}}"
        cql: "{{query}}"
        consistencyLevel: "{{consistencyLevel}}"
        resultSetConversionStrategy: "{{resultStrategy}}"
        extraTypeCodecs: "{{?extraTypeCodecs}}"
      steps:
      - marshal:
          json: {}
      - to: "kamelet:sink"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: ceph-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 4928 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Ceph"
    camel.apache.org/kamelet.namespace: "Cloud"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Ceph Sink"
    description: Upload data to an Ceph Bucket managed by a Object Storage Gateway.
    required:
      - cephUrl
      - accessKey
      - secretKey
      - bucketName
      - zoneGroup
    type: object
    properties:
      bucketName:
        title: Bucket Name
        description: The Ceph Bucket name.
        type: string
      accessKey:
        title: Access Key
        description: The access key.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      zoneGroup:
        title: Bucket Zone Group
        description: The bucket zone group.
        type: string
      autoCreateBucket:
        title: Autocreate Bucket
        description: Specifies to automatically create the bucket.
        type: boolean
        default: false
      cephUrl:
        title: Ceph Url Address
        description: Set the Ceph Object Storage Address Url.
        type: string
        example: "http://ceph-storage-address.com"
      keyName:
        title: Key Name
        description: The key name for saving an element in the bucket.
        type: string
  dependencies:
    - "camel:core"
    - "camel:aws2-s3"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[file]}"
            steps:
            - setHeader:
                name: CamelAwsS3Key
                simple: "${header[file]}"
          - simple: "${header[ce-file]}"
            steps:
            - setHeader:
                name: CamelAwsS3Key
                simple: "${header[ce-file]}"
          - simple: "'{{?keyName}}' == ''"
            steps:
            - setHeader:
                name: CamelAwsS3Key
                simple: "${exchangeId}"
      - to:
          uri: "aws2-s3:{{bucketName}}"
          parameters:
            secretKey: "{{?secretKey}}"
            accessKey: "{{?accessKey}}"
            region: "{{zoneGroup}}"
            autoCreateBucket: "{{autoCreateBucket}}"
            uriEndpointOverride: "{{?cephUrl}}"
            overrideEndpoint: "true"
            keyName: "{{?keyName}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: ceph-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 4928 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Ceph"
    camel.apache.org/kamelet.namespace: "Cloud"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Ceph Source"
    description: Receive data from an Ceph Bucket, managed by a Object Storage Gateway.
    required:
      - cephUrl
      - accessKey
      - secretKey
      - bucketName
      - zoneGroup
    type: object
    properties:
      bucketName:
        title: Bucket Name
        description: The Ceph Bucket name.
        type: string
      deleteAfterRead:
        title: Auto-delete Objects
        description: Specifies to delete objects after consuming them.
        type: boolean
        default: true
      accessKey:
        title: Access Key
        description: The access key.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      zoneGroup:
        title: Bucket Zone Group
        description: The bucket zone group.
        type: string
      autoCreateBucket:
        title: Autocreate Bucket
        description: Specifies to automatically create the bucket.
        type: boolean
        default: false
      includeBody:
        title: Include Body
        description: If true, the exchange is consumed and put into the body and closed. If false, the Object stream is put raw into the body and the headers are set with the object metadata.
        type: boolean
        default: true
      prefix:
        title: Prefix
        description: The bucket prefix to consider while searching.
        type: string
        example: 'folder/'
      ignoreBody:
        title: Ignore Body
        description: If true, the Object body is ignored. Setting this to true overrides any behavior defined by the `includeBody` option. If false, the object is put in the body.
        type: boolean
        default: false
      cephUrl:
        title: Ceph Url Address
        description: Set the Ceph Object Storage Address Url.
        type: string
        example: "http://ceph-storage-address.com"
      delay:
        title: Delay
        description: The number of milliseconds before the next poll of the selected bucket.
        type: integer
        default: 500
  dependencies:
    - "camel:aws2-s3"
    - "camel:kamelet"
  template:
    from:
      uri: "aws2-s3:{{bucketName}}"
      parameters:
        autoCreateBucket: "{{autoCreateBucket}}"
        secretKey: "{{?secretKey}}"
        accessKey: "{{?accessKey}}"
        region: "{{zoneGroup}}"
        includeBody: "{{includeBody}}"
        ignoreBody: "{{ignoreBody}}"
        deleteAfterRead: "{{deleteAfterRead}}"
        prefix: "{{?prefix}}"
        uriEndpointOverride: "{{cephUrl}}"
        overrideEndpoint: "true"
        delay: "{{delay}}"
      steps:
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: chuck-norris-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: data:image/svg+xml;base64,[encoded data, 8704 characters]
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Chuck Norris"
    camel.apache.org/kamelet.namespace: "Dataset"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Chuck Norris Source"
    description: Gets periodically Chuck Norris jokes
    type: object
    properties:
      period:
        title: Period
        description: The interval (msec) to wait before getting the next joke
        type: integer
        default: 10000
  types:
    out:
      mediaType: text/plain
  dependencies:
    - "camel:kamelet"
    - "camel:timer"
    - "camel:http"
    - "camel:jsonpath"
  template:
    from:
      uri: "timer:chuck"
      parameters:
        period: "{{period}}"
      steps:
        - to: "https://api.chucknorris.io/jokes/random"
        - removeHeaders:
            pattern: '*'
        - setBody:
            jsonpath: "$.value"
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: chunk-template-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Chunk Template Action"
    description: Apply a Chunk Template.
    required:
      - template
    type: object
    properties:
      template:
        title: Template
        description: The inline template
        type: binary
  dependencies:
  - "camel:chunk"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "chunk:"
          parameters:
            resourceUri: "base64:{{template}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: couchbase-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNjguMzQzIDY4LjM0MyIgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHVzZSB4bGluazpocmVmPSIjQSIgeD0iMi4xNzEiIHk9IjIuMTcxIi8+PHN5bWJvbCBpZD0iQSIgb3ZlcmZsb3c9InZpc2libGUiPjxwYXRoIGQ9Ik0zMi4wMDIgMEMxNC4zMzEuMDAyLjAwNSAxNC4zMjYgMCAzMS45OThjLjAwNSAxNy42NyAxNC4zMjggMzEuOTkzIDMxLjk5OCAzMS45OTggMTcuNjctLjAwNSAzMS45OTMtMTQuMzI4IDMxLjk5OC0zMS45OThDNjMuOTkxIDE0LjMzIDQ5LjY3LjAwNyAzMi4wMDIgMHptMjEuNjA2IDM3LjYwOWMwIDEuOTMzLTEuMTEyIDMuNjI2LTMuMjg4IDQuMDEzLTMuNzcuNjc4LTExLjcgMS4wNjQtMTguMzE4IDEuMDY0cy0xNC41NDgtLjQzNC0xOC4zMTgtMS4wNjRjLTEuOTY0LS4yOTQtMy4zODUtMi4wMjktMy4yODgtNC4wMTNWMjUuMTM2YzAtMS45MzMgMS40OTgtMy43MjIgMy4yODgtNC4wMTMgMS4xMTItLjE5NSAzLjcyMi0uNDM0IDUuNzU0LS40MzQuNzczIDAgMS40MDMuNTgyIDEuNDAzIDEuNDk4djguNzUxbDExLjIxMy0uMjQzIDExLjIxMy4yNDN2LTguNzAzYzAtLjg2OS42My0xLjQ5OCAxLjQwMy0xLjQ5OCAyLjAyOCAwIDQuNjQ3LjE5NiA1Ljc1NC40MzQgMS44MzcuMjkxIDMuMjg4IDIuMDg1IDMuMjg4IDQuMDEzbC0uMDk2IDEyLjQ3M3oiIHN0cm9rZT0ibm9uZSIgZmlsbD0iI2VkMjIyNiIgZmlsbC1ydWxlPSJub256ZXJvIi8+PC9zeW1ib2w+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Couchbase"
    camel.apache.org/kamelet.namespace: "Nosql"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Couchbase Sink"
    description: Send documents to Couchbase.
    required:
      - protocol
      - couchbaseHostname
      - bucket
    type: object
    properties:
      protocol:
        title: Protocol
        description: The protocol to use
        type: string
      couchbaseHostname:
        title: Hostname
        description: The hostname to use
        type: string
      couchbasePort:
        title: Port
        description: The port to use
        type: integer
        default: 8091
      bucket:
        title: Bucket
        description: The bucket to use
        type: string
      username:
        title: Username
        description: Username to connect to Couchbase.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: Password to connect to Couchbase.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      startingId:
        title: Starting Id
        description: The starting id
        type: integer
        default: 1
      autoStartId:
        title: Auto Start Id
        description: Auto Start Id or not
        type: boolean
        default: true
  dependencies:
    - "camel:couchbase"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "couchbase:{{protocol}}://{{couchbaseHostname}}:{{couchbasePort}}"
          parameters:
            bucket: "{{bucket}}"
            autoStartIdForInserts: "{{autoStartId}}"
            startingIdForInsertsFrom: "{{startingId}}"
            username: "{{username}}"
            password: "{{password}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: counter-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gU3ZnIFZlY3RvciBJY29ucyA6IGh0dHA6Ly93d3cub25saW5ld2ViZm9udHMuY29tL2ljb24gLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAwIDEwMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPG1ldGFkYXRhPiBTdmcgVmVjdG9yIEljb25zIDogaHR0cDovL3d3dy5vbmxpbmV3ZWJmb250cy5jb20vaWNvbiA8L21ldGFkYXRhPg0KPGc+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsNTExLjAwMDAwMCkgc2NhbGUoMC4xMDAwMDAsLTAuMTAwMDAwKSI+PHBhdGggZD0iTTM4ODguMSw0Nzc0Ljl2LTIzNS4xaDQxMS40aDQxNC4zbC04LjgtMzI5LjFsLTguOC0zMzJsLTExNy41LTguOGMtMjI5LjItMTQuNy02MjAtOTkuOS05MjUuNi0xOTYuOUMyMjU3LjQsMzIyMC42LDExNjcuMiwyMDY1LjgsODAyLjksNjQ5LjZjLTUxMS4zLTE5ODYuMywzODQuOS00MDAyLDIyMDYuNy00OTY1LjhjMzAyLjYtMTYxLjYsNzU4LjEtMzIwLjIsMTE1NC44LTQwNS41YzQyNi4xLTkxLjEsMTI1MS43LTkxLjEsMTY4MC43LDBjMTc2OC45LDM4MiwzMDQ0LjEsMTY1Ny4yLDM0MjYuMSwzNDI2LjFjOTEuMSw0MjYuMSw5MS4xLDEyNTQuNiwwLDE2NzcuOGMtNDIwLjIsMTk0Mi4yLTE5MzYuNCwzMzAyLjYtMzg5MC4zLDM0OTYuNmwtMTk5LjgsMjAuNnYzMjAuM3YzMjAuM2g0MTEuNGg0MTEuNHYyMzUuMVY1MDEwSDQ5NDUuOUgzODg4LjFWNDc3NC45eiBNNTc1My45LDMzNDkuOWM3NzguNy0xNjEuNiwxNDE5LjItNTA4LjMsMTk4My40LTEwNzIuNWM1NjQuMi01NjEuMiw4ODcuNC0xMTU3LjcsMTA2MC43LTE5NDIuMmM5OS45LTQzNy44LDk5LjktMTE0MywzLTE1ODAuOEM4NTYzLTIzMDYuNCw3OTY2LjUtMzE1OC41LDcwNDMuOS0zNzUyYy0zMzUtMjE0LjUtNzg3LjUtMzk2LjctMTI0OC44LTQ5OS41Yy00MzcuOC05Ny0xMTQzLTk3LTE1ODAuOCwyLjljLTc4NC41LDE3My4zLTEzODEsNDk2LjYtMTk0Mi4yLDEwNjAuN2MtNTcwLDU2Ny4xLTkwNy45LDExOTguOC0xMDc4LjQsMTk5OC4xYy03My41LDM0Ni43LTczLjUsMTEyMi40LDAsMTQ2OS4yYzE3MC40LDc5OS4yLDUwOC4zLDE0MzEsMTA3OC40LDE5OThDMjg5NSwyOTAwLjMsMzYzOC40LDMyNzMuNSw0NDkzLjQsMzM5MUM0Nzc4LjQsMzQzMi4xLDU0NzQuOCwzNDA4LjYsNTc1My45LDMzNDkuOXoiLz48cGF0aCBkPSJNNDcxMC44LDEzNzUuM1YyMDUuOUw0NTUyLjIsNjcuOGMtMzE3LjMtMjc5LjEtMzQwLjgtNjc4LjctNTUuOC05OTMuMWMyODcuOS0zMjAuMyw2OTMuNC0zMTcuMywxMDEzLjcsNS45bDE3MC40LDE3MC40aDEwNDMuMWgxMDQzLjFWLTUxNFYtMjc5SDY3MjkuNUg1NjkyLjJsLTQ5LjksMTE0LjZjLTU4LjgsMTMyLjItMjUyLjcsMzE3LjMtMzc2LjEsMzYxLjRsLTg1LjIsMjkuNHYxMTU3Ljd2MTE1Ny43aC0yMzUuMWgtMjM1LjFWMTM3NS4zeiBNNTE2Ni4zLTI5My42YzE0Ni45LTE0NCw0NC4xLTM5Ni43LTE2MS42LTM5Ni43Yy01NS44LDAtMTE3LjUsMjYuNC0xNjEuNiw3My40Yy00Nyw0NC4xLTczLjUsMTA1LjgtNzMuNSwxNjEuNnMyNi40LDExNy41LDczLjUsMTYxLjZjNDQuMSw0NywxMDUuOCw3My41LDE2MS42LDczLjVDNTA2MC41LTIyMC4yLDUxMjIuMi0yNDYuNyw1MTY2LjMtMjkzLjZ6Ii8+PC9nPjwvZz4NCjwvc3ZnPg==
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Timer"
    camel.apache.org/kamelet.namespace: "Scheduling"
  labels:
    camel.apache.org/kamelet.type: "source"
    camel.apache.org/kamelet.verified: "true"
spec:
  definition:
    title: "Counter Source"
    description: Generates sequential number events starting from a configurable value, incrementing by a specified step. Useful for testing, scheduled tasks, or creating ordered event sequences.
    type: object
    properties:
      period:
        title: Period
        description: The time interval between two numbers
        type: integer
        default: 1000
      start:
        title: Starting Number
        description: The starting number
        type: integer
        default: 1
      numbers:
        title: Numbers
        description: How many numbers to generate
        type: integer
  dependencies:
    - "camel:timer"
    - "camel:core"
    - "camel:bean"
    - "camel:kamelet"
  template:
    beans:
      - name: counter
        type: java.util.concurrent.atomic.AtomicInteger
        constructors:
          "0": "{{start}}"
    from:
      uri: timer:counter
      parameters:
        period: "{{period}}"
        repeatCount: "{{?numbers}}"
      steps:
        - bean:
            ref: "{{counter}}"
            method: getAndIncrement
        - setHeader:
            name: "Content-Type"
            constant: "text/plain"
        - to: kamelet:sink
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: cron-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAwIiBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9IjAgMCAxOTIuNzU2IDE5Mi43NTYiPjxnIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDE5Mi43NTZ2MTkyLjc1NkgwVjB6Ii8+PHBhdGggZD0iTTQyLjE2IDEwMy4wNzJsNS45MDEgMS40OTZjLTEuMjQyIDQuODY1LTMuNDc2IDguNTc0LTYuNzAxIDExLjEyOXMtNy4xNjcgMy44MzItMTEuODI2IDMuODMyYy00LjgyMyAwLTguNzQ2LS45ODItMTEuNzY3LTIuOTQ3LTMuMDIxLTEuOTY1LTUuMzIyLTQuODExLTYuODk4LTguNTM3LTEuNTc2LTMuNzI1LTIuMzY1LTcuNzI3LTIuMzY1LTEyLjAwMiAwLTQuNjYzLjg5LTguNzMgMi42NjktMTIuMjAyIDEuNzc5LTMuNDcyIDQuMzEyLTYuMTA4IDcuNTk3LTcuOTEgMy4yODUtMS44MDIgNi45LTIuNzA0IDEwLjg0Ny0yLjcwNCA0LjQ3NCAwIDguMjM2IDEuMTQgMTEuMjg4IDMuNDE4IDMuMDUxIDIuMjggNS4xNzcgNS40ODUgNi4zNzcgOS42MTZsLTUuODM2IDEuMzc2Yy0xLjAzOC0zLjI1OS0yLjU0My01LjYzMy00LjUxNi03LjEyMS0xLjk3My0xLjQ4Ny00LjQ1NS0yLjIzMS03LjQ0My0yLjIzMS0zLjQzNyAwLTYuMzEuODI2LTguNjE5IDIuNDc3LTIuMzA4IDEuNjUtMy45MyAzLjg2Ni00Ljg2NSA2LjY0N2EyNi43NiAyNi43NiAwIDAgMC0xLjQwMyA4LjYwM2MwIDMuODExLjU1NCA3LjEzNyAxLjY2NSA5Ljk3OXMyLjgzNyA0Ljk2NyA1LjE4IDYuMzcxYTE0LjUyIDE0LjUyIDAgMCAwIDcuNjA3IDIuMTA5YzMuMzIgMCA2LjEzMS0uOTU3IDguNDMzLTIuODczIDIuMzAyLTEuOTE0IDMuODYtNC43NTYgNC42NzUtOC41MjZ6TTYxLjM0NSA3OC45MzRoMTQuMTUyYzMuMzE1IDAgNS43NDIuNjg0IDcuMjc4IDIuMDUyIDEuNTM2IDEuMzY4IDIuMzA0IDMuMTEyIDIuMzA0IDUuMjM1IDAgMS40NS0uMzk3IDIuNzkzLTEuMTkgNC4wMjctLjc5NCAxLjIzNS0xLjk1NCAyLjEzMy0zLjQ3OSAyLjY5NC0xLjUyNi41NjItMy42NDIuODQyLTYuMzQ1Ljg0MmgtMTIuNzJ2LTE0Ljg1em0wIDM5LjgxNlY5OC45MDZoNi44NjNjMS41MjQgMCAyLjYyMy4wNzIgMy4yOTMuMjExLjkxNi4yMjEgMS44MTUuNjEzIDIuNyAxLjE3Ni44ODQuNTYyIDEuODg2IDEuNTU1IDMuMDA0IDIuOTggMS4xMTkgMS40MjQgMi41NDIgMy40OCA0LjI3MSA2LjE2Nmw1LjkxNyA5LjMxMWg3LjRsLTcuNzQzLTEyLjE4Yy0xLjUzOC0yLjM4My0zLjE3Mi00LjM2OS00LjkwMS01Ljk1NS0uODEzLS43My0yLjAwMy0xLjQ3NS0zLjU2OS0yLjIyNyA0LjI5LS41OSA3LjQ2MS0xLjk3MyA5LjUxNS00LjE1MSAyLjA1NC0yLjE3NiAzLjA4Mi00Ljg1MiAzLjA4Mi04LjAyNSAwLTIuNDYxLS42Mi00LjcxLTEuODYtNi43NDQtMS4yNC0yLjAzNS0yLjg5OC0zLjQ1My00Ljk3Mi00LjI1Ny0yLjA3NC0uODA0LTUuMTA0LTEuMjA2LTkuMDg4LTEuMjA2aC0xOS44MXY0NC43NDVoNS44OTh6TTEwOS4zMTggODIuNjY3YzMuMDIzLTIuODc3IDYuNjM1LTQuMzE3IDEwLjgyOC00LjMxNyAyLjk1MyAwIDUuNjE1Ljc0OCA3Ljk4OCAyLjI0MiAyLjM3MyAxLjQ5NiA0LjE3NiAzLjYgNS40MDYgNi4zMTYgMS4yMzIgMi43MTUgMS44NSA1Ljg5MyAxLjg1IDkuNTMzIDAgNS43NTYtMS40NDEgMTAuMTk5LTQuMzIyIDEzLjMzMi0yLjg4MyAzLjEzMS02LjU1MyA0LjY5Ny0xMS4wMTIgNC42OTctNC4zODEgMC04LjAyLTEuNTUxLTEwLjkyMi00LjY1Mi0yLjktMy4xLTQuMzUyLTcuMzQ2LTQuMzUyLTEyLjczNi4wMDEtNi43MzIgMS41MTMtMTEuNTM3IDQuNTM2LTE0LjQxNXptLTguMDY4IDI1LjQ3OGMxLjcxMSAzLjUyIDQuMjI1IDYuMjk3IDcuNTQxIDguMzMyczcuMDgyIDMuMDUzIDExLjI5NSAzLjA1M2MzLjg4NyAwIDcuNTEtLjkyMiAxMC44NjctMi43NjQgMy4zNTctMS44NCA1Ljk1My00LjU1MSA3Ljc4NS04LjEzMyAxLjgzMi0zLjU4IDIuNzQ4LTcuNjQxIDIuNzQ4LTEyLjE3OCAwLTQuNDc3LS44NzEtOC40OC0yLjYxMS0xMi4wMXMtNC4yNjgtNi4yODMtNy41ODYtOC4yNTZjLTMuMzE2LTEuOTc0LTcuMDQxLTIuOTYxLTExLjE3Mi0yLjk2MS02LjMxMSAwLTExLjQ1OSAyLjEwMi0xNS40NDcgNi4zMDMtMy45ODggNC4yMDItNS45ODIgMTAuMDE2LTUuOTgyIDE3LjQ0NCAwIDMuOTI1Ljg1MyA3LjY1IDIuNTYyIDExLjE3ek0xNDguOTc1IDExOC43NVY3NC4wMDVoNi4xMDNsMjMuNDY3IDM1LjEydi0zNS4xMmg1LjcwN3Y0NC43NDVoLTYuMTA0bC0yMy40NjYtMzUuMTE5djM1LjExOWgtNS43MDd6IiBmaWxsPSIjY2MyMjI5Ii8+PC9nPjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Cron"
    camel.apache.org/kamelet.namespace: "Scheduling"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Cron Source"
    description: Send events at specific time.
    required:
      - schedule
      - message
    type: object
    properties:
      schedule:
        title: Cron Schedule
        description: A cron expression that is used to trigger events generation.
        type: string
        example: "0/3 10 * * * ?"
      message:
        title: Message
        description: The message to generate
        type: string
        example: hello world
  types:
    out:
      mediaType: text/plain
  dependencies:
  - "camel:quartz"
  - "camel:core"
  - "camel:cron"
  - "camel:kamelet"
  template:
    from:
      uri: "cron:tick"
      parameters:
        schedule: "{{schedule}}"
      steps:
      - setBody:
          constant: "{{message}}"
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: data-type-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Data Type Action"
    description: Applies a given data type with respective data transformation.
    required:
      - format
    type: object
    properties:
      scheme:
        title: Component Scheme
        description: The data type component scheme enables users to apply Camel component specific data type conversions.
        type: string
      format:
        title: Data Type Format
        description: Defines the data type that is applied by this action. Apache Camel and the Kamelet catalog support different data types and performs automatic message conversion according to the given type.
        type: string
  dependencies:
    - "camel:kamelet"
    - "camel:core"
  template:
    beans:
      - name: dataTypeProcessor
        type: "#class:org.apache.camel.processor.transformer.DataTypeProcessor"
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "'{{?scheme}}' != ''"
            steps:
            - setProperty:
                name: CamelDataType
                simple: "{{?scheme}}:{{format}}"
          otherwise:
            steps:
            - setProperty:
                name: CamelDataType
                simple: "{{format}}"
      - bean:
          ref: "{{dataTypeProcessor}}"
          method: process
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: delay-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTIyLjg4IDEwMC42IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMjIuODggMTAwLjYiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiMyNzI3Mjc7fSAuc3Qxe2ZpbGwtcnVsZTpldmVub2RkO2NsaXAtcnVsZTpldmVub2RkO2ZpbGw6I0Q4NDUzRTt9PC9zdHlsZT48Zz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNzIuNTgsMGM2LjgsMCwxMy4zLDEuMzYsMTkuMjMsMy44MWM2LjE2LDIuNTUsMTEuNyw2LjI5LDE2LjMzLDEwLjkybDAsMGM0LjYzLDQuNjMsOC4zNywxMC4xNywxMC45MiwxNi4zNCBjMi40Niw1LjkzLDMuODEsMTIuNDMsMy44MSwxOS4yM2MwLDYuOC0xLjM2LDEzLjMtMy44MSwxOS4yM2MtMi41NSw2LjE2LTYuMjksMTEuNy0xMC45MiwxNi4zM2wwLDAgYy00LjYzLDQuNjMtMTAuMTcsOC4zNy0xNi4zNCwxMC45MmMtNS45MywyLjQ2LTEyLjQzLDMuODEtMTkuMjMsMy44MWMtNi44LDAtMTMuMy0xLjM2LTE5LjIzLTMuODEgYy02LjE1LTIuNTUtMTEuNjktNi4yOC0xNi4zMy0xMC45MmwtMC4wMS0wLjAxYy00LjY0LTQuNjQtOC4zNy0xMC4xNy0xMC45Mi0xNi4zM2MtMC43OS0xLjkxLTEuNDctMy44Ny0yLjAyLTUuODkgYzEuMDUsMC4xLDIuMTIsMC4xNSwzLjIsMC4xNWMyLjA1LDAsNC4wNS0wLjE5LDYtMC41NGMwLjMyLDAuOTcsMC42NywxLjkzLDEuMDYsMi44N2MyLjA5LDUuMDUsNS4xNyw5LjYsOC45OSwxMy40MyBjMy44MiwzLjgyLDguMzgsNi45LDEzLjQzLDguOTljNC44NywyLjAyLDEwLjIxLDMuMTMsMTUuODMsMy4xM2M1LjYyLDAsMTAuOTYtMS4xMSwxNS44My0zLjEzYzUuMDUtMi4wOSw5LjYtNS4xNywxMy40My04Ljk5IGMzLjgyLTMuODIsNi45LTguMzgsOC45OS0xMy40M2MyLjAyLTQuODcsMy4xMy0xMC4yMSwzLjEzLTE1LjgzYzAtNS42Mi0xLjExLTEwLjk2LTMuMTMtMTUuODNjLTIuMDktNS4wNS01LjE3LTkuNi04Ljk5LTEzLjQzIGMtMy44Mi0zLjgyLTguMzgtNi45LTEzLjQzLTguOTljLTQuODctMi4wMi0xMC4yMS0zLjEzLTE1LjgzLTMuMTNjLTUuNjIsMC0xMC45NiwxLjExLTE1LjgzLDMuMTNjLTAuNDQsMC4xOC0wLjg3LDAuMzctMS4zLDAuNTYgYy0xLjY1LTIuNjEtMy42Ni00Ljk3LTUuOTUtNy4wMmMxLjI1LTAuNjUsMi41My0xLjI0LDMuODQtMS43OUM1OS4yOCwxLjM2LDY1Ljc4LDAsNzIuNTgsMEw3Mi41OCwweiBNNjYuOCwyNi4zOSBjMC0xLjIzLDAuNS0yLjM1LDEuMzEtMy4xNmMwLjgxLTAuODEsMS45My0xLjMxLDMuMTYtMS4zMWMxLjIzLDAsMi4zNSwwLjUsMy4xNiwxLjMxYzAuODEsMC44MSwxLjMxLDEuOTMsMS4zMSwzLjE2djIzLjQ3IGwxNy41NCwxMC40YzEuMDUsMC42MiwxLjc2LDEuNjIsMi4wNSwyLjczYzAuMjgsMS4xLDAuMTUsMi4zMS0wLjQ3LDMuMzdsMCwwLjAxbDAsMGMtMC42MiwxLjA1LTEuNjIsMS43Ni0yLjczLDIuMDUgYy0xLjEsMC4yOC0yLjMxLDAuMTUtMy4zNy0wLjQ3bC0wLjAxLDBsMCwwTDY5LjEsNTYuMjljLTAuNjctMC4zOC0xLjI0LTAuOTItMS42NC0xLjU3Yy0wLjQyLTAuNjgtMC42Ni0xLjQ4LTAuNjYtMi4zMlYyNi4zOSBMNjYuOCwyNi4zOXoiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMjcuMjcsMy4xOGMxNS4wNiwwLDI3LjI3LDEyLjIxLDI3LjI3LDI3LjI3YzAsMTUuMDYtMTIuMjEsMjcuMjctMjcuMjcsMjcuMjdDMTIuMjEsNTcuNzMsMCw0NS41MiwwLDMwLjQ1IEMwLDE1LjM5LDEyLjIxLDMuMTgsMjcuMjcsMy4xOEwyNy4yNywzLjE4eiBNMjQuMzUsNDEuMzRoNS44MnY1LjE2aC01LjgyVjQxLjM0TDI0LjM1LDQxLjM0TDI0LjM1LDQxLjM0eiBNMzAuMTcsMzcuNzdoLTUuODIgYy0wLjU4LTcuMDctMS44LTExLjU2LTEuOC0xOC42M2MwLTIuNjEsMi4xMi00LjcyLDQuNzItNC43MmMyLjYxLDAsNC43MiwyLjEyLDQuNzIsNC43MkMzMiwyNi4yLDMwLjc2LDMwLjcsMzAuMTcsMzcuNzcgTDMwLjE3LDM3Ljc3TDMwLjE3LDM3Ljc3TDMwLjE3LDM3Ljc3eiIvPjwvZz48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Delay"
    camel.apache.org/kamelet.namespace: "EIP"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Delay Action"
    description: Delay the processing using a specific amount of time
    required:
      - milliseconds
    type: object
    properties:
      milliseconds:
        title: Milliseconds
        description: The number of milliseconds of delay
        type: integer
        example: 1000
  dependencies:
  - "camel:core"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - delay:
          constant: "{{milliseconds}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: djl-image-to-text-action
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/png;base64,[encoded data, 5484 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "AI"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Image-to-Text Action"
    description: Detect and classify objects in an image into texts using the SSD and ResNet models and the ImageNet dataset.
    type: object
  types:
    out:
      mediaType: application/json
  dependencies:
    - "mvn:ai.djl.pytorch:pytorch-engine:0.29.0"
    - "mvn:ai.djl.pytorch:pytorch-model-zoo:0.29.0"
    - "camel:core"
    - "camel:kamelet"
    - "camel:jackson"
    - "camel:djl"
  template:
    beans:
      - name: imageNetUtil
        type: "#class:org.apache.camel.component.djl.ImageNetUtil"
    from:
      uri: "kamelet:source"
      steps:
        - to: "djl:cv/object_detection?artifactId=ssd"
        - convertBodyTo: "ai.djl.modality.cv.Image[]"
        - split:
            expression:
              simple: "${body}"
            aggregationStrategy: "#class:org.apache.camel.processor.aggregate.GroupedBodyAggregationStrategy"
            steps:
              - to: "djl:cv/image_classification?artifactId=resnet"
              # The output from the image classification model is classified
              # as one of 1000 labels from WordNet.
              # Since it's too fine-grained, we want to find the higher-level
              # group (= hypernym) for the classification using the WordNet
              # dictionary.
              - bean:
                  ref: "{{imageNetUtil}}"
                  method: extractClassName
              - bean:
                  ref: "{{imageNetUtil}}"
                  method: addHypernym
        - marshal:
            json: {}
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: dns-dig-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 7720 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "DNS"
    camel.apache.org/kamelet.namespace: "Networking"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "DNS DIG Action"
    description: Query a DNS through Dig.
    type: object
  dependencies:
    - "camel:core"
    - "camel:dns"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[domain-name]}"
            steps:
            - setHeader:
                name: dns.name
                simple: "${header[domain-name]}"
          - simple: "${header[ce-domainname]}"
            steps:
            - setHeader:
                name: dns.name
                simple: "${header[ce-domainname]}"
          otherwise:
            steps:
            - setHeader:
                name: dns.name
                simple: "${body}"
      - choice:
          when:
          - simple: "${header[dns-type]}"
            steps:
            - setHeader:
                name: dns.type
                simple: "${header[dns-type]}"
          - simple: "${header[ce-dnstype]}"
            steps:
            - setHeader:
                name: dns.type
                simple: "${header[ce-dnstype]}"
          otherwise:
            steps:
            - setHeader:
                name: dns.type
                constant: "A"
      - to:
          uri: "dns:dig"
      - convertBodyTo:
          type: "java.lang.String"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: dns-ip-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 7720 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "DNS"
    camel.apache.org/kamelet.namespace: "Networking"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "DNS IP Action"
    description: Get an IP from a DNS
    type: object
  dependencies:
    - "camel:core"
    - "camel:dns"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[domain]}"
            steps:
            - setHeader:
                name: dns.domain
                simple: "${header[domain]}"
          - simple: "${header[ce-domain]}"
            steps:
            - setHeader:
                name: dns.domain
                simple: "${header[ce-domain]}"
          otherwise:
            steps:
            - setHeader:
                name: dns.domain
                simple: "${body}"
      - to:
          uri: "dns:ip"
      - convertBodyTo:
          type: "java.lang.String"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: dns-lookup-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 7720 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "DNS"
    camel.apache.org/kamelet.namespace: "Networking"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "DNS Lookup Action"
    description: Lookup for a domain
    type: object
  types:
    out:
      mediaType: application/json
  dependencies:
    - "camel:core"
    - "camel:jackson"
    - "camel:dns"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[domain-name]}"
            steps:
            - setHeader:
                name: dns.domain
                simple: "${header[domain-name]}"
          - simple: "${header[ce-domainname]}"
            steps:
            - setHeader:
                name: dns.domain
                simple: "${header[ce-domainname]}"
          otherwise:
            steps:
            - setHeader:
                name: dns.domain
                simple: "${body}"
      - to:
          uri: "dns:lookup"
      - marshal:
          json: {}
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: drop-field-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
spec:
  definition:
    title: "Drop Field Action"
    description: Removes a custom field by given name from the message in transit.
    required:
      - field
    properties:
      field:
        title: Field
        description: The name of the field to be removed
        type: string
    type: object
  dependencies:
  - "camel:core"
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:kafka"
  template:
    beans:
      - name: dropField
        type: "#class:org.apache.camel.component.kafka.transform.DropField"
        properties:
          field: '{{field}}'
    from:
      uri: kamelet:source
      steps:
      - choice:
          when:
          - simple: "${header[Content-Type]} == 'application/json'"
            steps:
            - setProperty:
                name: deserialized
                constant: "true"
            - unmarshal:
                json:
                  library: Jackson
                  unmarshalType: com.fasterxml.jackson.databind.JsonNode
      - process:
          ref: "{{dropField}}"
      - choice:
          when:
          - simple: "${exchangeProperty[deserialized]} == 'true'"
            steps:
            - marshal:
                json:
                  library: Jackson
                  unmarshalType: com.fasterxml.jackson.databind.JsonNode
            - setHeader:
                name: "Content-Type"
                constant: "application/json"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: drop-header-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "EIP"
spec:
  definition:
    title: "Drop Header Action"
    description: "Remove an header from the message in transit."
    required:
      - name
    properties:
      name:
        title: Name
        description: The name of the header to be removed.
        type: string
        example: headername
    type: object
  dependencies:
    - "camel:core"
    - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - removeHeader:
          name: "{{name}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: drop-headers-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "EIP"
spec:
  definition:
    title: "Drop Headers Action"
    description: "Remove headers from the message in transit based on a pattern."
    required:
      - pattern
    properties:
      pattern:
        title: Pattern
        description: Name or pattern of headers to remove. The pattern is matched in the following order, 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).
        type: string
        example: Camel*
      excludePattern:
        title: Exclusion Pattern
        description: Name or pattern of headers to not remove. The pattern is matched in the following order, 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).
        type: string
        example: Camel*
    type: object
  dependencies:
    - "camel:core"
    - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - removeHeaders:
          pattern: "{{pattern}}"
          excludePattern: "{{?excludePattern}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: dropbox-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjQzcHgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQzIDQwIiB2ZXJzaW9uPSIxLjEiIGhlaWdodD0iNDBweCI+CiA8cGF0aCBkPSJtMTIuNSAwbC0xMi41IDguMSA4LjcgNyAxMi41LTcuOC04LjctNy4zem0tMTIuNSAyMS45bDEyLjUgOC4yIDguNy03LjMtMTIuNS03LjctOC43IDYuOHptMjEuMiAwLjlsOC44IDcuMyAxMi40LTguMS04LjYtNi45LTEyLjYgNy43em0yMS4yLTE0LjdsLTEyLjQtOC4xLTguOCA3LjMgMTIuNiA3LjggOC42LTd6bS0yMS4xIDE2LjNsLTguOCA3LjMtMy43LTIuNXYyLjhsMTIuNSA3LjUgMTIuNS03LjV2LTIuOGwtMy44IDIuNS04LjctNy4zeiIgZmlsbD0iIzAwN0VFNSIvPgo8L3N2Zz4K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Dropbox"
    camel.apache.org/kamelet.namespace: "Cloud"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Dropbox Sink"
    description: Upload Files to Dropbox.
    required:
      - accessToken
      - clientIdentifier
      - remotePath
      - uploadMode
    type: object
    properties:
      accessToken:
        title: Dropbox Access Token
        description: The access Token to use to access Dropbox
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      clientIdentifier:
        title: Client Identifier
        description: Dropbox App client Identifier
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      remotePath:
        title: Remote Path
        description: Original file or folder to work with
        type: string
      uploadMode:
        title: Upload Mode
        description: The uploading mode in case a file with the same name exists on Dropbox. Choose `add` or `force`. With `add`, the new file is renamed. With `force`, the existing file is overwritten.
        type: string
        default: add
  dependencies:
    - "camel:core"
    - "camel:dropbox"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[file]}"
            steps:
            - setHeader:
                name: CamelDropboxPutFileName
                simple: "${header[file]}"
          - simple: "${header[ce-file]}"
            steps:
            - setHeader:
                name: CamelDropboxPutFileName
                simple: "${header[ce-file]}"
      - to:
          uri: 'dropbox:put'
          parameters:
            accessToken: '{{accessToken}}'
            remotePath: '{{remotePath}}'
            clientIdentifier: '{{clientIdentifier}}'
            uploadMode: '{{uploadMode}}'

---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: dropbox-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjQzcHgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQzIDQwIiB2ZXJzaW9uPSIxLjEiIGhlaWdodD0iNDBweCI+CiA8cGF0aCBkPSJtMTIuNSAwbC0xMi41IDguMSA4LjcgNyAxMi41LTcuOC04LjctNy4zem0tMTIuNSAyMS45bDEyLjUgOC4yIDguNy03LjMtMTIuNS03LjctOC43IDYuOHptMjEuMiAwLjlsOC44IDcuMyAxMi40LTguMS04LjYtNi45LTEyLjYgNy43em0yMS4yLTE0LjdsLTEyLjQtOC4xLTguOCA3LjMgMTIuNiA3LjggOC42LTd6bS0yMS4xIDE2LjNsLTguOCA3LjMtMy43LTIuNXYyLjhsMTIuNSA3LjUgMTIuNS03LjV2LTIuOGwtMy44IDIuNS04LjctNy4zeiIgZmlsbD0iIzAwN0VFNSIvPgo8L3N2Zz4K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Dropbox"
    camel.apache.org/kamelet.namespace: "Cloud"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Dropbox Source"
    description: Consume Files from Dropbox.
    required:
      - period
      - accessToken
      - clientIdentifier
      - remotePath
      - query
    type: object
    properties:
      period:
        title: Period between Polls
        description: The interval between fetches to the Dropbox remote path in milliseconds
        type: integer
        default: 10000
      accessToken:
        title: Dropbox Access Token
        description: The access Token to use to access Dropbox
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      clientIdentifier:
        title: Client Identifier
        description: Dropbox App client Identifier
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      remotePath:
        title: Remote Path
        description: Original file or folder to work with
        type: string
      query:
        title: Queries
        description: A space-separated list of sub-strings to search for. A file matches only if it contains all the sub-strings. If this option is not set, all files is matched.
        type: string
  dependencies:
    - "camel:dropbox"
    - "camel:kamelet"
    - "camel:core"
    - "camel:jsonpath"
    - "camel:timer"
  template:
    from:
      uri: "timer:dropbox-stream"
      parameters:
        period: "{{period}}"
      steps:
      - to:
          uri: "dropbox:search"
          parameters:
            accessToken: "{{accessToken}}"
            remotePath: "{{remotePath}}"
            clientIdentifier: "{{clientIdentifier}}"
            query: "{{query}}"
      - split:
          jsonpath: "$.*"
          steps:
          - setProperty:
              name: dropboxFileName
              simple: ${body.metadata.pathDisplay}
          - toD: "dropbox:get?accessToken={{accessToken}}&clientIdentifier={{clientIdentifier}}&remotePath=${exchangeProperty.dropboxFileName}"
          - to: "kamelet:sink"
          - toD: "dropbox:del?accessToken={{accessToken}}&clientIdentifier={{clientIdentifier}}&remotePath=${exchangeProperty.dropboxFileName}"

---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: earthquake-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9JzEwMHB4JyB3aWR0aD0nMTAwcHgnICBmaWxsPSIjMDAwMDAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTAwLjAwMyA3OS45OTciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEwMC4wMDMgNzkuOTk3IiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBkPSJNODEuNjUzLDQyLjk0Yy0xLjM4NywwLTIuNjY2LDAuNzY3LTMuMzE1LDEuOTkyTDcyLjk0Miw1NS4xbC02LjY0OS0xOS40NzljLTAuNTA4LTEuNDcyLTEuODY1LTIuNDgtMy40MjMtMi41MzQgIGMtMS42MDItMC4wNDYtMi45ODMsMC44NTktMy41ODksMi4yOTJsLTQuNTYxLDEwLjgzNGwtNy4yLTQzLjEyOGMtMC4zMy0xLjgxMi0yLjAyOS0zLjE4OC0zLjc3LTMuMDc5ICBjLTEuODQzLDAuMDQyLTMuMzg0LDEuMjUyLTMuNjM1LDMuMDc5bC02LjM1Nyw1MC4wNTJsLTUuMTU2LTI2Ljg2NGMtMC4zMDMtMS41ODktMS41OTQtMi44MDMtMy4yMDEtMy4wMSAgYy0xLjU3Ny0wLjIxLTMuMTYyLDAuNjM1LTMuODYyLDIuMDk3bC04LjQzNSwxNy41OEgwdjcuNDk3aDE1LjQ2NmMxLjQ0MywwLDIuNzU2LTAuODI1LDMuMzgxLTIuMTI5bDQuNTM2LTkuNDVsNy4zMTIsMzguMDk4ICBjMC4zMzksMS43NzEsMS44ODcsMy4wNDEsMy42ODIsMy4wNDFjMC4wMzIsMCwwLjA2NiwwLDAuMSwwYzEuODM2LTAuMDQ5LDMuMzY3LTEuNDIxLDMuNjE2LTMuMjQxbDYuMjU5LTQ5LjE4Mmw1LjI0NywzMi4zODUgIGMwLjI5NSwxLjYzMSwxLjYzMSwyLjg3NiwzLjI3NiwzLjA1N2MxLjY3LDAuMTYxLDMuMjIzLTAuNzQyLDMuODY3LTIuMjc1bDUuNjM1LTEzLjM3NGw2LjI3LDE4LjM1OSAgYzAuNDgzLDEuNDExLDEuNzYzLDIuNDA3LDMuMjUxLDIuNTI0YzEuNDk0LDAuMDgzLDIuOTEtMC42NTksMy42MTMtMS45ODJsOC4zOTgtMTUuODNoMTYuMDk0VjQyLjk0SDgxLjY1M3oiPjwvcGF0aD48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Earthquake"
    camel.apache.org/kamelet.namespace: "Dataset"
  labels:
    camel.apache.org/kamelet.type: "source"
    camel.apache.org/kamelet.verified: "true"
spec:
  definition:
    title: "Earthquake Source"
    description: Get data about current earthquake events happening in the world using the USGS API
    type: object
    properties:
      period:
        title: Period between Polls
        description: The interval between fetches to the earthquake API in milliseconds.
        type: integer
        default: 60000
      lookAhead:
        title: Look-ahead Minutes
        description: The amount of minutes to look ahead when starting the integration afresh.
        type: integer
        default: 120
  types:
    out:
      mediaType: application/json
  dependencies:
    - "camel:caffeine"
    - "camel:http"
    - "camel:kamelet"
    - "camel:core"
    - "camel:jackson"
    - "camel:jsonpath"
    - "camel:timer"
  template:
    from:
      uri: "timer:earthquake"
      parameters:
        period: "{{period}}"
      steps:
      - setHeader:
          name: CamelCaffeineAction
          constant: GET
      - toD: "caffeine-cache:cache-${routeId}?key=lastUpdate"
      - choice:
          when:
          - simple: "${header.CamelCaffeineActionHasResult}"
            steps:
            - setProperty:
                name: lastUpdate
                simple: "${body}"
          otherwise:
            steps:
            - setProperty:
                name: lastUpdate
                simple: "${date-with-timezone:now-{{lookAhead}}m:UTC:yyyy-MM-dd'T'HH:mm:ss.SSS}"
      - setHeader:
          name: CamelHttpMethod
          constant: GET
      - toD: "https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&updatedafter=${exchangeProperty.lastUpdate}&orderby=time-asc"
      - removeHeader:
          name: CamelHttpMethod
      - unmarshal:
          json: {}
      - setProperty:
          name: generated
          simple: "${body[metadata][generated]}"
      - setProperty:
          name: lastUpdate
          simple: "${date-with-timezone:exchangeProperty.generated:UTC:yyyy-MM-dd'T'HH:mm:ss.SSS}"
      - claimCheck:
          operation: Push
      - setBody:
          exchange-property: lastUpdate
      - setHeader:
          name: CamelCaffeineAction
          constant: PUT
      - toD: "caffeine-cache:cache-${routeId}?key=lastUpdate"
      - claimCheck:
          operation: Pop
      - split:
          jsonpath: "$.features[*]"
          steps:
            - marshal:
                json: {}
            - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: elasticsearch-index-sink
  labels:
    camel.apache.org/kamelet.type: "sink"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.group: "ElasticSearch"
    camel.apache.org/kamelet.namespace: "Search"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 6752 characters]"
spec:
  definition:
    title: "ElasticSearch Index Sink"
    description: Stores JSON-formatted data into ElasticSearch.
    required:
      - clusterName
      - hostAddresses
    type: object
    properties:
      user:
        title: Username
        description: The username to connect to ElasticSearch.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to connect to ElasticSearch.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      enableSSL:
        title: Enable SSL
        description: Specifies to connect by using SSL.
        type: boolean
        default: true
      hostAddresses:
        title: Host Addresses
        description: A comma-separated list of remote transport addresses in `ip:port format`.
        type: string
        example: quickstart-es-http:9200
      clusterName:
        title: ElasticSearch Cluster Name
        description: The name of the ElasticSearch cluster.
        type: string
        example: quickstart
      indexName:
        title: Index in ElasticSearch
        description: The name of the ElasticSearch index.
        type: string
        example: data
      certificate:
        title: Certificate 
        description: The Certificate for accessing the Elasticsearch cluster. You must encode this value in base64.
        type: string
  types:
    out:
      mediaType: text/plain
    in:
      mediaType: application/json
  dependencies:
    - "camel:core"
    - "camel:jackson"
    - "camel:kamelet"
    - "camel:elasticsearch"
    - "camel:gson"
    - "camel:bean"
  template:
    beans:
      - name: local-es
        type: "#class:org.apache.camel.component.es.ElasticsearchComponent"
        properties:
            user: "{{?user}}"
            password: "{{?password}}"
    from:
      uri: kamelet:source
      steps:
      - choice:
          when:
          - simple: "${header[indexId]}"
            steps:
            - setHeader:
                name: "indexId"
                simple: "${header[indexId]}"
          - simple: "${header[ce-indexid]}"
            steps:
            - setHeader:
                name: "indexId"
                simple: "${header[ce-indexid]}"
      - choice:
          when:
          - simple: "${header[indexName]}"
            steps:
            - setHeader:
                name: "indexName"
                simple: "${header[indexName]}"
          - simple: "${header[ce-indexname]}"
            steps:
            - setHeader:
                name: "indexName"
                simple: "${header[ce-indexname]}"
      - unmarshal:
          json: {}
      - to:
          uri: "{{local-es}}:{{clusterName}}"
          parameters:
            operation: "INDEX"
            hostAddresses: "{{hostAddresses}}"
            enableSSL: "{{enableSSL}}"
            indexName: "{{?indexName}}"
            certificatePath: "base64:{{?certificate}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: elasticsearch-search-source
  labels:
    camel.apache.org/kamelet.type: "source"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.group: "ElasticSearch"
    camel.apache.org/kamelet.namespace: "Search"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 6752 characters]"
spec:
  definition:
    title: "ElasticSearch Search Source"
    description: Search data on ElasticSearch
    required:
      - query
      - clusterName
      - indexName
      - hostAddresses
    type: object
    properties:
      period:
        title: Period
        description: The time interval between two searches
        type: integer
        default: 1000
      query:
        title: Query
        description: The query we want to use to search on ElasticSearch.
        type: string
      user:
        title: Username
        description: Username to connect to ElasticSearch.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: Password to connect to ElasticSearch.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      enableSSL:
        title: Enable SSL
        description: Do we want to connect using SSL?
        type: boolean
        default: true
      hostAddresses:
        title: Host Addresses
        description: Comma separated list with ip:port formatted remote transport addresses to use.
        type: string
      indexName:
        title: Index in ElasticSearch
        description: The name of the index to act against.
        type: string
      clusterName:
        title: ElasticSearch Cluster Name
        description: The name of the cluster.
        type: string
      certificate:
        title: Certificate 
        description: The Certificate for accessing the Elasticsearch cluster. You must encode this value in base64.
        type: string
  types:
    out:
      mediaType: application/json
  dependencies:
      - "camel:core"
      - "camel:kamelet"
      - "camel:timer"
      - "camel:elasticsearch"
      - "camel:gson"
  template:
    beans:
      - name: local-es
        type: "#class:org.apache.camel.component.es.ElasticsearchComponent"
        properties:
            user: "{{?user}}"
            password: "{{?password}}"
    from:
      uri: timer:tick
      parameters:
        period: "{{period}}"
      steps:
        - setBody:
            constant: "{{query?nested=false}}"
        - to:
            uri: "{{local-es}}:{{clusterName}}"
            parameters:
              operation: "SEARCH"
              indexName: "{{indexName}}"
              hostAddresses: "{{hostAddresses}}"
              enableSSL: "{{enableSSL}}"
              certificatePath: "base64:{{?certificate}}"
        - marshal:
            json:
              library: Gson
        - to: kamelet:sink
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: exec-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIKICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI+CjxzdmcgdmVyc2lvbj0iMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiB3aWR0aD0iMTI4MC4wMDAwMDBwdCIgaGVpZ2h0PSIxMDEyLjAwMDAwMHB0IiB2aWV3Qm94PSIwIDAgMTI4MC4wMDAwMDAgMTAxMi4wMDAwMDAiCiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZWV0Ij4KPG1ldGFkYXRhPgpDcmVhdGVkIGJ5IHBvdHJhY2UgMS4xNSwgd3JpdHRlbiBieSBQZXRlciBTZWxpbmdlciAyMDAxLTIwMTcKPC9tZXRhZGF0YT4KPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsMTAxMi4wMDAwMDApIHNjYWxlKDAuMTAwMDAwLC0wLjEwMDAwMCkiCmZpbGw9IiMwMDAwMDAiIHN0cm9rZT0ibm9uZSI+CjxwYXRoIGQ9Ik04NTg1IDEwMTE0IGMtMTYgLTMgLTIyMSAtMzQgLTQ1NSAtNzAgLTg5MCAtMTM2IC0xNDg3IC0yMjcgLTIxMjUKLTMyNCAtMzYzIC01NSAtODk0IC0xMzYgLTExODAgLTE4MCAtMjg2IC00NCAtODE3IC0xMjUgLTExODAgLTE4MCAtMzYzIC01NQotODk2IC0xMzcgLTExODUgLTE4MSAtNTQ4IC04MyAtNjE5IC05NiAtNzExIC0xMzUgLTIwOCAtODYgLTM2NSAtMjM3IC00NjkKLTQ0OSAtOTEgLTE4NyAtMTA3IC0zMjUgLTcxIC02MTYgMTIgLTk2IDU3IC00NzggMTAxIC04NDkgNDQgLTM3MSAxMjMgLTEwMzMKMTc1IC0xNDcwIDUyIC00MzcgMTgwIC0xNTE1IDI4NSAtMjM5NSAxMDQgLTg4MCAxOTQgLTE2MjggMjAwIC0xNjYzIDI4IC0xNjQKMTI5IC0zNTEgMjU2IC00NzMgMzggLTM2IDc4IC03MiA4OSAtODAgMjcgLTE4IDc3IC0xMDQgNjcgLTExNCAtNCAtNSAtMSAtNSA3CjAgOSA1IDEyIDMgOCAtNiAtMiAtOCA5IC0zOSAyNSAtNjkgODAgLTE0NCAyMTEgLTI2NiAzNzEgLTM0NSAxMDYgLTUyIDE3NQotNzEgMzA1IC04NiAxMzMgLTE1IDIyMyAtNiA3NjAgNzYgMTYwIDI1IDQyNiA2NSA1OTAgOTAgMzc4IDU4IDgwNyAxMjQgMTE4MAoxODAgMTYwIDI1IDQyNCA2NSA1ODUgOTAgMTYwIDI0IDQyNiA2NSA1OTAgOTAgMTYzIDI1IDQzMCA2NSA1OTIgOTAgMTYyIDI1CjQyOCA2NSA1OTAgOTAgMTYyIDI1IDQyNyA2NSA1ODggOTAgMTYwIDI0IDQyNyA2NSA1OTIgOTAgMTE0NyAxNzUgMTE1NiAxNzYKMTMyMCAyNTQgMjY0IDEyNSA0NDIgMzY1IDQ4NSA2NDkgNiAzNyA4IDE2NiA2IDI4NyBsLTMgMjIwIC05MSA0MzAgYy04NyA0MTIKLTE5MyA5MTkgLTM0MiAxNjMwIC0zOCAxODIgLTE0MSA2NzQgLTIyOSAxMDk1IC04OCA0MjEgLTI2NCAxMjYyIC0zOTEgMTg2OQotMTI3IDYwNyAtMjU1IDEyMjIgLTI4NSAxMzY1IC0zMSAxNDQgLTY3IDMwMSAtODEgMzUwIC04OSAzMTAgLTMzMCA1NDYgLTY0Mgo2MjcgLTc2IDIwIC0yNjQgMzMgLTMyNyAyM3ogbTIzODIgLTc3MTYgYy0zIC03IC01IC0yIC01IDEyIDAgMTQgMiAxOSA1IDEzIDIKLTcgMiAtMTkgMCAtMjV6IG0tODU0MiAtMTQ5OCBjMTAgLTExIDE2IC0yMCAxMyAtMjAgLTMgMCAtMTMgOSAtMjMgMjAgLTEwIDExCi0xNiAyMCAtMTMgMjAgMyAwIDEzIC05IDIzIC0yMHoiLz4KPC9nPgo8L3N2Zz4K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Exec"
    camel.apache.org/kamelet.namespace: "System"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Exec Sink"
    description: Execute system commands
    required:
    - executable
    type: object
    properties:
      executable:
        title: Executable Command
        description: The command to execute
        type: string
  dependencies:
    - "camel:core"
    - "camel:exec"
    - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - choice:
          when:
          - simple: "${header[args]}"
            steps:
            - setHeader:
                name: CamelExecCommandArgs
                simple: "${header[args]}"
          - simple: "${header[ce-args]}"
            steps:
            - setHeader:
                name: CamelExecCommandArgs
                simple: "${header[ce-args]}"
      - to:
          uri: "exec:{{executable}}"
      - setBody:
          simple: "${body.stdout}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: extract-field-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
spec:
  definition:
    title: "Extract Field Action"
    description: Extract a field from the message body.
    required:
      - field
    properties:
      field:
        title: Field
        description: The name of the field to extract
        type: string
      headerOutput:
        title: Header Output
        description: If enable the action will store the extracted field in an header named CamelKameletsExtractFieldName
        type: boolean
        default: false
      headerOutputName:
        title: Header Output Name
        description: A custom name for the header containing the extracted field
        default: "none"
        type: string
      strictHeaderCheck:
        title: Strict Header Check
        description: If enabled the action will check if the header output name (custom or default) has been used already in the exchange. If so, the extracted field is stored in the message body, if not, the extracted field is stored in the selected header (custom or default).
        type: boolean
        default: false
      trimField:
        title: Trim Field
        description: If enabled we return the Raw extracted field
        type: boolean
        default: false
    type: object
  dependencies:
  - "camel:kamelet"
  - "camel:core"
  - "camel:jackson"
  - "camel:kafka"
  template:
    beans:
      - name: extractField
        type: "#class:org.apache.camel.component.kafka.transform.ExtractField"
        properties:
          field: '{{field}}'
          headerOutput: '{{headerOutput}}'
          headerOutputName: '{{headerOutputName}}'
          strictHeaderCheck: '{{strictHeaderCheck}}'
          trimField: '{{trimField}}'
    from:
      uri: kamelet:source
      steps:
      - choice:
          when:
          - simple: "${header[Content-Type]} == 'application/json'"
            steps:
            - setProperty:
                name: deserialized
                constant: "true"
            - unmarshal:
                json:
                  library: Jackson
                  unmarshalType: com.fasterxml.jackson.databind.JsonNode
      - process:
          ref: "{{extractField}}"
      - choice:
          when:
          - simple: "${exchangeProperty[trimField]} == 'false'"
            steps:
            - choice:
                when:
                - simple: "${exchangeProperty[deserialized]} == 'true'"
                  steps:
                  - marshal:
                      json:
                        library: Jackson
                        unmarshalType: com.fasterxml.jackson.databind.JsonNode
                  - setHeader:
                      name: "Content-Type"
                      constant: "application/json"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: fhir-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTUuMiAzMDAiPjxzdHlsZT48L3N0eWxlPjxnIGlkPSJMYXllcl8yIj48bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjYyLjY0NCIgeTE9IjI2OC4yMDEiIHgyPSIzMC43MjEiIHkyPSI4Ny4xNTUiPjxzdG9wIG9mZnNldD0iLjE1NCIgc3RvcC1jb2xvcj0iI2ZmZTQwZSIvPjxzdG9wIG9mZnNldD0iLjkxIiBzdG9wLWNvbG9yPSIjZTEwZTE5Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPSJNNzkuNiA3OC41bC00NCAzOC41Uy04IDE1MS43IDEuMyAyMDUuOWMwIDAgMi45IDI5LjIgNDMuMyA2NS41IDAgMC0zMy00MS4xLTI2LjYtOTAuMlM3OS4zIDgzLjcgNzkuNiA3OC41eiIgZmlsbD0idXJsKCNTVkdJRF8xXykiLz48bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzJfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ijg0LjI3MiIgeTE9IjI5OC4xNjciIHgyPSI4NC4yNzIiIHkyPSIwIj48c3RvcCBvZmZzZXQ9Ii4xNTQiIHN0b3AtY29sb3I9IiNmZmU0MGUiLz48c3RvcCBvZmZzZXQ9Ii4xOTciIHN0b3AtY29sb3I9IiNmZWRiMGUiLz48c3RvcCBvZmZzZXQ9Ii4yNjciIHN0b3AtY29sb3I9IiNmYWMzMTAiLz48c3RvcCBvZmZzZXQ9Ii4zNTUiIHN0b3AtY29sb3I9IiNmNTliMTIiLz48c3RvcCBvZmZzZXQ9Ii40NTkiIHN0b3AtY29sb3I9IiNlZDY0MTUiLz48c3RvcCBvZmZzZXQ9Ii41NzQiIHN0b3AtY29sb3I9IiNlMzFmMTgiLz48c3RvcCBvZmZzZXQ9Ii42IiBzdG9wLWNvbG9yPSIjZTEwZTE5Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPSJNMTEzIDBzMTIuNSA0My44LTE4LjMgNzkuOS0xMzAuNCAxMzkuMy00LjYgMjE4LjNjMCAwLTM4LTQ0LjggNy4yLTExMS43QzEzOC41IDEyNS44IDE2MS43IDg0IDExMyAweiIgZmlsbD0idXJsKCNTVkdJRF8yXykiLz48bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzNfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjE0MC41MzUiIHkxPSIzMDAiIHgyPSIxNDAuNTM1IiB5Mj0iODUuMjc2Ij48c3RvcCBvZmZzZXQ9Ii4xNTQiIHN0b3AtY29sb3I9IiNmZmU0MGUiLz48c3RvcCBvZmZzZXQ9Ii4yMSIgc3RvcC1jb2xvcj0iI2ZlZGIwZSIvPjxzdG9wIG9mZnNldD0iLjMiIHN0b3AtY29sb3I9IiNmYWMzMTAiLz48c3RvcCBvZmZzZXQ9Ii40MTUiIHN0b3AtY29sb3I9IiNmNTliMTIiLz48c3RvcCBvZmZzZXQ9Ii41NDkiIHN0b3AtY29sb3I9IiNlZDY0MTUiLz48c3RvcCBvZmZzZXQ9Ii42OTciIHN0b3AtY29sb3I9IiNlMzFmMTgiLz48c3RvcCBvZmZzZXQ9Ii43MzEiIHN0b3AtY29sb3I9IiNlMTBlMTkiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGQ9Ik0xNDkuNyA4NS4zczYuMSAzMi43LTI1LjMgODQuMS01NC45IDYxLjktMjQuMSAxMzAuNmMwIDAgODMuMSA1LjggOTUtOTMuNCAwIDAtOS4zIDIxLjUtMzEuMSAzNC43LS4xLS4xIDQwLjctNjkuNC0xNC41LTE1NnoiIGZpbGw9InVybCgjU1ZHSURfM18pIi8+PGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF80XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMjMuNTE2IiB5MT0iMjkzLjg0MSIgeDI9IjEyMy41MTYiIHkyPSIxNzEuMjY5Ij48c3RvcCBvZmZzZXQ9Ii4wNzMiIHN0b3AtY29sb3I9IiNmZmY4ZGEiLz48c3RvcCBvZmZzZXQ9Ii41MzYiIHN0b3AtY29sb3I9IiNmZmVlNmYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmU0MDAiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGQ9Ik0xMDMuMyAyOTMuOHMtMTguOS0zNS4zIDYuMS02Ny43IDI3LjMtMjUuNyAzOS44LTU0LjljMCAwIDEwLjMgNTAuNy0yMy4xIDEwMC4xIDAgMCAxMS4zLTEuNiAyNC42LTkuOS0uMSAwLTEzLjQgMjkuNi00Ny40IDMyLjR6IiBmaWxsPSJ1cmwoI1NWR0lEXzRfKSIvPjxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfNV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iODUuODI3IiB5MT0iMjg0LjIxNCIgeDI9Ijg1LjgyNyIgeTI9IjYwLjU2OSI+PHN0b3Agb2Zmc2V0PSIuMTI1IiBzdG9wLWNvbG9yPSIjZmZmOGRhIi8+PHN0b3Agb2Zmc2V0PSIuNTExIiBzdG9wLWNvbG9yPSIjZmZlNDAwIi8+PHN0b3Agb2Zmc2V0PSIuNTkzIiBzdG9wLWNvbG9yPSIjZmJjZTAzIi8+PHN0b3Agb2Zmc2V0PSIuNzY0IiBzdG9wLWNvbG9yPSIjZjI5NTBjIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZTMzZTE5Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPSJNNzkuMyAyODQuMnMtMjEuOC0yMi4xLTkuMy03My44IDU2LjYtNDYuMiA1My4zLTE0OS44YzAgMC05IDQ2LjItMzcuNiA2OC4zLTI4LjUgMjIuMi02NC44IDk1LTYuNCAxNTUuM3oiIGZpbGw9InVybCgjU1ZHSURfNV8pIi8+PGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF82XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI5My42OTMiIHkxPSIyNjkuMjI5IiB4Mj0iOTMuNjkzIiB5Mj0iMi45NDgiPjxzdG9wIG9mZnNldD0iLjA3MyIgc3RvcC1jb2xvcj0iI2ZmZjhkYSIvPjxzdG9wIG9mZnNldD0iLjI0OCIgc3RvcC1jb2xvcj0iI2ZmZjNhMCIvPjxzdG9wIG9mZnNldD0iLjQ0IiBzdG9wLWNvbG9yPSIjZmZlZDY3Ii8+PHN0b3Agb2Zmc2V0PSIuNjE5IiBzdG9wLWNvbG9yPSIjZmZlOTNiIi8+PHN0b3Agb2Zmc2V0PSIuNzc3IiBzdG9wLWNvbG9yPSIjZmZlNjFiIi8+PHN0b3Agb2Zmc2V0PSIuOTA5IiBzdG9wLWNvbG9yPSIjZmZlNTA3Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlNDAwIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPSJNMTM3LjcgMi45czEzLjggMzguMi0yMS44IDkzLjEtODQgOTItNDguMSAxNzMuMmMwIDAtMzUuNC00NS41LTEzLjktOTcuNSAyNi43LTY0LjEgOTYuMi05Ny41IDgzLjgtMTY4Ljh6IiBmaWxsPSJ1cmwoI1NWR0lEXzZfKSIvPjwvZz48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "FHIR"
    camel.apache.org/kamelet.namespace: "API"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "FHIR Sink"
    description: Forward data to a FHIR endpoint.
    required:
    - serverUrl
    - methodName
    type: object
    properties:
      apiName:
        title: API Name
        description: "What kind of operation to perform."
        type: string
        enum:  ["CAPABILITIES", "CREATE", "DELETE", "HISTORY", "LOAD_PAGE", "META", "OPERATION", "PATCH", "READ", "SEARCH", "TRANSACTION", "UPDATE", "VALIDATE"]
      methodName:
        title: Method Name
        description: "What sub operation to use for the selected operation."
        type: string
      encoding:
        title: Encoding
        description: "Encoding to use for all request. One of: [JSON] [XML]."
        type: string
        default: "JSON"
      fhirVersion:
        title: FHIR Version
        description: "The FHIR Version to use."
        type: string
        enum:  ["DSTU2", "DSTU2_HL7ORG", "DSTU2_1", "DSTU3", "R4", "R5"]
        default: "R4"
      log:
        title: Log
        description: "Will log every requests and responses."
        type: boolean
        default: false
      prettyPrint:
        title: Pretty Print
        description: "Pretty print all request."
        type: boolean
        default: false
      serverUrl:
        title: Server URL
        description: The FHIR server base URL.
        type: string
      lazyStartProducer:
        title: Lazy Start Producer
        description: "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel’s routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing."
        type: boolean
        default: false
      proxyHost:
        title: Proxy Host
        description: The proxy host.
        type: string
      proxyPassword:
        title: Proxy Password
        description: The proxy password.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      proxyPort:
        title: Proxy Port
        description: The proxy port.
        type: integer
      proxyUser:
        title: Proxy User
        description: The proxy username.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      accessToken:
        title: Access Token
        description: OAuth access token.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      username:
        title: Username
        description: Username to use for basic authentication.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: Password to use for basic authentication.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  dependencies:
  - "camel:fhir"
  - "camel:core"
  - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - choice:
          precondition: true
          when:
            - simple: "${properties:encoding} =~ 'JSON'"
              steps:
                - unmarshal:
                    fhirJson:
                      fhirVersion: "{{fhirVersion}}"
                      prettyPrint: "{{prettyPrint}}"
            - simple: "${properties:encoding} =~ 'XML'"
              steps:
                - unmarshal:
                    fhirXml:
                      fhirVersion: "{{fhirVersion}}"
                      prettyPrint: "{{prettyPrint}}"
      - to:
          uri: "fhir://{{apiName}}/{{methodName}}"
          parameters:
            serverUrl: "{{serverUrl}}"
            inBody: "resource"
            encoding: "{{encoding}}"
            fhirVersion: "{{fhirVersion}}"
            log: "{{log}}"
            prettyPrint: "{{prettyPrint}}"
            lazyStartProducer: "{{lazyStartProducer}}"
            proxyHost: "{{?proxyHost}}"
            proxyPassword: "{{?proxyPassword}}"
            proxyPort: "{{?proxyPort}}"
            proxyUser: "{{?proxyUser}}"
            accessToken: "{{?accessToken}}"
            username: "{{?username}}"
            password: "{{?password}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: fhir-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTUuMiAzMDAiPjxzdHlsZT48L3N0eWxlPjxnIGlkPSJMYXllcl8yIj48bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjYyLjY0NCIgeTE9IjI2OC4yMDEiIHgyPSIzMC43MjEiIHkyPSI4Ny4xNTUiPjxzdG9wIG9mZnNldD0iLjE1NCIgc3RvcC1jb2xvcj0iI2ZmZTQwZSIvPjxzdG9wIG9mZnNldD0iLjkxIiBzdG9wLWNvbG9yPSIjZTEwZTE5Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPSJNNzkuNiA3OC41bC00NCAzOC41Uy04IDE1MS43IDEuMyAyMDUuOWMwIDAgMi45IDI5LjIgNDMuMyA2NS41IDAgMC0zMy00MS4xLTI2LjYtOTAuMlM3OS4zIDgzLjcgNzkuNiA3OC41eiIgZmlsbD0idXJsKCNTVkdJRF8xXykiLz48bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzJfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9Ijg0LjI3MiIgeTE9IjI5OC4xNjciIHgyPSI4NC4yNzIiIHkyPSIwIj48c3RvcCBvZmZzZXQ9Ii4xNTQiIHN0b3AtY29sb3I9IiNmZmU0MGUiLz48c3RvcCBvZmZzZXQ9Ii4xOTciIHN0b3AtY29sb3I9IiNmZWRiMGUiLz48c3RvcCBvZmZzZXQ9Ii4yNjciIHN0b3AtY29sb3I9IiNmYWMzMTAiLz48c3RvcCBvZmZzZXQ9Ii4zNTUiIHN0b3AtY29sb3I9IiNmNTliMTIiLz48c3RvcCBvZmZzZXQ9Ii40NTkiIHN0b3AtY29sb3I9IiNlZDY0MTUiLz48c3RvcCBvZmZzZXQ9Ii41NzQiIHN0b3AtY29sb3I9IiNlMzFmMTgiLz48c3RvcCBvZmZzZXQ9Ii42IiBzdG9wLWNvbG9yPSIjZTEwZTE5Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPSJNMTEzIDBzMTIuNSA0My44LTE4LjMgNzkuOS0xMzAuNCAxMzkuMy00LjYgMjE4LjNjMCAwLTM4LTQ0LjggNy4yLTExMS43QzEzOC41IDEyNS44IDE2MS43IDg0IDExMyAweiIgZmlsbD0idXJsKCNTVkdJRF8yXykiLz48bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzNfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjE0MC41MzUiIHkxPSIzMDAiIHgyPSIxNDAuNTM1IiB5Mj0iODUuMjc2Ij48c3RvcCBvZmZzZXQ9Ii4xNTQiIHN0b3AtY29sb3I9IiNmZmU0MGUiLz48c3RvcCBvZmZzZXQ9Ii4yMSIgc3RvcC1jb2xvcj0iI2ZlZGIwZSIvPjxzdG9wIG9mZnNldD0iLjMiIHN0b3AtY29sb3I9IiNmYWMzMTAiLz48c3RvcCBvZmZzZXQ9Ii40MTUiIHN0b3AtY29sb3I9IiNmNTliMTIiLz48c3RvcCBvZmZzZXQ9Ii41NDkiIHN0b3AtY29sb3I9IiNlZDY0MTUiLz48c3RvcCBvZmZzZXQ9Ii42OTciIHN0b3AtY29sb3I9IiNlMzFmMTgiLz48c3RvcCBvZmZzZXQ9Ii43MzEiIHN0b3AtY29sb3I9IiNlMTBlMTkiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGQ9Ik0xNDkuNyA4NS4zczYuMSAzMi43LTI1LjMgODQuMS01NC45IDYxLjktMjQuMSAxMzAuNmMwIDAgODMuMSA1LjggOTUtOTMuNCAwIDAtOS4zIDIxLjUtMzEuMSAzNC43LS4xLS4xIDQwLjctNjkuNC0xNC41LTE1NnoiIGZpbGw9InVybCgjU1ZHSURfM18pIi8+PGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF80XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIxMjMuNTE2IiB5MT0iMjkzLjg0MSIgeDI9IjEyMy41MTYiIHkyPSIxNzEuMjY5Ij48c3RvcCBvZmZzZXQ9Ii4wNzMiIHN0b3AtY29sb3I9IiNmZmY4ZGEiLz48c3RvcCBvZmZzZXQ9Ii41MzYiIHN0b3AtY29sb3I9IiNmZmVlNmYiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmU0MDAiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGQ9Ik0xMDMuMyAyOTMuOHMtMTguOS0zNS4zIDYuMS02Ny43IDI3LjMtMjUuNyAzOS44LTU0LjljMCAwIDEwLjMgNTAuNy0yMy4xIDEwMC4xIDAgMCAxMS4zLTEuNiAyNC42LTkuOS0uMSAwLTEzLjQgMjkuNi00Ny40IDMyLjR6IiBmaWxsPSJ1cmwoI1NWR0lEXzRfKSIvPjxsaW5lYXJHcmFkaWVudCBpZD0iU1ZHSURfNV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iODUuODI3IiB5MT0iMjg0LjIxNCIgeDI9Ijg1LjgyNyIgeTI9IjYwLjU2OSI+PHN0b3Agb2Zmc2V0PSIuMTI1IiBzdG9wLWNvbG9yPSIjZmZmOGRhIi8+PHN0b3Agb2Zmc2V0PSIuNTExIiBzdG9wLWNvbG9yPSIjZmZlNDAwIi8+PHN0b3Agb2Zmc2V0PSIuNTkzIiBzdG9wLWNvbG9yPSIjZmJjZTAzIi8+PHN0b3Agb2Zmc2V0PSIuNzY0IiBzdG9wLWNvbG9yPSIjZjI5NTBjIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZTMzZTE5Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPSJNNzkuMyAyODQuMnMtMjEuOC0yMi4xLTkuMy03My44IDU2LjYtNDYuMiA1My4zLTE0OS44YzAgMC05IDQ2LjItMzcuNiA2OC4zLTI4LjUgMjIuMi02NC44IDk1LTYuNCAxNTUuM3oiIGZpbGw9InVybCgjU1ZHSURfNV8pIi8+PGxpbmVhckdyYWRpZW50IGlkPSJTVkdJRF82XyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI5My42OTMiIHkxPSIyNjkuMjI5IiB4Mj0iOTMuNjkzIiB5Mj0iMi45NDgiPjxzdG9wIG9mZnNldD0iLjA3MyIgc3RvcC1jb2xvcj0iI2ZmZjhkYSIvPjxzdG9wIG9mZnNldD0iLjI0OCIgc3RvcC1jb2xvcj0iI2ZmZjNhMCIvPjxzdG9wIG9mZnNldD0iLjQ0IiBzdG9wLWNvbG9yPSIjZmZlZDY3Ii8+PHN0b3Agb2Zmc2V0PSIuNjE5IiBzdG9wLWNvbG9yPSIjZmZlOTNiIi8+PHN0b3Agb2Zmc2V0PSIuNzc3IiBzdG9wLWNvbG9yPSIjZmZlNjFiIi8+PHN0b3Agb2Zmc2V0PSIuOTA5IiBzdG9wLWNvbG9yPSIjZmZlNTA3Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlNDAwIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPSJNMTM3LjcgMi45czEzLjggMzguMi0yMS44IDkzLjEtODQgOTItNDguMSAxNzMuMmMwIDAtMzUuNC00NS41LTEzLjktOTcuNSAyNi43LTY0LjEgOTYuMi05Ny41IDgzLjgtMTY4Ljh6IiBmaWxsPSJ1cmwoI1NWR0lEXzZfKSIvPjwvZz48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "FHIR"
    camel.apache.org/kamelet.namespace: "API"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "FHIR Source"
    description: Receive data from FHIR server.
    required:
      - serverUrl
      - username
      - password
    type: object
    properties:
      serverUrl:
        title: Server URL
        description: The FHIR server url.
        type: string
      url:
        title: URL
        description: The FHIR resource type url.
        type: string
        default: "/Patient"
      encoding:
        title: Encoding
        description: Encoding to use for all request. 
        type: string
        default: "JSON"
        enum: ["JSON", "XML"]
      fhirVersion:
        title: FHIR Version
        description: The FHIR Version to use.
        type: string
        default: "R4"
        enum: ["DSTU2", "DSTU2_HL7ORG", "DSTU2_1", "DSTU3", "R4", "R5"]
      username:
        title: Username
        description: The username to access the FHIR server.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access the FHIR server.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      prettyPrint:
        title: Json Pretty Print
        description: Define if the Json must be pretty print or not.
        type: boolean
        default: true
  types:
    out:
      mediaType: application/json
  dependencies:
    - "camel:fhir"
    - "camel:kamelet"
  template:
    from:
      uri: "fhir://search/searchByUrl"
      parameters:
        serverUrl: "{{serverUrl}}"
        url: "{{url}}"
        encoding: "{{encoding}}"
        fhirVersion: "{{fhirVersion}}"
        prettyPrint: "{{prettyPrint}}"
        username: "{{username}}"
        password: "{{password}}"
      steps:
      - marshal:
          fhirJson:
            fhirVersion: "{{fhirVersion}}"
            prettyPrint: "{{prettyPrint}}" 
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: file-watch-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzY4LjU1MyAzNjguNTUzIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAzNjguNTUzIDM2OC41NTM7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxnPg0KCTxnPg0KCQk8cGF0aCBkPSJNMjM5LjY4LDBINDIuNjk1djM2OC41NTNoMjgzLjE2NFY4Ni44MTFMMjM5LjY4LDB6IE0yNDQuMDU3LDI1LjdsNTYuMjg4LDU2LjcwMWgtNTYuMjg4VjI1Ljd6IE01Ny42OTUsMzUzLjU1M1YxNQ0KCQkJaDE3MS4zNjJ2ODIuNDAxaDgxLjgwMnYyNTYuMTUxSDU3LjY5NVYzNTMuNTUzeiIvPg0KCQk8cmVjdCB4PSI4Ni40MzUiIHk9IjgyLjQwMSIgd2lkdGg9IjEyMS44NzUiIGhlaWdodD0iMTUiLz4NCgkJPHJlY3QgeD0iODYuNDM1IiB5PSIxNTEuMTIyIiB3aWR0aD0iMTk1LjY4NSIgaGVpZ2h0PSIxNSIvPg0KCQk8cmVjdCB4PSI4Ni40MzUiIHk9IjIxOS44NDMiIHdpZHRoPSIxOTUuNjg1IiBoZWlnaHQ9IjE1Ii8+DQoJCTxyZWN0IHg9Ijg2LjQzNSIgeT0iMjg4LjU2MyIgd2lkdGg9IjE5NS42ODUiIGhlaWdodD0iMTUiLz4NCgk8L2c+DQoJPGc+DQoJPC9nPg0KCTxnPg0KCTwvZz4NCgk8Zz4NCgk8L2c+DQoJPGc+DQoJPC9nPg0KCTxnPg0KCTwvZz4NCgk8Zz4NCgk8L2c+DQoJPGc+DQoJPC9nPg0KCTxnPg0KCTwvZz4NCgk8Zz4NCgk8L2c+DQoJPGc+DQoJPC9nPg0KCTxnPg0KCTwvZz4NCgk8Zz4NCgk8L2c+DQoJPGc+DQoJPC9nPg0KCTxnPg0KCTwvZz4NCgk8Zz4NCgk8L2c+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8L3N2Zz4NCg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "File Watch"
    camel.apache.org/kamelet.namespace: "File"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "File Watch Source"
    description: Receive events related to a file or folder. It may require a volume mounting on Kubernetes.
    required:
      - filePath
      - events
    type: object
    properties:
      filePath:
        title: Path to Watch
        description: Path of file or folder to watch
        type: string
      events:
        title: Events
        description: The type of events to consume
        type: string
        default: "CREATE,MODIFY,DELETE"
  dependencies:
    - "camel:file-watch"
    - "camel:kamelet"
  template:
    from:
      uri: "file-watch:{{filePath}}"
      parameters:
        events: "{{events}}"
      steps:
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: freemarker-template-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Freemarker Template Action"
    description: Apply a Freemarker Template.
    required:
      - template
    type: object
    properties:
      template:
        title: Template
        description: The inline template
        type: string
        example: "file:////template.ftl"
        pattern: "^(http|https|file|classpath|ref|bean)://.*"
  dependencies:
  - "camel:freemarker"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "freemarker:"
          parameters:
            resourceUri: "{{template}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: ftp-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 7188 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "FTP"
    camel.apache.org/kamelet.namespace: "File"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "FTP Sink"
    description: Send data to an FTP server.
    required:
      - connectionHost
      - connectionPort
      - username
      - password
      - directoryName
    type: object
    properties:
      connectionHost:
        title: Connection Host
        description: The hostname of the FTP server.
        type: string
      connectionPort:
        title: Connection Port
        description: The port of the FTP server.
        type: string
        default: 21
      username:
        title: Username
        description: The username to access the FTP server.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access the FTP server.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      directoryName:
        title: Directory Name
        description: The starting directory.
        type: string
      passiveMode:
        title: Passive Mode
        description: Specifies to use passive mode connection.
        type: boolean
        default: false
      fileExist:
        title: File Existence
        description: How to behave in case of file already existent.
        type: string
        default: Override
        enum: ["Override", "Append", "Fail", "Ignore"]
      binary:
        title: Binary
        description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false).
        type: boolean
        default: false
      autoCreate:
        title: Autocreate Missing Directories
        description: Automatically create the directory the files should be written to.
        type: boolean
        default: true
  dependencies:
    - "camel:ftp"
    - "camel:core"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[file]}"
            steps:
            - setHeader:
                name: CamelFileName
                simple: "${header[file]}"
          - simple: "${header[ce-file]}"
            steps:
            - setHeader:
                name: CamelFileName
                simple: "${header[ce-file]}"
      - to:
          uri: "ftp:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}"
          parameters:
            password: "{{password}}"
            passiveMode: "{{passiveMode}}"
            fileExist: "{{fileExist}}"
            binary: "{{binary}}"
            autoCreate: "{{autoCreate}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: ftp-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 7188 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "FTP"
    camel.apache.org/kamelet.namespace: "File"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "FTP Source"
    description: Receive data from an FTP server.
    required:
      - connectionHost
      - connectionPort
      - username
      - password
      - directoryName
    type: object
    properties:
      connectionHost:
        title: Connection Host
        description: The hostname of the FTP server.
        type: string
      connectionPort:
        title: Connection Port
        description: The port of the FTP server.
        type: string
        default: 21
      username:
        title: Username
        description: The username to access the FTP server.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access the FTP server.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      directoryName:
        title: Directory Name
        description: The starting directory
        type: string
      passiveMode:
        title: Passive Mode
        description: Specifes to use passive mode connection.
        type: boolean
        default: false
      recursive:
        title: Recursive
        description: If a directory, look for files in all the sub-directories as well.
        type: boolean
        default: false
      idempotent:
        title: Idempotency
        description: Skip already-processed files.
        type: boolean
        default: true
      binary:
        title: Binary
        description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false).
        type: boolean
        default: false
      autoCreate:
        title: Autocreate Missing Directories
        description: Automatically create starting directory.
        type: boolean
        default: true
      delete:
        title: Delete
        description: If true, the file is deleted after it is processed successfully.
        type: boolean
        default: false
  dependencies:
    - "camel:ftp"
    - "camel:core"
    - "camel:kamelet"
  template:
    from:
      uri: "ftp:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}"
      parameters:
        password: "{{password}}"
        passiveMode: "{{passiveMode}}"
        recursive: "{{recursive}}"
        idempotent: "{{idempotent}}"
        binary: "{{binary}}"
        autoCreate: "{{autoCreate}}"
        delete: "{{delete}}"
      steps:
      - setHeader:
          name: file
          simple: "${header[CamelFileName]}"
      - setHeader:
          name: ce-file
          simple: "${header[CamelFileName]}"
      - convertBodyTo:
          type: "java.io.InputStream"
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: ftps-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 7188 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "FTP"
    camel.apache.org/kamelet.namespace: "File"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "FTPS Sink"
    description: Send data to an FTPS server.
    required:
      - connectionHost
      - connectionPort
      - username
      - password
      - directoryName
    type: object
    properties:
      connectionHost:
        title: Connection Host
        description: The hostname of the FTP server.
        type: string
      connectionPort:
        title: Connection Port
        description: The port of the FTP server.
        type: string
        default: 21
      username:
        title: Username
        description: The username to access the FTP server.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access the FTP server.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      directoryName:
        title: Directory Name
        description: The starting directory.
        type: string
      passiveMode:
        title: Passive Mode
        description: Set the passive mode connection.
        type: boolean
        default: false
      fileExist:
        title: File Existence
        description: "Specifies how the Kamelet behaves if the file already exists."
        type: string
        default: Override
        enum: ["Override", "Append", "Fail", "Ignore"]
      binary:
        title: Binary
        description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false).
        type: boolean
        default: false
      autoCreate:
        title: Autocreate Missing Directories
        description: Automatically create the directory the files should be written to.
        type: boolean
        default: true
  dependencies:
    - "camel:ftp"
    - "camel:core"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[file]}"
            steps:
            - setHeader:
                name: CamelFileName
                simple: "${header[file]}"
          - simple: "${header[ce-file]}"
            steps:
            - setHeader:
                name: CamelFileName
                simple: "${header[ce-file]}"
      - to:
          uri: "ftps:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}"
          parameters:
            password: "{{password}}"
            passiveMode: "{{passiveMode}}"
            fileExist: "{{fileExist}}"
            binary: "{{binary}}"
            autoCreate: "{{autoCreate}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: ftps-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 7188 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "FTP"
    camel.apache.org/kamelet.namespace: "File"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "FTPS Source"
    description: Receive data from an FTPS server.
    required:
      - connectionHost
      - connectionPort
      - username
      - password
      - directoryName
    type: object
    properties:
      connectionHost:
        title: Connection Host
        description: The hostname of the FTPS server.
        type: string
      connectionPort:
        title: Connection Port
        description: The port of the FTPS server.
        type: string
        default: 21
      username:
        title: Username
        description: The username to access the FTPS server.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access the FTPS server.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      directoryName:
        title: Directory Name
        description: The starting directory.
        type: string
      passiveMode:
        title: Passive Mode
        description: Specifies to use passive mode connection.
        type: boolean
        default: false
      recursive:
        title: Recursive
        description: If a directory, look for files in all sub-directories as well.
        type: boolean
        default: false
      idempotent:
        title: Idempotency
        description: Skip already-processed files.
        type: boolean
        default: true
      binary:
        title: Binary
        description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false).
        type: boolean
        default: false
      autoCreate:
        title: Autocreate Missing Directories
        description: Automatically create starting directory.
        type: boolean
        default: true
      delete:
        title: Delete
        description: If true, the file is deleted after it is processed successfully.
        type: boolean
        default: false
  dependencies:
    - "camel:ftp"
    - "camel:core"
    - "camel:kamelet"
  template:
    from:
      uri: "ftps:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}"
      parameters:
        password: "{{password}}"
        passiveMode: "{{passiveMode}}"
        recursive: "{{recursive}}"
        idempotent: "{{idempotent}}"
        binary: "{{binary}}"
        autoCreate: "{{autoCreate}}"
        delete: "{{delete}}"
      steps:
      - setHeader:
          name: file
          simple: "${header[CamelFileName]}"
      - setHeader:
          name: ce-file
          simple: "${header[CamelFileName]}"
      - convertBodyTo:
          type: "java.io.InputStream"
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: github-commit-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOEMwIDExLjU0IDIuMjkgMTQuNTMgNS40NyAxNS41OUM1Ljg3IDE1LjY2IDYuMDIgMTUuNDIgNi4wMiAxNS4yMUM2LjAyIDE1LjAyIDYuMDEgMTQuMzkgNi4wMSAxMy43MkM0IDE0LjA5IDMuNDggMTMuMjMgMy4zMiAxMi43OEMzLjIzIDEyLjU1IDIuODQgMTEuODQgMi41IDExLjY1QzIuMjIgMTEuNSAxLjgyIDExLjEzIDIuNDkgMTEuMTJDMy4xMiAxMS4xMSAzLjU3IDExLjcgMy43MiAxMS45NEM0LjQ0IDEzLjE1IDUuNTkgMTIuODEgNi4wNSAxMi42QzYuMTIgMTIuMDggNi4zMyAxMS43MyA2LjU2IDExLjUzQzQuNzggMTEuMzMgMi45MiAxMC42NCAyLjkyIDcuNThDMi45MiA2LjcxIDMuMjMgNS45OSAzLjc0IDUuNDNDMy42NiA1LjIzIDMuMzggNC40MSAzLjgyIDMuMzFDMy44MiAzLjMxIDQuNDkgMy4xIDYuMDIgNC4xM0M2LjY2IDMuOTUgNy4zNCAzLjg2IDguMDIgMy44NkM4LjcgMy44NiA5LjM4IDMuOTUgMTAuMDIgNC4xM0MxMS41NSAzLjA5IDEyLjIyIDMuMzEgMTIuMjIgMy4zMUMxMi42NiA0LjQxIDEyLjM4IDUuMjMgMTIuMyA1LjQzQzEyLjgxIDUuOTkgMTMuMTIgNi43IDEzLjEyIDcuNThDMTMuMTIgMTAuNjUgMTEuMjUgMTEuMzMgOS40NyAxMS41M0M5Ljc2IDExLjc4IDEwLjAxIDEyLjI2IDEwLjAxIDEzLjAxQzEwLjAxIDE0LjA4IDEwIDE0Ljk0IDEwIDE1LjIxQzEwIDE1LjQyIDEwLjE1IDE1LjY3IDEwLjU1IDE1LjU5QzEzLjcxIDE0LjUzIDE2IDExLjUzIDE2IDhDMTYgMy41OCAxMi40MiAwIDggMFoiIHRyYW5zZm9ybT0ic2NhbGUoNjQpIiBmaWxsPSIjMUIxRjIzIi8+Cjwvc3ZnPgo="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "GitHub"
    camel.apache.org/kamelet.namespace: "Cloud"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "GitHub Commit Source"
    description: Receive commit From GitHub.
    required:
      - repoName
      - repoOwner
      - oauthToken
      - startingSha
      - branch
    type: object
    properties:
      repoName:
        title: Repository Name
        description: The GitHub Repository name
        type: string
      repoOwner:
        title: Repository Owner
        description: The repository owner
        type: string
      oauthToken:
        title: OAuth Token
        description: OAuth token
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      startingSha:
        title: Starting SHA
        description: The SHA from which we want to consume, possible values beginning, last or a specific SHA
        type: string
        default: last
      branch:
        title: Branch 
        description: The branch we want to consume commit from
        type: string
  types:
    out:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:github"
  - "camel:kamelet"
  template:
    from:
      uri: "github://commit/{{branch}}"
      parameters:
        repoName: "{{repoName}}"
        repoOwner: "{{repoOwner}}"
        oauthToken: "{{oauthToken}}"
        startingSha: "{{startingSha}}"
      steps:
      - marshal:
          json: {}
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: github-event-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOEMwIDExLjU0IDIuMjkgMTQuNTMgNS40NyAxNS41OUM1Ljg3IDE1LjY2IDYuMDIgMTUuNDIgNi4wMiAxNS4yMUM2LjAyIDE1LjAyIDYuMDEgMTQuMzkgNi4wMSAxMy43MkM0IDE0LjA5IDMuNDggMTMuMjMgMy4zMiAxMi43OEMzLjIzIDEyLjU1IDIuODQgMTEuODQgMi41IDExLjY1QzIuMjIgMTEuNSAxLjgyIDExLjEzIDIuNDkgMTEuMTJDMy4xMiAxMS4xMSAzLjU3IDExLjcgMy43MiAxMS45NEM0LjQ0IDEzLjE1IDUuNTkgMTIuODEgNi4wNSAxMi42QzYuMTIgMTIuMDggNi4zMyAxMS43MyA2LjU2IDExLjUzQzQuNzggMTEuMzMgMi45MiAxMC42NCAyLjkyIDcuNThDMi45MiA2LjcxIDMuMjMgNS45OSAzLjc0IDUuNDNDMy42NiA1LjIzIDMuMzggNC40MSAzLjgyIDMuMzFDMy44MiAzLjMxIDQuNDkgMy4xIDYuMDIgNC4xM0M2LjY2IDMuOTUgNy4zNCAzLjg2IDguMDIgMy44NkM4LjcgMy44NiA5LjM4IDMuOTUgMTAuMDIgNC4xM0MxMS41NSAzLjA5IDEyLjIyIDMuMzEgMTIuMjIgMy4zMUMxMi42NiA0LjQxIDEyLjM4IDUuMjMgMTIuMyA1LjQzQzEyLjgxIDUuOTkgMTMuMTIgNi43IDEzLjEyIDcuNThDMTMuMTIgMTAuNjUgMTEuMjUgMTEuMzMgOS40NyAxMS41M0M5Ljc2IDExLjc4IDEwLjAxIDEyLjI2IDEwLjAxIDEzLjAxQzEwLjAxIDE0LjA4IDEwIDE0Ljk0IDEwIDE1LjIxQzEwIDE1LjQyIDEwLjE1IDE1LjY3IDEwLjU1IDE1LjU5QzEzLjcxIDE0LjUzIDE2IDExLjUzIDE2IDhDMTYgMy41OCAxMi40MiAwIDggMFoiIHRyYW5zZm9ybT0ic2NhbGUoNjQpIiBmaWxsPSIjMUIxRjIzIi8+Cjwvc3ZnPgo="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "GitHub"
    camel.apache.org/kamelet.namespace: "Cloud"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "GitHub Event Source"
    description: Receive Events From a GitHub Repository.
    required:
      - repoName
      - repoOwner
      - oauthToken
    type: object
    properties:
      repoName:
        title: Repository Name
        description: The GitHub Repository name.
        type: string
      repoOwner:
        title: Repository Owner
        description: The repository owner.
        type: string
      oauthToken:
        title: OAuth Token
        description: OAuth token.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  types:
    out:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:github"
  - "camel:kamelet"
  template:
    from:
      uri: "github://event"
      parameters:
        repoName: "{{repoName}}"
        repoOwner: "{{repoOwner}}"
        oauthToken: "{{oauthToken}}"
      steps:
      - marshal:
          json: {}
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: github-pullrequest-comment-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOEMwIDExLjU0IDIuMjkgMTQuNTMgNS40NyAxNS41OUM1Ljg3IDE1LjY2IDYuMDIgMTUuNDIgNi4wMiAxNS4yMUM2LjAyIDE1LjAyIDYuMDEgMTQuMzkgNi4wMSAxMy43MkM0IDE0LjA5IDMuNDggMTMuMjMgMy4zMiAxMi43OEMzLjIzIDEyLjU1IDIuODQgMTEuODQgMi41IDExLjY1QzIuMjIgMTEuNSAxLjgyIDExLjEzIDIuNDkgMTEuMTJDMy4xMiAxMS4xMSAzLjU3IDExLjcgMy43MiAxMS45NEM0LjQ0IDEzLjE1IDUuNTkgMTIuODEgNi4wNSAxMi42QzYuMTIgMTIuMDggNi4zMyAxMS43MyA2LjU2IDExLjUzQzQuNzggMTEuMzMgMi45MiAxMC42NCAyLjkyIDcuNThDMi45MiA2LjcxIDMuMjMgNS45OSAzLjc0IDUuNDNDMy42NiA1LjIzIDMuMzggNC40MSAzLjgyIDMuMzFDMy44MiAzLjMxIDQuNDkgMy4xIDYuMDIgNC4xM0M2LjY2IDMuOTUgNy4zNCAzLjg2IDguMDIgMy44NkM4LjcgMy44NiA5LjM4IDMuOTUgMTAuMDIgNC4xM0MxMS41NSAzLjA5IDEyLjIyIDMuMzEgMTIuMjIgMy4zMUMxMi42NiA0LjQxIDEyLjM4IDUuMjMgMTIuMyA1LjQzQzEyLjgxIDUuOTkgMTMuMTIgNi43IDEzLjEyIDcuNThDMTMuMTIgMTAuNjUgMTEuMjUgMTEuMzMgOS40NyAxMS41M0M5Ljc2IDExLjc4IDEwLjAxIDEyLjI2IDEwLjAxIDEzLjAxQzEwLjAxIDE0LjA4IDEwIDE0Ljk0IDEwIDE1LjIxQzEwIDE1LjQyIDEwLjE1IDE1LjY3IDEwLjU1IDE1LjU5QzEzLjcxIDE0LjUzIDE2IDExLjUzIDE2IDhDMTYgMy41OCAxMi40MiAwIDggMFoiIHRyYW5zZm9ybT0ic2NhbGUoNjQpIiBmaWxsPSIjMUIxRjIzIi8+Cjwvc3ZnPgo="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "GitHub"
    camel.apache.org/kamelet.namespace: "Cloud"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "GitHub Pull Request Comments Source"
    description: Receive pull request Comments From GitHub.
    required:
      - repoName
      - repoOwner
      - oauthToken
    type: object
    properties:
      repoName:
        title: Repository Name
        description: The GitHub Repository name
        type: string
      repoOwner:
        title: Repository Owner
        description: The repository owner
        type: string
      oauthToken:
        title: OAuth Token
        description: OAuth token
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  types:
    out:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:github"
  - "camel:kamelet"
  template:
    from:
      uri: "github://pullRequestComment"
      parameters:
        repoName: "{{repoName}}"
        repoOwner: "{{repoOwner}}"
        oauthToken: "{{oauthToken}}"
      steps:
      - marshal:
          json: {}
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: github-pullrequest-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOEMwIDExLjU0IDIuMjkgMTQuNTMgNS40NyAxNS41OUM1Ljg3IDE1LjY2IDYuMDIgMTUuNDIgNi4wMiAxNS4yMUM2LjAyIDE1LjAyIDYuMDEgMTQuMzkgNi4wMSAxMy43MkM0IDE0LjA5IDMuNDggMTMuMjMgMy4zMiAxMi43OEMzLjIzIDEyLjU1IDIuODQgMTEuODQgMi41IDExLjY1QzIuMjIgMTEuNSAxLjgyIDExLjEzIDIuNDkgMTEuMTJDMy4xMiAxMS4xMSAzLjU3IDExLjcgMy43MiAxMS45NEM0LjQ0IDEzLjE1IDUuNTkgMTIuODEgNi4wNSAxMi42QzYuMTIgMTIuMDggNi4zMyAxMS43MyA2LjU2IDExLjUzQzQuNzggMTEuMzMgMi45MiAxMC42NCAyLjkyIDcuNThDMi45MiA2LjcxIDMuMjMgNS45OSAzLjc0IDUuNDNDMy42NiA1LjIzIDMuMzggNC40MSAzLjgyIDMuMzFDMy44MiAzLjMxIDQuNDkgMy4xIDYuMDIgNC4xM0M2LjY2IDMuOTUgNy4zNCAzLjg2IDguMDIgMy44NkM4LjcgMy44NiA5LjM4IDMuOTUgMTAuMDIgNC4xM0MxMS41NSAzLjA5IDEyLjIyIDMuMzEgMTIuMjIgMy4zMUMxMi42NiA0LjQxIDEyLjM4IDUuMjMgMTIuMyA1LjQzQzEyLjgxIDUuOTkgMTMuMTIgNi43IDEzLjEyIDcuNThDMTMuMTIgMTAuNjUgMTEuMjUgMTEuMzMgOS40NyAxMS41M0M5Ljc2IDExLjc4IDEwLjAxIDEyLjI2IDEwLjAxIDEzLjAxQzEwLjAxIDE0LjA4IDEwIDE0Ljk0IDEwIDE1LjIxQzEwIDE1LjQyIDEwLjE1IDE1LjY3IDEwLjU1IDE1LjU5QzEzLjcxIDE0LjUzIDE2IDExLjUzIDE2IDhDMTYgMy41OCAxMi40MiAwIDggMFoiIHRyYW5zZm9ybT0ic2NhbGUoNjQpIiBmaWxsPSIjMUIxRjIzIi8+Cjwvc3ZnPgo="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "GitHub"
    camel.apache.org/kamelet.namespace: "Cloud"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "GitHub Pull Request Source"
    description: Receive pull request From GitHub.
    required:
      - repoName
      - repoOwner
      - oauthToken
    type: object
    properties:
      repoName:
        title: Repository Name
        description: The GitHub Repository name
        type: string
      repoOwner:
        title: Repository Owner
        description: The repository owner
        type: string
      oauthToken:
        title: OAuth Token
        description: OAuth token
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  types:
    out:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:github"
  - "camel:kamelet"
  template:
    from:
      uri: "github://pullRequest"
      parameters:
        repoName: "{{repoName}}"
        repoOwner: "{{repoOwner}}"
        oauthToken: "{{oauthToken}}"
      steps:
      - marshal:
          json: {}
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: github-tag-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTAyNCIgaGVpZ2h0PSIxMDI0IiB2aWV3Qm94PSIwIDAgMTAyNCAxMDI0IiBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOEMwIDExLjU0IDIuMjkgMTQuNTMgNS40NyAxNS41OUM1Ljg3IDE1LjY2IDYuMDIgMTUuNDIgNi4wMiAxNS4yMUM2LjAyIDE1LjAyIDYuMDEgMTQuMzkgNi4wMSAxMy43MkM0IDE0LjA5IDMuNDggMTMuMjMgMy4zMiAxMi43OEMzLjIzIDEyLjU1IDIuODQgMTEuODQgMi41IDExLjY1QzIuMjIgMTEuNSAxLjgyIDExLjEzIDIuNDkgMTEuMTJDMy4xMiAxMS4xMSAzLjU3IDExLjcgMy43MiAxMS45NEM0LjQ0IDEzLjE1IDUuNTkgMTIuODEgNi4wNSAxMi42QzYuMTIgMTIuMDggNi4zMyAxMS43MyA2LjU2IDExLjUzQzQuNzggMTEuMzMgMi45MiAxMC42NCAyLjkyIDcuNThDMi45MiA2LjcxIDMuMjMgNS45OSAzLjc0IDUuNDNDMy42NiA1LjIzIDMuMzggNC40MSAzLjgyIDMuMzFDMy44MiAzLjMxIDQuNDkgMy4xIDYuMDIgNC4xM0M2LjY2IDMuOTUgNy4zNCAzLjg2IDguMDIgMy44NkM4LjcgMy44NiA5LjM4IDMuOTUgMTAuMDIgNC4xM0MxMS41NSAzLjA5IDEyLjIyIDMuMzEgMTIuMjIgMy4zMUMxMi42NiA0LjQxIDEyLjM4IDUuMjMgMTIuMyA1LjQzQzEyLjgxIDUuOTkgMTMuMTIgNi43IDEzLjEyIDcuNThDMTMuMTIgMTAuNjUgMTEuMjUgMTEuMzMgOS40NyAxMS41M0M5Ljc2IDExLjc4IDEwLjAxIDEyLjI2IDEwLjAxIDEzLjAxQzEwLjAxIDE0LjA4IDEwIDE0Ljk0IDEwIDE1LjIxQzEwIDE1LjQyIDEwLjE1IDE1LjY3IDEwLjU1IDE1LjU5QzEzLjcxIDE0LjUzIDE2IDExLjUzIDE2IDhDMTYgMy41OCAxMi40MiAwIDggMFoiIHRyYW5zZm9ybT0ic2NhbGUoNjQpIiBmaWxsPSIjMUIxRjIzIi8+Cjwvc3ZnPgo="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "GitHub"
    camel.apache.org/kamelet.namespace: "Cloud"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "GitHub Tag Source"
    description: Receive Tags From a GitHub Repository.
    required:
      - repoName
      - repoOwner
      - oauthToken
    type: object
    properties:
      repoName:
        title: Repository Name
        description: The GitHub Repository name
        type: string
      repoOwner:
        title: Repository Owner
        description: The repository owner
        type: string
      oauthToken:
        title: OAuth Token
        description: OAuth token
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  types:
    out:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:github"
  - "camel:kamelet"
  template:
    from:
      uri: "github://tag"
      parameters:
        repoName: "{{repoName}}"
        repoOwner: "{{repoOwner}}"
        oauthToken: "{{oauthToken}}"
      steps:
      - marshal:
          json: {}
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: google-bigquery-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1MDAiIHdpZHRoPSIyNTAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgICAgdmlld0JveD0iLTEuNjMzMjM1NDMzMzI4MjU2IDcuMDMyNjA5MzMwMzE1NjU2NSAxMzEuMjY1NzQ2ODI0MTY4NzYgMTE0LjYzNDM5MDY2OTY4NDM1IiB2ZXJzaW9uPSIxLjAiPgogICAgPGxpbmVhckdyYWRpZW50IGlkPSJhIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjY0IiB4Mj0iNjQiIHkxPSI3LjAzNCIgeTI9IjEyMC43ODkiPgogICAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzQzODdmZCIvPgogICAgICAgIDxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzQ2ODNlYSIvPgogICAgPC9saW5lYXJHcmFkaWVudD4KICAgIDxwYXRoIGQ9Ik0yNy43OSAxMTUuMjE3TDEuNTQgNjkuNzQ5YTExLjQ5OSAxMS40OTkgMCAwIDEgMC0xMS40OTlsMjYuMjUtNDUuNDY3YTExLjUgMTEuNSAwIDAgMSA5Ljk2LTUuNzVoNTIuNWExMS41IDExLjUgMCAwIDEgOS45NTkgNS43NWwyNi4yNSA0NS40NjdhMTEuNDk5IDExLjQ5OSAwIDAgMSAwIDExLjVsLTI2LjI1IDQ1LjQ2N2ExMS41IDExLjUgMCAwIDEtOS45NTkgNS43NDloLTUyLjVhMTEuNDk5IDExLjQ5OSAwIDAgMS05Ljk2LTUuNzV6IgogICAgICAgICAgZmlsbD0idXJsKCNhKSIvPgogICAgPHBhdGgKICAgICAgICAgIGQ9Ik0xMTkuMjI5IDg2LjQ4TDgwLjYyNSA0Ny44NzQgNjQgNDMuNDI1bC0xNC45MzMgNS41NUw0My4zIDY0bDQuNjM3IDE2LjcyOSA0MC45MzggNDAuOTM4IDguNjg3LS4zODZ6IgogICAgICAgICAgb3BhY2l0eT0iLjA3Ii8+CiAgICA8ZyBmaWxsPSIjZmZmIj4KICAgICAgICA8cGF0aCBkPSJNNjQgNDAuODA0Yy0xMi44MSAwLTIzLjE5NSAxMC4zODUtMjMuMTk1IDIzLjE5NiAwIDEyLjgxIDEwLjM4NSAyMy4xOTUgMjMuMTk1IDIzLjE5NVM4Ny4xOTQgNzYuODEgODcuMTk0IDY0YzAtMTIuODExLTEwLjM4NS0yMy4xOTYtMjMuMTk0LTIzLjE5Nm0wIDQwLjc5NWMtOS43MiAwLTE3LjYtNy44OC0xNy42LTE3LjZTNTQuMjggNDYuNCA2NCA0Ni40IDgxLjYgNTQuMjggODEuNiA2NCA3My43MiA4MS42IDY0IDgxLjYiLz4KICAgICAgICA8cGF0aCBkPSJNNTIuOTkgNjMuMTA0djcuMjFhMTIuNzk0IDEyLjc5NCAwIDAgMCA0LjM4IDQuNDc1VjYzLjEwNHpNNjEuNjc1IDU3LjAyNnYxOS40MTFjLjc0NS4xMzcgMS41MDcuMjIgMi4yOS4yMi43MTQgMCAxLjQxLS4wNzUgMi4wOTMtLjE4OVY1Ny4wMjZ6TTcwLjc2NiA2Ni4xdjguNTYyYTEyLjc4NiAxMi43ODYgMCAwIDAgNC4zODItNC43di0zLjg2MXpNODAuNjkxIDc4LjI4N2wtMi40MDMgMi40MDVhMS4wODggMS4wODggMCAwIDAgMCAxLjUzN2w5LjExNSA5LjExMmExLjA4OCAxLjA4OCAwIDAgMCAxLjUzNyAwbDIuNDAzLTIuNDAyYTEuMDkyIDEuMDkyIDAgMCAwIDAtMS41MzZsLTkuMTE2LTkuMTE2YTEuMDkgMS4wOSAwIDAgMC0xLjUzNiAwIi8+CiAgICA8L2c+Cjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Google Big Query"
    camel.apache.org/kamelet.namespace: "GCP"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Google Big Query Sink"
    description: Send data to a Google Big Query table.
    required:
      - projectId
      - dataset
      - table
      - serviceAccountKey
    type: object
    properties:
      projectId:
        title: Google Cloud Project Id
        description: The Google Cloud Project ID.
        type: string
      dataset:
        title: Big Query Dataset Id
        description: The Big Query Dataset ID.
        type: string
      table:
        title: Big Query Table Id
        description: The Big Query Table ID.
        type: string
      serviceAccountKey:
        title: Service Account Key
        description: The service account key to use as credentials for the BigQuery Service. You must encode this value in base64.
        type: binary
        x-descriptors:
        - urn:camel:group:credentials
  types:
    in:
      mediaType: application/json
  dependencies:
    - "camel:core"
    - "camel:kamelet"
    - "camel:google-bigquery"
    - "camel:jackson"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - unmarshal:
          json:
              library: Jackson
      - to:
          uri: "google-bigquery:{{projectId}}:{{dataset}}:{{table}}"
          parameters:
            serviceAccountKey: "base64:{{serviceAccountKey}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: google-calendar-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjE4NiAzOCA3NiA3NiI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTI0NCA1NmgtNDB2NDBoNDBWNTZ6Ii8+PHBhdGggZmlsbD0iI0VBNDMzNSIgZD0iTTI0NCAxMTRsMTgtMThoLTE4djE4eiIvPjxwYXRoIGZpbGw9IiNGQkJDMDQiIGQ9Ik0yNjIgNTZoLTE4djQwaDE4VjU2eiIvPjxwYXRoIGZpbGw9IiMzNEE4NTMiIGQ9Ik0yNDQgOTZoLTQwdjE4aDQwVjk2eiIvPjxwYXRoIGZpbGw9IiMxODgwMzgiIGQ9Ik0xODYgOTZ2MTJjMCAzLjMxNSAyLjY4NSA2IDYgNmgxMlY5NmgtMTh6Ii8+PHBhdGggZmlsbD0iIzE5NjdEMiIgZD0iTTI2MiA1NlY0NGMwLTMuMzE1LTIuNjg1LTYtNi02aC0xMnYxOGgxOHoiLz48cGF0aCBmaWxsPSIjNDI4NUY0IiBkPSJNMjQ0IDM4aC01MmMtMy4zMTUgMCAtNiAyLjY4NS02IDZ2NTJoMThWNTZoNDBWMzh6Ii8+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTIxMi4yMDUgODcuMDNjLTEuNDk1LTEuMDEtMi41My0yLjQ4NS0zLjA5NS00LjQzNWwzLjQ3LTEuNDNjLjMxNSAxLjIuODY1IDIuMTMgMS42NSAyLjc5Ljc4LjY2IDEuNzMuOTg1IDIuODQuOTg1IDEuMTM1IDAgMi4xMS0uMzQ1IDIuOTI1LTEuMDM1czEuMjI1LTEuNTcgMS4yMjUtMi42MzVjMC0xLjA5LS40My0xLjk4LTEuMjktMi42Ny0uODYtLjY5LTEuOTQtMS4wMzUtMy4yMy0xLjAzNWgtMi4wMDVWNzQuMTNoMS44YzEuMTEgMCAyLjA0NS0uMyAyLjgwNS0uOS43Ni0uNiAxLjE0LTEuNDIgMS4xNC0yLjQ2NSAwIC0uOTMtLjM0LTEuNjctMS4wMi0yLjIyNS0uNjgtLjU1NS0xLjU0LS44MzUtMi41ODUtLjgzNS0xLjAyIDAgLTEuODMuMjctMi40My44MTVhNC43ODQgNC43ODQgMCAwIDAgLTEuMzEgMi4wMDVsLTMuNDM1LTEuNDNjLjQ1NS0xLjI5IDEuMjktMi40MyAyLjUxNS0zLjQxNSAxLjIyNS0uOTg1IDIuNzktMS40OCA0LjY5LTEuNDggMS40MDUgMCAyLjY3LjI3IDMuNzkuODE1IDEuMTIuNTQ1IDIgMS4zIDIuNjM1IDIuMjYuNjM1Ljk2NS45NSAyLjA0NS45NSAzLjI0NSAwIDEuMjI1LS4yOTUgMi4yNi0uODg1IDMuMTEtLjU5Ljg1LTEuMzE1IDEuNS0yLjE3NSAxLjk1NXYuMjA1YTYuNjA1IDYuNjA1IDAgMCAxIDIuNzkgMi4xNzVjLjcyNS45NzUgMS4wOSAyLjE0IDEuMDkgMy41IDAgMS4zNi0uMzQ1IDIuNTc1LTEuMDM1IDMuNjRzLTEuNjQ1IDEuOTA1LTIuODU1IDIuNTE1Yy0xLjIxNS42MS0yLjU4LjkyLTQuMDk1LjkyLTEuNzU1LjAwNS0zLjM3NS0uNS00Ljg3LTEuNTF6TTIzMy41MiA2OS44MWwtMy44MSAyLjc1NS0xLjkwNS0yLjg5IDYuODM1LTQuOTNoMi42MlY4OGgtMy43NFY2OS44MXoiLz48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Google Calendar"
    camel.apache.org/kamelet.namespace: "GCP"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Google Calendar Source"
    description: Receive event data from Google Calendar.
    required:
      - index
      - calendarId
      - clientId
      - accessToken
      - refreshToken
      - clientSecret
      - applicationName
    type: object
    properties:
      index:
        title: Index
        description: An index for the Google Calendar endpoint.
        type: string
      calendarId:
        title: Calendar ID
        description: The calendar ID to use as the source of event data.
        type: string
      clientId:
        title: Client Id
        description: The Client ID of the Google Calendar application.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      clientSecret:
        title: Client Secret
        description: The Client secret of the Google Calendar application.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      accessToken:
        title: Access Token
        description: The OAuth 2 access token for the Google Calendar application. This token typically expires after an hour. For long term usage, set the `refreshToken` property.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      refreshToken:
        title: Refresh Token
        description: The OAuth 2 refresh token for the Google Calendar application. The Google Calendar component can obtain a new `accessToken` whenever the current one expires. Set this value for long term usage.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      delay:
        title: Delay
        description: The number of milliseconds before the next poll.
        type: integer
        default: 500
      applicationName:
        title: Application name
        description: The Google Calendar application name.
        type: string
      syncFlow:
        title: Sync Flow
        description: Specifies to sync events for incremental synchronization.
        type: boolean
        default: false
      consumeFromNow:
        title: Consume from now
        description: Specfies to consume events in the calendar from now on.
        type: boolean
        default: true
  dataTypes:
    out:
      default: json
      headers:
        CamelGoogleCalendarEventId:
          title: Camel Google Calendar Event Id
          description: The calendar event id
          type: string
      types:
        json:
          format: "application-json"
          description: Json representation of a Google Calendar event object.
          mediaType: application/json
        cloudevents:
          format: "google-calendar-stream:application-cloudevents"
          description: Output data type represents Google Calendar Stream response as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange with respective data from the Calendar Events and its derived object.
          headers:
            CamelCloudEventID:
              title: CloudEvent ID
              description: The Camel exchange id set as event id
              type: string
            CamelCloudEventType:
              title: CloudEvent Type
              description: The event type
              default: "org.apache.camel.event.google.calendar.stream.consume"
              type: string
            CamelCloudEventSource:
              title: CloudEvent Source
              description: The event source. By default, the Calendar Event Id with prefix "google.calendar.stream.".
              type: string
            CamelCloudEventSubject:
              title: CloudEvent Subject
              description: The event subject. The Calendar event type.
              type: string
            CamelCloudEventTime:
              title: CloudEvent Time
              description: The exchange creation timestamp as event time.
              type: string
  dependencies:
  - "camel:jackson"
  - "camel:google-calendar"
  - "camel:kamelet"
  template:
    from:
      uri: "google-calendar-stream://{{index}}"
      parameters:
        clientId: "{{clientId}}"
        calendarId: "{{calendarId}}"
        accessToken: "{{accessToken}}"
        refreshToken: "{{refreshToken}}"
        clientSecret: "{{clientSecret}}"
        delay: "{{delay}}"
        applicationName: "{{applicationName}}"
        syncFlow: "{{syncFlow}}"
        consumeFromNow: "{{consumeFromNow}}"
      steps:
      - marshal:
          json: {}
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: google-functions-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 4108 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Google Functions"
    camel.apache.org/kamelet.namespace: "GCP"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Google Functions Sink"
    description: Send data to Google Functions.
    required:
      - projectId
      - functionName
      - region
      - serviceAccountKey
    type: object
    properties:
      projectId:
        title: Project Id
        description: The Google Cloud Functions Project ID.
        type: string
      region:
        title: Region 
        description: The region where Google Cloud Functions has been deployed.
        type: string
      functionName:
        title: Function Name
        description: The Function name.
        type: string
      serviceAccountKey:
        title: Service Account Key
        description: The path to the service account key file that provides credentials for the Google Cloud Functions platform. You must encode this value in base64.
        type: binary
        x-descriptors:
        - urn:camel:group:credentials
  dependencies:
    - "camel:kamelet"
    - "camel:google-functions"
    - "camel:jackson"
  template:
    from:
      uri: kamelet:source
      steps:
      - to:
          uri: "google-functions://{{functionName}}"
          parameters:
            serviceAccountKey: "base64:{{serviceAccountKey}}"
            project: "{{projectId}}"
            location: "{{region}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: google-mail-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjUyIDQyIDg4IDY2Ij4KPHBhdGggZmlsbD0iIzQyODVmNCIgZD0iTTU4IDEwOGgxNFY3NEw1MiA1OXY0M2MwIDMuMzIgMi42OSA2IDYgNiIvPgo8cGF0aCBmaWxsPSIjMzRhODUzIiBkPSJNMTIwIDEwOGgxNGMzLjMyIDAgNi0yLjY5IDYtNlY1OWwtMjAgMTUiLz4KPHBhdGggZmlsbD0iI2ZiYmMwNCIgZD0iTTEyMCA0OHYyNmwyMC0xNXYtOGMwLTcuNDItOC40Ny0xMS42NS0xNC40LTcuMiIvPgo8cGF0aCBmaWxsPSIjZWE0MzM1IiBkPSJNNzIgNzRWNDhsMjQgMTggMjQtMTh2MjZMOTYgOTIiLz4KPHBhdGggZmlsbD0iI2M1MjIxZiIgZD0iTTUyIDUxdjhsMjAgMTVWNDhsLTUuNi00LjJjLTUuOTQtNC40NS0xNC40LS4yMi0xNC40IDcuMiIvPgo8L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Google Mail"
    camel.apache.org/kamelet.namespace: "GCP"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Google Mail Source"
    description: Receive data from Google Mail.
    required:
      - index
      - clientId
      - accessToken
      - refreshToken
      - clientSecret
      - applicationName
    type: object
    properties:
      index:
        title: Index
        description: An index for the google mail endpoint.
        type: string
      clientId:
        title: Client ID
        description: Client ID of the gmail application.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      clientSecret:
        title: Client Secret
        description: Client Secret of the gmail application.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      accessToken:
        title: Access Token
        description: OAuth 2 access token for google mail application. This typically expires after an hour so refreshToken is recommended for long term usage.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      refreshToken:
        title: Refresh Token
        description: OAuth 2 refresh token for google mail application. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      delay:
        title: Delay
        description: The number of milliseconds before the next poll
        type: integer
        default: 500
      applicationName:
        title: Application name
        description: Google Mail application name
        type: string
      markAsRead:
        title: Mark as Read
        description: Mark the message as read once it has been consumed
        type: boolean
        default: true
      labels:
        title: Gmail Labels
        description: Comma separated list of labels to take into account
        type: string
        example: "inbox"
      query:
        title: Gmail Query
        description: The query to execute on gmail box
        type: string
        example: "is:unread -category:(promotions OR social)"
        default: "is:unread"
  dataTypes:
    out:
      default: json
      headers:
        CamelGoogleMailId:
          title: Camel Google Mail Id
          description: The ID of the message
          type: string
        CamelGoogleMailStreamTo:
          title: Camel Google Mail To Address
          description: The recipient of the message
          type: string
        CamelGoogleMailStreamFrom:
          title: Camel Google Mail From Address
          description: The emitter of the message
          type: string
        CamelGoogleMailStreamCc:
          title: Camel Google Mail Cc
          description: The carbon copy of the message
          type: string
        CamelGoogleMailStreamBcc:
          title: Camel Google Mail Bcc
          description: The blind carbon cpoy of the message
          type: string
        CamelGoogleMailStreamSubject:
          title: Camel Google Mail Subject
          description: The subject of the message
          type: string
      types:
        json:
          format: "application-json"
          description: Json representation of a Google Mail event object.
          mediaType: application/json
        cloudevents:
          format: "google-mail-stream:application-cloudevents"
          description: Output data type represents Google Mail Streams response as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange with respective data from the Mail and its derived object.
          headers:
            CamelCloudEventID:
              title: CloudEvent ID
              description: The Camel exchange id set as event id
              type: string
            CamelCloudEventType:
              title: CloudEvent Type
              description: The event type
              default: "org.apache.camel.event.google.mail.stream.consume"
              type: string
            CamelCloudEventSource:
              title: CloudEvent Source
              description: The event source. By default, the Mail From with prefix "google.mail.stream.".
              type: string
            CamelCloudEventSubject:
              title: CloudEvent Subject
              description: The event subject. The Calendar event type.
              type: string
            CamelCloudEventTime:
              title: CloudEvent Time
              description: The exchange creation timestamp as event time.
              type: string
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:google-mail"
  template:
    from:
      uri: "google-mail-stream://{{index}}"
      parameters:
        clientId: "{{clientId}}"
        accessToken: "{{accessToken}}"
        refreshToken: "{{refreshToken}}"
        clientSecret: "{{clientSecret}}"
        delay: "{{delay}}"
        applicationName: "{{applicationName}}"
        markAsRead: "{{markAsRead}}"
        labels: "{{labels}}"
        query: "{{query}}"
      steps:
      - marshal:
          json: {}
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: google-pubsub-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9Ii0xLjYzMzIzNTQzIDcuMDMyNjA5MzMgMTMxLjI2NTc0NjgyIDExNC40MzkzOTA2NyIgd2lkdGg9IjI1MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI2NCIgeDI9IjY0IiB5MT0iNy4wMzQiIHkyPSIxMjAuNzg5Ij48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM0Mzg3ZmQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM0NjgzZWEiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGQ9Im0yNy43OSAxMTUuMjE3LTI2LjI1LTQ1LjQ2OGExMS40OTkgMTEuNDk5IDAgMCAxIDAtMTEuNDk5bDI2LjI1LTQ1LjQ2N2ExMS41IDExLjUgMCAwIDEgOS45Ni01Ljc1aDUyLjVhMTEuNSAxMS41IDAgMCAxIDkuOTU5IDUuNzVsMjYuMjUgNDUuNDY3YTExLjQ5OSAxMS40OTkgMCAwIDEgMCAxMS41bC0yNi4yNSA0NS40NjdhMTEuNSAxMS41IDAgMCAxIC05Ljk1OSA1Ljc0OWgtNTIuNWExMS40OTkgMTEuNDk5IDAgMCAxIC05Ljk2LTUuNzV6IiBmaWxsPSJ1cmwoI2EpIi8+PHBhdGggZD0ibTEyMS4wNTQgNzkuNTgtMzEuODM2LTMxLjgzNC01Ljg1OCAxLjIxNC0xNC42MDMtMTQuNjAyLTQuNjczIDguNzM5LTIuNTM0IDEwLjEwOSA0LjI4OSA0LjI5LTguMjM4IDEuNjgyLTExLjI5Ni0xMS4yOTYtNy42NyA3LjM3MyAxNC4xMjMgMTQuMTI1LTE0Ljk3IDExLjkgNDAuMTkzIDQwLjE5MiAxOS41ODEtLjE5eiIgb3BhY2l0eT0iLjA3Ii8+PGcgZmlsbD0iI2ZmZiI+PGNpcmNsZSBjeD0iODUuNTE5IiBjeT0iNTEuNTc2IiByPSI1LjMyNCIvPjxjaXJjbGUgY3g9IjQyLjQ4IiBjeT0iNTEuNTc2IiByPSI1LjMyNCIvPjxjaXJjbGUgY3g9IjY0IiBjeT0iODguODQ5IiByPSI1LjMyNSIvPjxjaXJjbGUgY3g9IjY0IiBjeT0iNjQiIHI9IjguNjAyIi8+PGNpcmNsZSBjeD0iNDIuNDgiIGN5PSI3Ni40MjQiIHI9IjYuNzU4Ii8+PGNpcmNsZSBjeD0iODUuNTE5IiBjeT0iNzYuNDI0IiByPSI2Ljc1OCIvPjxjaXJjbGUgY3g9IjY0IiBjeT0iMzkuMTUxIiByPSI2Ljc1OSIvPjwvZz48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Google Pubsub"
    camel.apache.org/kamelet.namespace: "GCP"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Google Pubsub Sink"
    description: Send messages to Google Cloud Pub/Sub.
    required:
      - projectId
      - destinationName
    type: object
    properties:
      projectId:
        title: Project Id
        description: The Google Cloud Pub/Sub Project ID.
        type: string
      destinationName:
        title: Destination Name
        description: The destination name.
        type: string
      serviceAccountKey:
        title: Service Account Key
        description: The service account key to use as credentials for the Pub/Sub publisher/subscriber. You must encode this value in base64.
        type: binary
        x-descriptors:
        - urn:camel:group:credentials
  dependencies:
    - "camel:kamelet"
    - "camel:google-pubsub"
    - "camel:jackson"
  template:
    from:
      uri: kamelet:source
      steps:
      - to:
          uri: "google-pubsub://{{projectId}}:{{destinationName}}"
          parameters:
            serviceAccountKey: "base64:{{?serviceAccountKey}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: google-pubsub-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9Ii0xLjYzMzIzNTQzIDcuMDMyNjA5MzMgMTMxLjI2NTc0NjgyIDExNC40MzkzOTA2NyIgd2lkdGg9IjI1MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI2NCIgeDI9IjY0IiB5MT0iNy4wMzQiIHkyPSIxMjAuNzg5Ij48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM0Mzg3ZmQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM0NjgzZWEiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGQ9Im0yNy43OSAxMTUuMjE3LTI2LjI1LTQ1LjQ2OGExMS40OTkgMTEuNDk5IDAgMCAxIDAtMTEuNDk5bDI2LjI1LTQ1LjQ2N2ExMS41IDExLjUgMCAwIDEgOS45Ni01Ljc1aDUyLjVhMTEuNSAxMS41IDAgMCAxIDkuOTU5IDUuNzVsMjYuMjUgNDUuNDY3YTExLjQ5OSAxMS40OTkgMCAwIDEgMCAxMS41bC0yNi4yNSA0NS40NjdhMTEuNSAxMS41IDAgMCAxIC05Ljk1OSA1Ljc0OWgtNTIuNWExMS40OTkgMTEuNDk5IDAgMCAxIC05Ljk2LTUuNzV6IiBmaWxsPSJ1cmwoI2EpIi8+PHBhdGggZD0ibTEyMS4wNTQgNzkuNTgtMzEuODM2LTMxLjgzNC01Ljg1OCAxLjIxNC0xNC42MDMtMTQuNjAyLTQuNjczIDguNzM5LTIuNTM0IDEwLjEwOSA0LjI4OSA0LjI5LTguMjM4IDEuNjgyLTExLjI5Ni0xMS4yOTYtNy42NyA3LjM3MyAxNC4xMjMgMTQuMTI1LTE0Ljk3IDExLjkgNDAuMTkzIDQwLjE5MiAxOS41ODEtLjE5eiIgb3BhY2l0eT0iLjA3Ii8+PGcgZmlsbD0iI2ZmZiI+PGNpcmNsZSBjeD0iODUuNTE5IiBjeT0iNTEuNTc2IiByPSI1LjMyNCIvPjxjaXJjbGUgY3g9IjQyLjQ4IiBjeT0iNTEuNTc2IiByPSI1LjMyNCIvPjxjaXJjbGUgY3g9IjY0IiBjeT0iODguODQ5IiByPSI1LjMyNSIvPjxjaXJjbGUgY3g9IjY0IiBjeT0iNjQiIHI9IjguNjAyIi8+PGNpcmNsZSBjeD0iNDIuNDgiIGN5PSI3Ni40MjQiIHI9IjYuNzU4Ii8+PGNpcmNsZSBjeD0iODUuNTE5IiBjeT0iNzYuNDI0IiByPSI2Ljc1OCIvPjxjaXJjbGUgY3g9IjY0IiBjeT0iMzkuMTUxIiByPSI2Ljc1OSIvPjwvZz48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Google Pubsub"
    camel.apache.org/kamelet.namespace: "GCP"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Google Pubsub Source"
    description: Consume messages from Google Cloud Pub/Sub.
    required:
      - projectId
      - subscriptionName
    type: object
    properties:
      projectId:
        title: Project Id
        description: The Google Cloud Pub/Sub Project ID.
        type: string
      subscriptionName:
        title: Subscription Name
        description: The subscription name.
        type: string
      serviceAccountKey:
        title: Service Account Key
        description: The service account key to use as credentials for the Pub/Sub publisher/subscriber. You must encode this value in base64.
        type: binary
        x-descriptors:
        - urn:camel:group:credentials
      synchronousPull:
        title: Synchronous Pull
        description: Specifies to synchronously pull batches of messages.
        type: boolean
        default: false
      maxMessagesPerPoll:
        title: Max Messages Per Poll
        description: The maximum number of messages to receive from the server in a single API call.
        type: integer
        default: 1
      concurrentConsumers:
        title: Concurrent Consumers
        description: The number of parallel streams to consume from the subscription.
        type: integer
        default: 1
  dependencies:
    - "camel:kamelet"
    - "camel:google-pubsub"
    - "camel:jackson"
  template:
    from:
      uri: "google-pubsub://{{projectId}}:{{subscriptionName}}"
      parameters:
        serviceAccountKey: "base64:{{?serviceAccountKey}}"
        synchronousPull: "{{synchronousPull}}"
        maxMessagesPerPoll: "{{maxMessagesPerPoll}}"
        concurrentConsumers: "{{concurrentConsumers}}"
      steps:
      - to: kamelet:sink
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: google-sheets-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA2NCA4OCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNjQgODg7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojMERDNTRDO30KCS5zdDF7ZmlsbDojMDg5NjJEO30KCS5zdDJ7ZmlsbDojRkRGRkZGO30KPC9zdHlsZT4KPGcgaWQ9IkxheWVyXzQiPgoJPHBhdGggY2xhc3M9InN0MCIgZD0iTTU4LDg4SDZjLTMuMywwLTYtMi43LTYtNlY2YzAtMy4zLDIuNy02LDYtNmgzNmwyMiwyMnY2MEM2NCw4NS4zLDYxLjMsODgsNTgsODh6Ii8+Cgk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNDIsMGwyMiwyMkg0MlYweiIvPgoJPHBhdGggY2xhc3M9InN0MiIgZD0iTTEyLDM0LjV2MjhoNDB2LTI4SDEyeiBNMTcsMzkuNWgxMi41VjQ2SDE3VjM5LjV6IE0xNyw1MWgxMi41djYuNUgxN1Y1MXogTTQ3LDU3LjVIMzQuNVY1MUg0N1Y1Ny41eiBNNDcsNDYKCQlIMzQuNXYtNi41SDQ3VjQ2eiIvPgo8L2c+Cjwvc3ZnPgo="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Google Sheets"
    camel.apache.org/kamelet.namespace: "GCP"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Google Sheets Sink"
    description: Send data to Google Sheets and update/append values on a spreadsheet.
    required:
      - spreadsheetId
      - clientId
      - accessToken
      - refreshToken
      - clientSecret
    type: object
    properties:
      spreadsheetId:
        title: Spreadsheet ID
        description: The Spreadsheet ID to be used as identifier
        type: string
      clientId:
        title: Client Id
        description: Client ID of the sheets application
        type: string
        format: password
        x-descriptors:
          - urn:camel:group:credentials
      clientSecret:
        title: Client Secret
        description: Client Secret of the sheets application
        type: string
        format: password
        x-descriptors:
          - urn:camel:group:credentials
      accessToken:
        title: Access Token
        description: OAuth 2 access token for google sheets application. This typically expires after an hour so refreshToken is recommended for long term usage.
        type: string
        format: password
        x-descriptors:
          - urn:camel:group:credentials
      refreshToken:
        title: Refresh Token
        description: OAuth 2 refresh token for google sheets application. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived.
        type: string
        format: password
        x-descriptors:
          - urn:camel:group:credentials
      applicationName:
        title: Application Name
        description: Google Sheets application name
        type: string
      operation:
        title: Operation Mode
        description: Operation to execute (update or append)
        type: string
        enum: [ "update", "append" ]
        default: append
        example: append
      range:
        title: Cells Range
        description: The cell range of rows and columns to write data to.
        type: string
        example: "A1:B3"
      majorDimension:
        title: Major Dimension
        description: Specifies the major dimension that the given values should use (ROWS or COLUMNS).
        type: string
        enum: [ "COLUMNS", "ROWS" ]
        default: "ROWS"
        example: "ROWS"
      columnNames:
        title: Column Names
        description: Optional custom column names that map to cell coordinates based on their position.
        type: string
        default: "A"
      valueInputOption:
        title: Value Input Option
        description: Controls how the entered values should be be interpreted when adding them.
        type: string
        enum: [ "USER_ENTERED", "RAW" ]
        default: "USER_ENTERED"
        example: "USER_ENTERED"
  dataTypes:
    in:
      default: json-struct
      types:
        json-struct:
          format: "google-sheets:application-x-struct"
          description: Special Json representation of Google Sheets ValueRange object with just row and column values as a generic JsonNode.
          headers:
            CamelGoogleSheets.range:
              title: Range
              description: Cells range to write data to.
              default: A:A
              type: string
            CamelGoogleSheets.spreadsheetId:
              title: Spreadsheet id
              description: The Spreadsheet ID to be used as identifier.
              type: string
            CamelGoogleSheets.majorDimension:
              title: Major dimension
              description: Specifies the major dimension that the given values should use (ROWS or COLUMNS).
              default: ROWS
              type: string
            CamelGoogleSheets.columnNames:
              title: Column Names
              description: Optional custom column names that map to cell coordinates based on their position.
              default: A
              type: string
            CamelGoogleSheets.valueInputOption:
              title: Value Input Option
              description: Controls how the entered values should be be interpreted when adding them.
              default: USER_ENTERED
              type: string
          mediaType: application/json
  dependencies:
    - "camel:core"
    - "camel:jackson"
    - "camel:kamelet"
    - "camel:google-sheets"
  template:
    from:
      uri: "kamelet:source"
      steps:
        - setHeader:
            name: CamelGoogleSheets.spreadsheetId
            simple: "{{spreadsheetId}}"
        - setHeader:
            name: CamelGoogleSheets.range
            simple: "{{?range}}"
        - setHeader:
            name: CamelGoogleSheets.majorDimension
            simple: "{{?majorDimension}}"
        - setHeader:
            name: CamelGoogleSheets.columnNames
            simple: "{{?columnNames}}"
        - setHeader:
            name: CamelGoogleSheets.valueInputOption
            simple: "{{?valueInputOption}}"
        - transform:
            toType: "google-sheets:application-x-struct"
        - to:
            uri: "google-sheets:data/{{operation}}"
            parameters:
              spreadsheetId: "{{spreadsheetId}}"
              clientId: "{{clientId}}"
              accessToken: "{{accessToken}}"
              refreshToken: "{{refreshToken}}"
              clientSecret: "{{clientSecret}}"
              applicationName: "{{?applicationName}}"
              range: "{{?range}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: google-sheets-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA2NCA4OCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNjQgODg7IiB4bWw6c3BhY2U9InByZXNlcnZlIj4KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KCS5zdDB7ZmlsbDojMERDNTRDO30KCS5zdDF7ZmlsbDojMDg5NjJEO30KCS5zdDJ7ZmlsbDojRkRGRkZGO30KPC9zdHlsZT4KPGcgaWQ9IkxheWVyXzQiPgoJPHBhdGggY2xhc3M9InN0MCIgZD0iTTU4LDg4SDZjLTMuMywwLTYtMi43LTYtNlY2YzAtMy4zLDIuNy02LDYtNmgzNmwyMiwyMnY2MEM2NCw4NS4zLDYxLjMsODgsNTgsODh6Ii8+Cgk8cGF0aCBjbGFzcz0ic3QxIiBkPSJNNDIsMGwyMiwyMkg0MlYweiIvPgoJPHBhdGggY2xhc3M9InN0MiIgZD0iTTEyLDM0LjV2MjhoNDB2LTI4SDEyeiBNMTcsMzkuNWgxMi41VjQ2SDE3VjM5LjV6IE0xNyw1MWgxMi41djYuNUgxN1Y1MXogTTQ3LDU3LjVIMzQuNVY1MUg0N1Y1Ny41eiBNNDcsNDYKCQlIMzQuNXYtNi41SDQ3VjQ2eiIvPgo8L2c+Cjwvc3ZnPgo="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Google Sheets"
    camel.apache.org/kamelet.namespace: "GCP"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Google Sheets Source"
    description: Receive data from Google Sheets.
    required:
      - spreadsheetId
      - clientId
      - accessToken
      - refreshToken
      - clientSecret
    type: object
    properties:
      spreadsheetId:
        title: Spreadsheet ID
        description: The Spreadsheet ID to be used as events source
        type: string
      clientId:
        title: Client Id
        description: Client ID of the sheets application
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      clientSecret:
        title: Client Secret
        description: Client Secret of the sheets application
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      accessToken:
        title: Access Token
        description: OAuth 2 access token for google sheets application. This typically expires after an hour so refreshToken is recommended for long term usage.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      refreshToken:
        title: Refresh Token
        description: OAuth 2 refresh token for google sheets application. Using this, the Google Calendar component can obtain a new accessToken whenever the current one expires - a necessity if the application is long-lived.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      delay:
        title: Delay
        description: The number of milliseconds before the next poll
        type: integer
        default: 500
      repeatCount:
        title: Repeat Count
        description: Specifies a maximum limit of number of fires
        type: integer
      applicationName:
        title: Application name
        description: Google Sheets application name
        type: string
      splitResults:
        title: Split Results
        description: True if value range result should be split into rows or columns to process each of them individually.
        type: boolean
        default: true
      range:
        title: Cells Range
        description: The range of rows and columns in a sheet to get data from.
        type: string
        example: "A1:B3"
      majorDimension:
        title: Major Dimension
        description: Specifies the major dimension that the given values should use (ROWS or COLUMNS).
        type: string
        enum: [ "COLUMNS", "ROWS" ]
        default: "ROWS"
        example: "ROWS"
      columnNames:
        title: Column Names
        description: Optional custom column names that map to cell coordinates based on their position.
        type: string
        default: "A"
  dataTypes:
    out:
      default: json
      headers:
        CamelGoogleSheets.range:
          title: Range
          description: Cells range to write data to.
          default: A:A
          type: string
        CamelGoogleSheets.spreadsheetId:
          title: Spreadsheet id
          description: The Spreadsheet ID to be used as identifier.
          type: string
        CamelGoogleSheets.majorDimension:
          title: Major dimension
          description: Specifies the major dimension that the given values should use (ROWS or COLUMNS).
          default: ROWS
          type: string
        CamelGoogleSheets.columnNames:
          title: Column Names
          description: Optional custom column names that map to cell coordinates based on their position.
          default: A
          type: string
        CamelGoogleSheets.splitResults:
          title: Split Results
          description: True if value range result should be split into rows or columns to process each of them individually.
          default: "true"
          type: boolean
      types:
        json:
          format: "application-json"
          description: Json representation of a GoogleSheets ValueRange object that holds all values for the given cell range.
          mediaType: application/json
        json-struct:
          format: "google-sheets:application-x-struct"
          description: Special Json representation of Google Sheets ValueRange object with just row and column values as a generic JsonNode.
          mediaType: application/json
        cloudevents:
          format: "google-sheets-stream:application-cloudevents"
          description: Output data type represents Google Sheets Stream response as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange with respective data from the Spreadsheet and its derived object.
          headers:
            CamelCloudEventID:
              title: CloudEvent ID
              description: The Camel exchange id set as event id
              type: string
            CamelCloudEventType:
              title: CloudEvent Type
              description: The event type
              default: "org.apache.camel.event.google.sheets.stream.consume"
              type: string
            CamelCloudEventSource:
              title: CloudEvent Source
              description: The event source. By default, the Spreadsheet Id with prefix "google.sheets.stream.".
              type: string
            CamelCloudEventSubject:
              title: CloudEvent Subject
              description: The event subject. Usually the Spreadsheet URL.
              type: string
            CamelCloudEventTime:
              title: CloudEvent Time
              description: The exchange creation timestamp as event time.
              type: string
  dependencies:
  - "camel:core"
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:google-sheets"
  template:
    from:
      uri: "google-sheets-stream://{{spreadsheetId}}"
      parameters:
        clientId: "{{clientId}}"
        accessToken: "{{accessToken}}"
        refreshToken: "{{refreshToken}}"
        clientSecret: "{{clientSecret}}"
        delay: "{{delay}}"
        applicationName: "{{?applicationName}}"
        splitResults: "{{splitResults}}"
        range: "{{?range}}"
        repeatCount: "{{?repeatCount}}"
      steps:
      - marshal:
          json: {}
      - setHeader:
          name: CamelGoogleSheets.spreadsheetId
          simple: "{{spreadsheetId}}"
      - setHeader:
          name: CamelGoogleSheets.range
          simple: "{{?range}}"
      - setHeader:
          name: CamelGoogleSheets.majorDimension
          simple: "{{?majorDimension}}"
      - setHeader:
          name: CamelGoogleSheets.columnNames
          simple: "{{?columnNames}}"
      - setHeader:
          name: CamelGoogleSheets.splitResults
          simple: "{{?splitResults}}"
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: google-storage-event-based-source
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9Ii0xLjYzMzIzNTQzIDcuMDMyNjA5MzMgMTMxLjI2NTc0NjgyIDExNC40MzkzOTA2NyIgd2lkdGg9IjI1MDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI2NCIgeDI9IjY0IiB5MT0iNy4wMzQiIHkyPSIxMjAuNzg5Ij48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM0Mzg3ZmQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiM0NjgzZWEiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGQ9Im0yNy43OSAxMTUuMjE3LTI2LjI1LTQ1LjQ2OGExMS40OTkgMTEuNDk5IDAgMCAxIDAtMTEuNDk5bDI2LjI1LTQ1LjQ2N2ExMS41IDExLjUgMCAwIDEgOS45Ni01Ljc1aDUyLjVhMTEuNSAxMS41IDAgMCAxIDkuOTU5IDUuNzVsMjYuMjUgNDUuNDY3YTExLjQ5OSAxMS40OTkgMCAwIDEgMCAxMS41bC0yNi4yNSA0NS40NjdhMTEuNSAxMS41IDAgMCAxIC05Ljk1OSA1Ljc0OWgtNTIuNWExMS40OTkgMTEuNDk5IDAgMCAxIC05Ljk2LTUuNzV6IiBmaWxsPSJ1cmwoI2EpIi8+PHBhdGggZD0ibTEyMS4wNTQgNzkuNTgtMzEuODM2LTMxLjgzNC01Ljg1OCAxLjIxNC0xNC42MDMtMTQuNjAyLTQuNjczIDguNzM5LTIuNTM0IDEwLjEwOSA0LjI4OSA0LjI5LTguMjM4IDEuNjgyLTExLjI5Ni0xMS4yOTYtNy42NyA3LjM3MyAxNC4xMjMgMTQuMTI1LTE0Ljk3IDExLjkgNDAuMTkzIDQwLjE5MiAxOS41ODEtLjE5eiIgb3BhY2l0eT0iLjA3Ii8+PGcgZmlsbD0iI2ZmZiI+PGNpcmNsZSBjeD0iODUuNTE5IiBjeT0iNTEuNTc2IiByPSI1LjMyNCIvPjxjaXJjbGUgY3g9IjQyLjQ4IiBjeT0iNTEuNTc2IiByPSI1LjMyNCIvPjxjaXJjbGUgY3g9IjY0IiBjeT0iODguODQ5IiByPSI1LjMyNSIvPjxjaXJjbGUgY3g9IjY0IiBjeT0iNjQiIHI9IjguNjAyIi8+PGNpcmNsZSBjeD0iNDIuNDgiIGN5PSI3Ni40MjQiIHI9IjYuNzU4Ii8+PGNpcmNsZSBjeD0iODUuNTE5IiBjeT0iNzYuNDI0IiByPSI2Ljc1OCIvPjxjaXJjbGUgY3g9IjY0IiBjeT0iMzkuMTUxIiByPSI2Ljc1OSIvPjwvZz48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Google Storage Event-based"
    camel.apache.org/kamelet.namespace: "GCP"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Google Storage Event-based Source"
    description: Receive data from Google Pubsub reporting events related to a Google Storage bucket.
    required:
      - projectId
      - subscriptionName
      - serviceAccountKey
      - bucketNameOrArn
    type: object
    properties:
      projectId:
        title: Project Id
        description: The Google Cloud Pub/Sub Project ID.
        type: string
      subscriptionName:
        title: Subscription Name
        description: The subscription name.
        type: string
      serviceAccountKey:
        title: Service Account Key
        description: The service account key to use as credentials for the Pub/Sub publisher/subscriber. You must encode this value in base64.
        type: binary
        x-descriptors:
        - urn:camel:group:credentials
      synchronousPull:
        title: Synchronous Pull
        description: Specifies to synchronously pull batches of messages.
        type: boolean
        default: false
      maxMessagesPerPoll:
        title: Max Messages Per Poll
        description: The maximum number of messages to receive from the server in a single API call.
        type: integer
        default: 1
      concurrentConsumers:
        title: Concurrent Consumers
        description: The number of parallel streams to consume from the subscription.
        type: integer
        default: 1
      bucketNameOrArn:
        title: Bucket Name Or ARN
        description: The Google Cloud Storage bucket name or Bucket Amazon Resource Name (ARN).
        type: string
      getObject:
        title: Get Object in Bucket
        description: >-
          If `getObject` is enabled, then the file created in the Bucket is
          retreived and returned as body, if not only the event is returned as body.
        type: boolean
        default: false
  dependencies:
    - "camel:kamelet"
    - "camel:google-pubsub"
    - "camel:google-storage"
    - "camel:jackson"
    - "camel:core"
  template:
    from:
      uri: "google-pubsub://{{projectId}}:{{subscriptionName}}"
      parameters:
        serviceAccountKey: "base64:{{serviceAccountKey}}"
        synchronousPull: "{{synchronousPull}}"
        maxMessagesPerPoll: "{{maxMessagesPerPoll}}"
        concurrentConsumers: "{{concurrentConsumers}}"
      steps:
        - choice:
            precondition: true
            when:
              - simple: '${properties:getObject:true}'
                steps:
                  - setProperty:
                      name: google-storage-event-type
                      simple: "${headers.CamelGooglePubsubAttributes[eventType]}"
                  - setProperty:
                      name: google-storage-object-id
                      simple: "${headers.CamelGooglePubsubAttributes[objectId]}"
                  - setProperty:
                      name: google-storage-bucket-id
                      simple: "${headers.CamelGooglePubsubAttributes[bucketId]}"
                  - choice:
                      when:
                        - simple: '${exchangeProperty.google-storage-event-type} == "OBJECT_FINALIZE" && ${exchangeProperty.google-storage-bucket-id} == "{{bucketNameOrArn}}"'
                          steps:
                            - toD: >-
                                google-storage:{{bucketNameOrArn}}?serviceAccountKey=base64:{{serviceAccountKey}}&operation=getObject&objectName=${exchangeProperty.google-storage-object-id}
        - to: 'kamelet:sink'
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: google-storage-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBoZWlnaHQ9IjgwMCIgd2lkdGg9IjEyMDAiIHZpZXdCb3g9Ii0xOS4yMDAxNSAtMjguNDgzIDE2Ni40MDEzIDE3MC44OTgiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTcuMDM0KSI+PGxpbmVhckdyYWRpZW50IHkyPSIxMjAuNzg5IiB4Mj0iNjQiIHkxPSI3LjAzNCIgeDE9IjY0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgaWQ9ImEiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzQzODdmZCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzQ2ODNlYSIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggZD0iTTI3Ljc5IDExNS4yMTdMMS41NCA2OS43NDlhMTEuNDk5IDExLjQ5OSAwIDAxMC0xMS40OTlsMjYuMjUtNDUuNDY3YTExLjUgMTEuNSAwIDAxOS45Ni01Ljc1aDUyLjVhMTEuNSAxMS41IDAgMDE5Ljk1OSA1Ljc1bDI2LjI1IDQ1LjQ2N2ExMS40OTkgMTEuNDk5IDAgMDEwIDExLjVsLTI2LjI1IDQ1LjQ2NmExMS41IDExLjUgMCAwMS05Ljk1OSA1Ljc1aC01Mi41YTExLjQ5OSAxMS40OTkgMCAwMS05Ljk2LTUuNzV6IiBmaWxsPSJ1cmwoI2EpIi8+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTcuMDM0KSI+PGRlZnM+PHBhdGggZD0iTTI3Ljc5MSAxMTUuMjE3TDEuNTQxIDY5Ljc0OWExMS40OTkgMTEuNDk5IDAgMDEwLTExLjQ5OWwyNi4yNS00NS40NjdhMTEuNDk5IDExLjQ5OSAwIDAxOS45NTktNS43NWg1Mi41YTExLjUgMTEuNSAwIDAxOS45NiA1Ljc1bDI2LjI1IDQ1LjQ2N2ExMS40OTkgMTEuNDk5IDAgMDEwIDExLjVsLTI2LjI1IDQ1LjQ2NmExMS40OTkgMTEuNDk5IDAgMDEtOS45NiA1Ljc1aC01Mi41YTExLjQ5OSAxMS40OTkgMCAwMS05Ljk1OS01Ljc1eiIgaWQ9ImIiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJjIj48dXNlIGhlaWdodD0iMTAwJSIgd2lkdGg9IjEwMCUiIHhsaW5rOmhyZWY9IiNiIiBvdmVyZmxvdz0idmlzaWJsZSIvPjwvY2xpcFBhdGg+PHBhdGggY2xpcC1wYXRoPSJ1cmwoI2MpIiBvcGFjaXR5PSIuMDciIGQ9Ik00OS4zMTMgNTMuODc1bC03LjAxIDYuOTkgNS45NTcgNS45NTgtNS44OTggMTAuNDc2IDQ0LjYzNSA0NC42MzYgMTAuODE2LjAwMkwxMTguOTM2IDg0IDg1LjQ4OSA1MC41NXoiLz48L2c+PHBhdGggZD0iTTg0LjcgNDMuMjM2SDQzLjI2NGMtLjY2NyAwLTEuMjEyLjU0Ni0xLjIxMiAxLjIxNHY4LjU2NmMwIC42NjYuNTQ2IDEuMjEyIDEuMjEyIDEuMjEySDg0LjdjLjY2NyAwIDEuMjEzLS41NDYgMS4yMTMtMS4yMTJ2LTguNTY4YzAtLjY2Ni0uNTQ1LTEuMjEzLTEuMjEyLTEuMjEzbS02LjQxNiA3Ljk3NmEyLjQ4NCAyLjQ4NCAwIDAxLTIuNDc3LTIuNDggMi40NzUgMi40NzUgMCAwMTIuNDc3LTIuNDc3YzEuMzcgMCAyLjQ4IDEuMTAzIDIuNDggMi40NzdhMi40OCAyLjQ4IDAgMDEtMi40OCAyLjQ4bTYuNDE1IDguNDkxbC00MS40MzYuMDAyYy0uNjY3IDAtMS4yMTIuNTQ2LTEuMjEyIDEuMjE0djguNTY1YzAgLjY2Ni41NDYgMS4yMTMgMS4yMTIgMS4yMTNIODQuN2MuNjY3IDAgMS4yMTMtLjU0NyAxLjIxMy0xLjIxM3YtOC41NjdjMC0uNjY2LS41NDUtMS4yMTQtMS4yMTItMS4yMTRtLTYuNDE2IDcuOTc2YTIuNDgzIDIuNDgzIDAgMDEtMi40NzctMi40OCAyLjQ3NSAyLjQ3NSAwIDAxMi40NzctMi40NzcgMi40OCAyLjQ4IDAgMTEwIDQuOTU2IiBmaWxsPSIjZmZmIi8+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Google Storage"
    camel.apache.org/kamelet.namespace: "GCP"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Google Storage Sink"
    description: Upload objects to Google Cloud Storage.
    required:
      - bucketNameOrArn
    type: object
    properties:
      bucketNameOrArn:
        title: Bucket Name Or ARN
        description: The Google Cloud Storage bucket name or Bucket Amazon Resource Name (ARN).
        type: string
      serviceAccountKey:
        title: Service Account Key
        description: The service account key to use as credentials for Google Cloud Storage access. You must encode this value in base64.
        type: binary
        x-descriptors:
        - urn:camel:group:credentials
      autoCreateBucket:
        title: Autocreate Bucket
        description: Specifies to automatically create the Google Cloud Storage bucket.
        type: boolean
        default: false
  dependencies:
    - "camel:core"
    - "camel:kamelet"
    - "camel:google-storage"
    - "camel:jackson"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[file]}"
            steps:
            - setHeader:
                name: CamelGoogleCloudStorageObjectName
                simple: "${header[file]}"
          - simple: "${header[ce-file]}"
            steps:
            - setHeader:
                name: CamelGoogleCloudStorageObjectName
                simple: "${header[ce-file]}"
          otherwise:
            steps:
            - setHeader:
                name: CamelGoogleCloudStorageObjectName
                simple: "${exchangeId}"
      - to:
          uri: "google-storage://{{bucketNameOrArn}}"
          parameters:
            autoCreateBucket: "{{autoCreateBucket}}"
            serviceAccountKey: "base64:{{?serviceAccountKey}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: google-storage-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBoZWlnaHQ9IjgwMCIgd2lkdGg9IjEyMDAiIHZpZXdCb3g9Ii0xOS4yMDAxNSAtMjguNDgzIDE2Ni40MDEzIDE3MC44OTgiPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTcuMDM0KSI+PGxpbmVhckdyYWRpZW50IHkyPSIxMjAuNzg5IiB4Mj0iNjQiIHkxPSI3LjAzNCIgeDE9IjY0IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgaWQ9ImEiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzQzODdmZCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzQ2ODNlYSIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggZD0iTTI3Ljc5IDExNS4yMTdMMS41NCA2OS43NDlhMTEuNDk5IDExLjQ5OSAwIDAxMC0xMS40OTlsMjYuMjUtNDUuNDY3YTExLjUgMTEuNSAwIDAxOS45Ni01Ljc1aDUyLjVhMTEuNSAxMS41IDAgMDE5Ljk1OSA1Ljc1bDI2LjI1IDQ1LjQ2N2ExMS40OTkgMTEuNDk5IDAgMDEwIDExLjVsLTI2LjI1IDQ1LjQ2NmExMS41IDExLjUgMCAwMS05Ljk1OSA1Ljc1aC01Mi41YTExLjQ5OSAxMS40OTkgMCAwMS05Ljk2LTUuNzV6IiBmaWxsPSJ1cmwoI2EpIi8+PC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTcuMDM0KSI+PGRlZnM+PHBhdGggZD0iTTI3Ljc5MSAxMTUuMjE3TDEuNTQxIDY5Ljc0OWExMS40OTkgMTEuNDk5IDAgMDEwLTExLjQ5OWwyNi4yNS00NS40NjdhMTEuNDk5IDExLjQ5OSAwIDAxOS45NTktNS43NWg1Mi41YTExLjUgMTEuNSAwIDAxOS45NiA1Ljc1bDI2LjI1IDQ1LjQ2N2ExMS40OTkgMTEuNDk5IDAgMDEwIDExLjVsLTI2LjI1IDQ1LjQ2NmExMS40OTkgMTEuNDk5IDAgMDEtOS45NiA1Ljc1aC01Mi41YTExLjQ5OSAxMS40OTkgMCAwMS05Ljk1OS01Ljc1eiIgaWQ9ImIiLz48L2RlZnM+PGNsaXBQYXRoIGlkPSJjIj48dXNlIGhlaWdodD0iMTAwJSIgd2lkdGg9IjEwMCUiIHhsaW5rOmhyZWY9IiNiIiBvdmVyZmxvdz0idmlzaWJsZSIvPjwvY2xpcFBhdGg+PHBhdGggY2xpcC1wYXRoPSJ1cmwoI2MpIiBvcGFjaXR5PSIuMDciIGQ9Ik00OS4zMTMgNTMuODc1bC03LjAxIDYuOTkgNS45NTcgNS45NTgtNS44OTggMTAuNDc2IDQ0LjYzNSA0NC42MzYgMTAuODE2LjAwMkwxMTguOTM2IDg0IDg1LjQ4OSA1MC41NXoiLz48L2c+PHBhdGggZD0iTTg0LjcgNDMuMjM2SDQzLjI2NGMtLjY2NyAwLTEuMjEyLjU0Ni0xLjIxMiAxLjIxNHY4LjU2NmMwIC42NjYuNTQ2IDEuMjEyIDEuMjEyIDEuMjEySDg0LjdjLjY2NyAwIDEuMjEzLS41NDYgMS4yMTMtMS4yMTJ2LTguNTY4YzAtLjY2Ni0uNTQ1LTEuMjEzLTEuMjEyLTEuMjEzbS02LjQxNiA3Ljk3NmEyLjQ4NCAyLjQ4NCAwIDAxLTIuNDc3LTIuNDggMi40NzUgMi40NzUgMCAwMTIuNDc3LTIuNDc3YzEuMzcgMCAyLjQ4IDEuMTAzIDIuNDggMi40NzdhMi40OCAyLjQ4IDAgMDEtMi40OCAyLjQ4bTYuNDE1IDguNDkxbC00MS40MzYuMDAyYy0uNjY3IDAtMS4yMTIuNTQ2LTEuMjEyIDEuMjE0djguNTY1YzAgLjY2Ni41NDYgMS4yMTMgMS4yMTIgMS4yMTNIODQuN2MuNjY3IDAgMS4yMTMtLjU0NyAxLjIxMy0xLjIxM3YtOC41NjdjMC0uNjY2LS41NDUtMS4yMTQtMS4yMTItMS4yMTRtLTYuNDE2IDcuOTc2YTIuNDgzIDIuNDgzIDAgMDEtMi40NzctMi40OCAyLjQ3NSAyLjQ3NSAwIDAxMi40NzctMi40NzcgMi40OCAyLjQ4IDAgMTEwIDQuOTU2IiBmaWxsPSIjZmZmIi8+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Google Storage"
    camel.apache.org/kamelet.namespace: "GCP"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Google Storage Source"
    description: Consume objects from Google Cloud Storage.
    required:
      - bucketNameOrArn
    type: object
    properties:
      bucketNameOrArn:
        title: Bucket Name Or ARN
        description: The Google Cloud Storage bucket name or Bucket Amazon Resource Name (ARN).
        type: string
      serviceAccountKey:
        title: Service Account Key
        description: The service account key to use as credentials for Google Cloud Storage access. You must encode this value in base64.
        type: binary
        x-descriptors:
        - urn:camel:group:credentials
      deleteAfterRead:
        title: Auto-delete Objects
        description: Specifies to delete objects after consuming them.
        type: boolean
        default: true
      autoCreateBucket:
        title: Autocreate Bucket
        description: Specifies to automatically create the Google Cloud Storage bucket.
        type: boolean
        default: false
      prefix:
        title: Prefix
        description: The prefix which is used in the BlobListOptions to only consume objects we are interested in.
        type: string
      filter:
        title: Filter
        description: A regular expression to include only blobs with name matching it.
        type: string
  dataTypes:
    out:
      default: binary
      headers:
        CamelGoogleCloudStorageBucketName:
          title: Google Cloud Storage Bucket Name
          description: The bucket name which has been used to retrieve objects
          type: string
        CamelGoogleCloudStorageObjectName:
          title: Google Cloud Storage Object Name
          description: The object name under which the retrieved object is stored
          type: string
        CamelGoogleCloudStorageContentType:
          title: Content Type
          description: The content type of the retrieved object.
          default: application/octet-stream
          type: string
        CamelGoogleCloudStorageETag:
          title: ETag Value
          description: The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864.
          type: string
      types:
        binary:
          format: "application-octet-stream"
          description: Default binary representation of the Google Storage Cloud object retrieved from the bucket.
          mediaType: application/octet-stream
        cloudevents:
          format: "aws2-s3:application-cloudevents"
          description: Output data type represents Google Storage download response as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange with respective data from the Google Storage bucket and its derived object.
          headers:
            CamelCloudEventID:
              title: CloudEvent ID
              description: The Camel exchange id set as event id
              type: string
            CamelCloudEventType:
              title: CloudEvent Type
              description: The event type
              default: "org.apache.camel.event.google.storage.downloadTo"
              type: string
            CamelCloudEventSource:
              title: CloudEvent Source
              description: The event source. By default, the Google Cloud Storage bucket name with prefix "google.storage.bucket.".
              type: string
            CamelCloudEventSubject:
              title: CloudEvent Subject
              description: The event subject. Usually the Google Cloud Storage object name.
              type: string
            CamelCloudEventTime:
              title: CloudEvent Time
              description: The exchange creation timestamp as event time.
              type: string
  dependencies:
    - "camel:kamelet"
    - "camel:google-storage"
    - "camel:jackson"
  template:
    from:
      uri: "google-storage://{{bucketNameOrArn}}"
      parameters:
        autoCreateBucket: "{{autoCreateBucket}}"
        serviceAccountKey: "base64:{{?serviceAccountKey}}"
        deleteAfterRead: "{{deleteAfterRead}}"
        filter: "{{?filter}}"
        prefix: "{{?prefix}}"
      steps:
      - to: kamelet:sink
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: graphql-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MjAiCmhlaWdodD0iNDIwIiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiPgo8cGF0aCBzdHJva2Utd2lkdGg9IjI2IgpkPSJNMjA5LDE1YTE5NSwxOTUgMCAxLDAgMiwweiIvPgo8cGF0aCBzdHJva2Utd2lkdGg9IjE4IgpkPSJtMjEwLDE1djM5MG0xOTUtMTk1SDE1TTU5LDkwYTI2MCwyNjAgMCAwLDAgMzAyLDAgbTAsMjQwIGEyNjAsMjYwIDAgMCwwLTMwMiwwTTE5NSwyMGEyNTAsMjUwIDAgMCwwIDAsMzgyIG0zMCwwIGEyNTAsMjUwIDAgMCwwIDAtMzgyIi8+Cjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Graphql"
    camel.apache.org/kamelet.namespace: "Graphql"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "GraphQL Sink"
    description: Forward data to a GraphQL endpoint.
    required:
    - url
    type: object
    properties:
      url:
        title: GraphQL Server URL
        description: The URL to which you want to send data.
        type: string
        example: "http://example.com/graphql"
        pattern: "^(http|https)://.*"
      accessToken:
        title: GraphQL Access Token
        description: The access Token to use to access GraphQL server
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  dependencies:
  - "camel:graphql"
  - "camel:kamelet"
  - "camel:core"
  template:
    from:
      uri: kamelet:source
      steps:
      - to:
          uri: "graphql://{{url}}"
          parameters:
            accessToken: "{{?accessToken}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: has-header-filter-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "EIP"
spec:
  definition:
    title: "Has Header Filter Action"
    description: "Filter message based on the presence of one header."
    required:
      - name
    properties:
      name:
        title: Header Name
        description: The header name to evaluate. The header name must be passed by the source Kamelet. For Knative only, the name of the header requires a CloudEvent (ce-) prefix.
        type: string
        example: headerName
      value:
        title: Header Value
        description: An optional header value to compare the header to
        type: string
        example: headerValue
    type: object
  dependencies:
  - "camel:core"
  - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - setProperty:
          name: hasHeaderFilterActionValue
          constant: "{{value:}}"
      - choice:
          when:
          - simple: "${exchangeProperty[hasHeaderFilterActionValue]} != ''"
            steps:
            - filter:
                simple: "${header[{{name}}]} != ${exchangeProperty[hasHeaderFilterActionValue]}"
                steps:
                  - stop: {}
          otherwise:
            steps:
            - filter:
                simple: "${header[{{name}}]} == null"
                steps:
                  - stop: {}
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: header-matches-filter-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "EIP"
spec:
  definition:
    title: "Header Matches Filter Action"
    description: "Filter based on header value compared to regex."
    required:
      - regex
    properties:
      regex:
        title: Regex 
        description: The Regex to Evaluate against the Kafka topic name
        type: string
      headerName:
        title: Header Name 
        description: The header name to get the value to compare
        type: string
        example: headerName
    type: object
  dependencies:
  - "camel:core"
  - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - filter:
          simple: "${header[{{headerName}}]} !regex '{{regex}}'"
          steps:
            - stop: {}
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: hoist-field-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
spec:
  definition:
    title: "Hoist Field Action"
    description: "Wrap data in a single field."
    required:
      - field
    properties:
      field:
        title: Field
        description: The name of the field that will contain the event.
        type: string
    type: object
  dependencies:
  - "camel:core"
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:kafka"
  template:
    from:
      uri: kamelet:source
      steps:
      - choice:
          when:
          - simple: "${header[Content-Type]} == 'application/json'"
            steps:
            - unmarshal:
                json:
                  library: Jackson
                  unmarshalType: com.fasterxml.jackson.databind.JsonNode
      - setProperty:
          name: "field"
          constant: "{{field}}"
      - bean: "org.apache.camel.component.kafka.transform.HoistField"
      - marshal:
          json:
            library: Jackson
            unmarshalType: com.fasterxml.jackson.databind.JsonNode
      - setHeader:
          name: "Content-Type"
          constant: "application/json"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: http-secured-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MjAiCmhlaWdodD0iNDIwIiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiPgo8cGF0aCBzdHJva2Utd2lkdGg9IjI2IgpkPSJNMjA5LDE1YTE5NSwxOTUgMCAxLDAgMiwweiIvPgo8cGF0aCBzdHJva2Utd2lkdGg9IjE4IgpkPSJtMjEwLDE1djM5MG0xOTUtMTk1SDE1TTU5LDkwYTI2MCwyNjAgMCAwLDAgMzAyLDAgbTAsMjQwIGEyNjAsMjYwIDAgMCwwLTMwMiwwTTE5NSwyMGEyNTAsMjUwIDAgMCwwIDAsMzgyIG0zMCwwIGEyNTAsMjUwIDAgMCwwIDAtMzgyIi8+Cjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "HTTP"
    camel.apache.org/kamelet.namespace: "HTTP"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Secured HTTP Sink"
    description: Forwards an event to a secured HTTP endpoint. Supports Oauth and Basic authentication.
    required:
    - url
    type: object
    properties:
      url:
        title: URL
        description: The URL to send data to
        type: string
        example: "https://my-service/path"
        pattern: "^(http|https)://.*"
      method:
        title: Method
        description: The HTTP method to use
        type: string
        default: POST
        enum: ["GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS", "TRACE", "PATCH"]
      authMethod:
        title: Authentication Method
        description: Authentication methods allowed to use as a comma separated list of values Basic, Digest or NTLM.
        type: string
      authenticationPreemptive:
        title: Authentication Preemptive
        description: If this option is true, camel-http sends preemptive basic authentication to the server.
        type: boolean
        default: false
      authUsername:
        title: Authentication Username
        description: Authentication username
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      authPassword:
        title: Authentication Password
        description: Authentication password
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      oauth2ClientId:
        title: Oauth2 Client Id
        description: Oauth2 Client Id
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      oauth2ClientSecret:
        title: Oauth2 Client Secret
        description: Oauth2 Client Secret
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      oauth2TokenEndpoint:
        title: Oauth2 Token Endpoint
        description: Oauth2 Token Endpoint
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      oauth2Scope:
        title: Oauth2 Scope
        description: Oauth2 Scope
        type: string
        x-descriptors:
        - urn:camel:group:credentials
  dependencies:
  - "camel:http"
  - "camel:kamelet"
  - "camel:core"
  template:
    from:
      uri: kamelet:source
      steps:
      - removeHeader:
          name: CamelHttpUri
      - setHeader:
          name: CamelHttpMethod
          constant: "{{method}}"
      - to:
          uri: "{{url}}"
          parameters:
            authMethod: "{{?authMethod}}"
            authUsername: "{{?authUsername}}"
            authPassword: "{{?authPassword}}"
            oauth2ClientId: "{{?oauth2ClientId}}"
            oauth2ClientSecret: "{{?oauth2ClientSecret}}"
            oauth2Scope: "{{?oauth2Scope}}"
            oauth2TokenEndpoint: "{{?oauth2TokenEndpoint}}"
            authenticationPreemptive: "{{authenticationPreemptive}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: http-secured-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MjAiCmhlaWdodD0iNDIwIiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiPgo8cGF0aCBzdHJva2Utd2lkdGg9IjI2IgpkPSJNMjA5LDE1YTE5NSwxOTUgMCAxLDAgMiwweiIvPgo8cGF0aCBzdHJva2Utd2lkdGg9IjE4IgpkPSJtMjEwLDE1djM5MG0xOTUtMTk1SDE1TTU5LDkwYTI2MCwyNjAgMCAwLDAgMzAyLDAgbTAsMjQwIGEyNjAsMjYwIDAgMCwwLTMwMiwwTTE5NSwyMGEyNTAsMjUwIDAgMCwwIDAsMzgyIG0zMCwwIGEyNTAsMjUwIDAgMCwwIDAtMzgyIi8+Cjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "HTTP"
    camel.apache.org/kamelet.namespace: "HTTP"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "HTTP Secured Source"
    description: Periodically fetches a secured HTTP resource and provides the content as output. Supports Oauth and Basic authentication.
    required:
    - url
    type: object
    properties:
      period:
        title: Period between Updates
        description: The interval between fetches in milliseconds
        type: integer
        default: 10000
      contentType:
        title: Content Type
        description: The content type accepted for the resource
        type: string
        default: "application/json"
      url:
        title: URL
        description: The URL to fetch for data
        type: string
        example: "https://gist.githubusercontent.com/nicolaferraro/e3c72ace3c751f9f88273896611ce5fe/raw/3b6f54060bacb56b6719b7386a4645cb59ad6cc1/quote.json"
        pattern: "^(http|https)://.*"
      authMethod:
        title: Authentication Method
        description: Authentication methods allowed to use as a comma separated list of values Basic, Digest or NTLM.
        type: string
      authenticationPreemptive:
        title: Authentication Preemptive
        description: If this option is true, camel-http sends preemptive basic authentication to the server.
        type: boolean
        default: false
      authUsername:
        title: Authentication Username
        description: Authentication username
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      authPassword:
        title: Authentication Password
        description: Authentication password
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      oauth2ClientId:
        title: Oauth2 Client Id
        description: Oauth2 Client Id
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      oauth2ClientSecret:
        title: Oauth2 Client Secret
        description: Oauth2 Client Secret
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      oauth2TokenEndpoint:
        title: Oauth2 Token Endpoint
        description: Oauth2 Token Endpoint
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      oauth2Scope:
        title: Oauth2 Scope
        description: Oauth2 Scope
        type: string
        x-descriptors:
        - urn:camel:group:credentials
  dependencies:
    - "camel:http"
    - "camel:kamelet"
    - "camel:core"
    - "camel:timer"
  template:
    from:
      uri: "timer:fetch"
      parameters:
        period: "{{period}}"
      steps:
      - setHeader:
          name: "Accept"
          constant: "{{contentType}}"
      - to:
          uri: "{{url}}"
          parameters: 
            authMethod: "{{?authMethod}}"
            authUsername: "{{?authUsername}}"
            authPassword: "{{?authPassword}}"
            oauth2ClientId: "{{?oauth2ClientId}}"
            oauth2ClientSecret: "{{?oauth2ClientSecret}}"
            oauth2Scope: "{{?oauth2Scope}}"
            oauth2TokenEndpoint: "{{?oauth2TokenEndpoint}}"
            authenticationPreemptive: "{{authenticationPreemptive}}"
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: http-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MjAiCmhlaWdodD0iNDIwIiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiPgo8cGF0aCBzdHJva2Utd2lkdGg9IjI2IgpkPSJNMjA5LDE1YTE5NSwxOTUgMCAxLDAgMiwweiIvPgo8cGF0aCBzdHJva2Utd2lkdGg9IjE4IgpkPSJtMjEwLDE1djM5MG0xOTUtMTk1SDE1TTU5LDkwYTI2MCwyNjAgMCAwLDAgMzAyLDAgbTAsMjQwIGEyNjAsMjYwIDAgMCwwLTMwMiwwTTE5NSwyMGEyNTAsMjUwIDAgMCwwIDAsMzgyIG0zMCwwIGEyNTAsMjUwIDAgMCwwIDAtMzgyIi8+Cjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "HTTP"
    camel.apache.org/kamelet.namespace: "HTTP"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "HTTP Sink"
    description: Forward data to a HTTP or HTTPS endpoint.
    required:
    - url
    type: object
    properties:
      url:
        title: URL
        description: The URL to which you want to send data.
        type: string
        example: "https://my-service/path"
        pattern: "^(http|https)://.*"
      method:
        title: Method
        description: The HTTP method to use.
        type: string
        default: POST
        enum: ["GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS", "TRACE", "PATCH"]
  dependencies:
  - "camel:http"
  - "camel:kamelet"
  - "camel:core"
  template:
    from:
      uri: kamelet:source
      steps:
      - removeHeader:
          name: CamelHttpUri
      - setHeader:
          name: CamelHttpMethod
          constant: "{{method}}"
      - to: "{{url}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: http-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MjAiCmhlaWdodD0iNDIwIiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiPgo8cGF0aCBzdHJva2Utd2lkdGg9IjI2IgpkPSJNMjA5LDE1YTE5NSwxOTUgMCAxLDAgMiwweiIvPgo8cGF0aCBzdHJva2Utd2lkdGg9IjE4IgpkPSJtMjEwLDE1djM5MG0xOTUtMTk1SDE1TTU5LDkwYTI2MCwyNjAgMCAwLDAgMzAyLDAgbTAsMjQwIGEyNjAsMjYwIDAgMCwwLTMwMiwwTTE5NSwyMGEyNTAsMjUwIDAgMCwwIDAsMzgyIG0zMCwwIGEyNTAsMjUwIDAgMCwwIDAtMzgyIi8+Cjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "HTTP"
    camel.apache.org/kamelet.namespace: "HTTP"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "HTTP Source"
    description: Periodically fetches an HTTP resource and provides the content as output.
    required:
    - url
    type: object
    properties:
      period:
        title: Period between Updates
        description: The interval between fetches in milliseconds.
        type: integer
        default: 10000
      contentType:
        title: Content Type
        description: The content type accepted for the resource.
        type: string
        default: "application/json"
      url:
        title: URL
        description: The URL to fetch for data.
        type: string
        example: "https://gist.githubusercontent.com/nicolaferraro/e3c72ace3c751f9f88273896611ce5fe/raw/3b6f54060bacb56b6719b7386a4645cb59ad6cc1/quote.json"
        pattern: "^(http|https)://.*"
  dependencies:
    - "camel:http"
    - "camel:kamelet"
    - "camel:core"
    - "camel:timer"
  template:
    from:
      uri: "timer:fetch"
      parameters:
        period: "{{period}}"
      steps:
      - setHeader:
          name: "Accept"
          constant: "{{contentType}}"
      - to: "{{url}}"
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: infinispan-sink
  labels:
    camel.apache.org/kamelet.type: "sink"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Infinispan"
    camel.apache.org/kamelet.namespace: "Cache"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 4340 characters]"
spec:
  definition:
    title: "Infinispan Sink"
    description: Write object to an Infinispan cache.
    required:
      - cacheName
      - hosts
      - username
      - password
    type: object
    properties:
      cacheName:
        title: Cache Name
        description: The name of the Infinispan cache to use
        type: string
      hosts:
        title: Hosts
        description: Specifies the host of the cache on Infinispan instance
        type: string
      secure:
        title: Secure
        description: If the Infinispan instance is secured or not
        type: boolean
        default: true
      username:
        title: Username
        description: Username to connect to Infinispan.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: Password to connect to Infinispan.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      saslMechanism:
        title: SASL Mechanism
        description: The SASL Mechanism to use
        type: string
        default: "DIGEST-MD5"
      securityRealm:
        title: Security Realm
        description: Define the security realm to access the infinispan instance
        type: string
        default: "default"
      securityServerName:
        title: Security Server name
        description: Define the security server name to access the infinispan instance
        type: string
        default: "infinispan"
  dependencies:
    - "camel:kamelet"
    - "camel:core"
    - "camel:infinispan"
  template:
    beans:
      - name: local-infinispan
        type: "#class:org.apache.camel.component.infinispan.remote.InfinispanRemoteComponent"
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[key]}"
            steps:
            - setHeader:
                name: CamelInfinispanKey
                simple: "${header[key]}"
          - simple: "${header[ce-key]}"
            steps:
            - setHeader:
                name: CamelInfinispanKey
                simple: "${header[ce-key]}"
          otherwise:
            steps:
            - setHeader:
                name: CamelInfinispanKey
                simple: "${exchangeId}"
      - setHeader:
          name: CamelInfinispanValue
          simple: "${body}"
      - to:
          uri: "{{local-infinispan}}:{{cacheName}}"
          parameters:
            hosts: "{{hosts}}"
            secure: "{{secure}}"
            username: "{{username}}"
            password: "{{password}}"
            saslMechanism: "{{saslMechanism}}"
            securityRealm: "{{securityRealm}}"
            securityServerName: "{{securityServerName}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: infinispan-source
  labels:
    camel.apache.org/kamelet.type: "source"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Infinispan"
    camel.apache.org/kamelet.namespace: "Cache"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 4340 characters]"
spec:
  definition:
    title: "Infinispan Source"
    description: Get Events from an Infinispan cache
    required:
      - cacheName
      - hosts
      - username
      - password
    type: object
    properties:
      cacheName:
        title: Cache Name
        description: The name of the Infinispan cache to use
        type: string
      hosts:
        title: Hosts
        description: Specifies the host of the cache on Infinispan instance
        type: string
      secure:
        title: Secure
        description: If the Infinispan instance is secured or not
        type: boolean
        default: true
      username:
        title: Username
        description: Username to connect to Infinispan.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: Password to connect to Infinispan.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      saslMechanism:
        title: SASL Mechanism
        description: The SASL Mechanism to use
        type: string
        default: "DIGEST-MD5"
      securityRealm:
        title: Security Realm
        description: Define the security realm to access the infinispan instance
        type: string
        default: "default"
      securityServerName:
        title: Security Server name
        description: Define the security server name to access the infinispan instance
        type: string
        default: "infinispan"
      eventTypes:
        title: Infinispan Cluster Name
        description: Specifies the set of event types to register by the consumer. Multiple event can be separated by comma without spaces.
        type: string
        example: "CLIENT_CACHE_ENTRY_CREATED,CLIENT_CACHE_ENTRY_MODIFIED"
        default: "CLIENT_CACHE_ENTRY_CREATED,CLIENT_CACHE_ENTRY_MODIFIED,CLIENT_CACHE_ENTRY_REMOVED,CLIENT_CACHE_ENTRY_EXPIRED,CLIENT_CACHE_FAILOVER"
        enum: ["CLIENT_CACHE_ENTRY_CREATED", "CLIENT_CACHE_ENTRY_MODIFIED", "CLIENT_CACHE_ENTRY_REMOVED", "CLIENT_CACHE_ENTRY_EXPIRED", "CLIENT_CACHE_FAILOVER"]
  dependencies:
    - "camel:kamelet"
    - "camel:core"
    - "camel:infinispan"
  template:
    beans:
      - name: local-infinispan
        type: "#class:org.apache.camel.component.infinispan.remote.InfinispanRemoteComponent"
    from:
      uri: "{{local-infinispan}}:{{cacheName}}"
      parameters:
        hosts: "{{hosts}}"
        secure: "{{secure}}"
        username: "{{username}}"
        password: "{{password}}"
        saslMechanism: "{{saslMechanism}}"
        securityRealm: "{{securityRealm}}"
        securityServerName: "{{securityServerName}}"
        eventTypes: "{{eventTypes}}"
      steps:
      - setHeader:
          name: infinispan-cache-name
          simple: "${header[CamelInfinispanCacheName]}"
      - setHeader:
          name: ce-infinispancachename
          simple: "${header[CamelInfinispanCacheName]}"
      - setHeader:
          name: infinispan-entry-version
          simple: "${header[CamelInfinispanEntryVersion]}"
      - setHeader:
          name: ce-infinispanentryversion
          simple: "${header[CamelInfinispanEntryVersion]}"
      - setHeader:
          name: infinispan-event-type
          simple: "${header[CamelInfinispanEventType]}"
      - setHeader:
          name: ce-infinispaneventtype
          simple: "${header[CamelInfinispanEventType]}"
      - setHeader:
          name: infinispan-key
          simple: "${header[CamelInfinispanKey]}"
      - setHeader:
          name: ce-infinispankey
          simple: "${header[CamelInfinispanKey]}"
      - to: kamelet:sink
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: insert-field-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
spec:
  definition:
    title: "Insert Field Action"
    description: Adds a custom field with a simple language parsed value to the message in transit.
    required:
      - field
      - value
    properties:
      field:
        title: Field
        description: The name of the field to be added.
        type: string
      value:
        title: Value
        description: The value of the field.
        type: string
    type: object
  dependencies:
  - "camel:core"
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:kafka"
  template:
    beans:
      - name: insertField
        type: "#class:org.apache.camel.component.kafka.transform.InsertField"
        properties:
          field: '{{field}}'
          value: '{{value}}'
    from:
      uri: kamelet:source
      steps:
      - choice:
          when:
          - simple: "${header[Content-Type]} == 'application/json'"
            steps:
            - setProperty:
                name: deserialized
                constant: "true"
            - unmarshal:
                json:
                  library: Jackson
                  unmarshalType: com.fasterxml.jackson.databind.JsonNode
      - process:
          ref: "{{insertField}}"
      - choice:
          when:
          - simple: "${exchangeProperty[deserialized]} == 'true'"
            steps:
            - marshal:
                json:
                  library: Jackson
                  unmarshalType: com.fasterxml.jackson.databind.JsonNode
            - setHeader:
                name: "Content-Type"
                constant: "application/json"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: insert-header-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "EIP"
spec:
  definition:
    title: "Insert Header Action"
    description: "Adds an header with a simple language parsed expression to the message in transit."
    required:
      - name
      - value
    properties:
      name:
        title: Name
        description: The name of the header to be added. For Knative only, the name of the header requires a CloudEvent (ce-) prefix.
        type: string
        example: headername
      value:
        title: Value
        description: The value of the header to be added
        type: string
    type: object
  dependencies:
    - "camel:core"
    - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - setHeader:
          name: "{{name}}"
          simple: "{{value}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: is-tombstone-filter-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Kafka"
spec:
  definition:
    title: "Is Tombstone Filter Action"
    description: "Filter based on the presence of body or not."
    type: object
  dependencies:
  - "camel:core"
  - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - filter:
          simple: "${body} == null || ${body} == ''"
          steps:
            - stop: {}
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: jira-add-comment-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iOTguMDMwODY3NSUiIHkxPSIwLjE2MDU5OTU3MiUiIHgyPSI1OC44ODc3MDYyJSIgeTI9IjQwLjc2NTUyNDYlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDUyQ0MiIG9mZnNldD0iMTglIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyNjg0RkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDAuNjY1MjQ3JSIgeTE9IjAuNDU1MDMyMTIlIiB4Mj0iNTUuNDAxODA5NSUiIHkyPSI0NC43MjY5ODA3JSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDA1MkNDIiBvZmZzZXQ9IjE4JSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjY4NEZGIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGc+CgkJCQk8cGF0aCBkPSJNMjQ0LjY1Nzc3OCwwIEwxMjEuNzA2NjY3LDAgQzEyMS43MDY2NjcsMTQuNzIwMTA0NiAxMjcuNTU0MjA1LDI4LjgzNzMxMiAxMzcuOTYyODkxLDM5LjI0NTk5NzcgQzE0OC4zNzE1NzcsNDkuNjU0NjgzNSAxNjIuNDg4Nzg0LDU1LjUwMjIyMjIgMTc3LjIwODg4OSw1NS41MDIyMjIyIEwxOTkuODU3Nzc4LDU1LjUwMjIyMjIgTDE5OS44NTc3NzgsNzcuMzY4ODg4OSBDMTk5Ljg3NzM5MSwxMDcuOTk0MTU1IDIyNC42OTkxNzgsMTMyLjgxNTk0MyAyNTUuMzI0NDQ0LDEzMi44MzU1NTYgTDI1NS4zMjQ0NDQsMTAuNjY2NjY2NyBDMjU1LjMyNDQ0NCw0Ljc3NTYyOTM0IDI1MC41NDg4MTUsMy42MDcyMjAwMWUtMTYgMjQ0LjY1Nzc3OCwwIFoiIGZpbGw9IiMyNjg0RkYiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xODMuODIyMjIyLDYxLjI2MjIyMjIgTDYwLjg3MTExMTEsNjEuMjYyMjIyMiBDNjAuODkwNzIzOCw5MS44ODc0ODg4IDg1LjcxMjUxMTIsMTE2LjcwOTI3NiAxMTYuMzM3Nzc4LDExNi43Mjg4ODkgTDEzOC45ODY2NjcsMTE2LjcyODg4OSBMMTM4Ljk4NjY2NywxMzguNjY2NjY3IEMxMzkuMDI1OTA1LDE2OS4yOTE5MjMgMTYzLjg2MzYwNywxOTQuMDk3ODAzIDE5NC40ODg4ODksMTk0LjA5Nzc3OCBMMTk0LjQ4ODg4OSw3MS45Mjg4ODg5IEMxOTQuNDg4ODg5LDY2LjAzNzg1MTYgMTg5LjcxMzI2LDYxLjI2MjIyMjIgMTgzLjgyMjIyMiw2MS4yNjIyMjIyIFoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xMjIuOTUxMTExLDEyMi40ODg4ODkgTDAsMTIyLjQ4ODg4OSBDMy43NTM5MTM2MmUtMTUsMTUzLjE0MTkyIDI0Ljg0OTE5MTMsMTc3Ljk5MTExMSA1NS41MDIyMjIyLDE3Ny45OTExMTEgTDc4LjIyMjIyMjIsMTc3Ljk5MTExMSBMNzguMjIyMjIyMiwxOTkuODU3Nzc4IEM3OC4yNDE3NjcsMjMwLjQ1NTMyIDEwMy4wMjAyODUsMjU1LjI2NTY0NyAxMzMuNjE3Nzc4LDI1NS4zMjQ0NDQgTDEzMy42MTc3NzgsMTMzLjE1NTU1NiBDMTMzLjYxNzc3OCwxMjcuMjY0NTE4IDEyOC44NDIxNDgsMTIyLjQ4ODg4OSAxMjIuOTUxMTExLDEyMi40ODg4ODkgWiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0yKSI+PC9wYXRoPgoJCTwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "JIRA"
    camel.apache.org/kamelet.namespace: "JIRA"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Jira Add Comment Sink"
    description: Add a new comment to an existing issue in Jira.

    required:
      - jiraUrl
    type: object
    properties:
      jiraUrl:
        title: Jira URL
        description: The URL of your instance of Jira
        type: string
        example: http://my_jira.com:8081
      username:
        title: Username
        description: The username to access Jira
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access Jira
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      personal-token:
        title: Personal Token
        description: Personal Token
        type: string
        x-descriptors:
        - urn:camel:group:credentials
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:core"
  - "camel:jackson"
  - "camel:jira"
  - "camel:kamelet"
  - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[ce-issueKey]}"
            steps:
            - setHeader:
                name: issueKey
                simple: "${header[ce-issueKey]}"
      - to:
          uri: "jira:AddComment"
          parameters:
            jiraUrl: "{{jiraUrl}}"
            username: "{{?username}}"
            password: "{{?password}}"
            accessToken: "{{?personal-token}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: jira-add-issue-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iOTguMDMwODY3NSUiIHkxPSIwLjE2MDU5OTU3MiUiIHgyPSI1OC44ODc3MDYyJSIgeTI9IjQwLjc2NTUyNDYlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDUyQ0MiIG9mZnNldD0iMTglIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyNjg0RkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDAuNjY1MjQ3JSIgeTE9IjAuNDU1MDMyMTIlIiB4Mj0iNTUuNDAxODA5NSUiIHkyPSI0NC43MjY5ODA3JSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDA1MkNDIiBvZmZzZXQ9IjE4JSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjY4NEZGIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGc+CgkJCQk8cGF0aCBkPSJNMjQ0LjY1Nzc3OCwwIEwxMjEuNzA2NjY3LDAgQzEyMS43MDY2NjcsMTQuNzIwMTA0NiAxMjcuNTU0MjA1LDI4LjgzNzMxMiAxMzcuOTYyODkxLDM5LjI0NTk5NzcgQzE0OC4zNzE1NzcsNDkuNjU0NjgzNSAxNjIuNDg4Nzg0LDU1LjUwMjIyMjIgMTc3LjIwODg4OSw1NS41MDIyMjIyIEwxOTkuODU3Nzc4LDU1LjUwMjIyMjIgTDE5OS44NTc3NzgsNzcuMzY4ODg4OSBDMTk5Ljg3NzM5MSwxMDcuOTk0MTU1IDIyNC42OTkxNzgsMTMyLjgxNTk0MyAyNTUuMzI0NDQ0LDEzMi44MzU1NTYgTDI1NS4zMjQ0NDQsMTAuNjY2NjY2NyBDMjU1LjMyNDQ0NCw0Ljc3NTYyOTM0IDI1MC41NDg4MTUsMy42MDcyMjAwMWUtMTYgMjQ0LjY1Nzc3OCwwIFoiIGZpbGw9IiMyNjg0RkYiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xODMuODIyMjIyLDYxLjI2MjIyMjIgTDYwLjg3MTExMTEsNjEuMjYyMjIyMiBDNjAuODkwNzIzOCw5MS44ODc0ODg4IDg1LjcxMjUxMTIsMTE2LjcwOTI3NiAxMTYuMzM3Nzc4LDExNi43Mjg4ODkgTDEzOC45ODY2NjcsMTE2LjcyODg4OSBMMTM4Ljk4NjY2NywxMzguNjY2NjY3IEMxMzkuMDI1OTA1LDE2OS4yOTE5MjMgMTYzLjg2MzYwNywxOTQuMDk3ODAzIDE5NC40ODg4ODksMTk0LjA5Nzc3OCBMMTk0LjQ4ODg4OSw3MS45Mjg4ODg5IEMxOTQuNDg4ODg5LDY2LjAzNzg1MTYgMTg5LjcxMzI2LDYxLjI2MjIyMjIgMTgzLjgyMjIyMiw2MS4yNjIyMjIyIFoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xMjIuOTUxMTExLDEyMi40ODg4ODkgTDAsMTIyLjQ4ODg4OSBDMy43NTM5MTM2MmUtMTUsMTUzLjE0MTkyIDI0Ljg0OTE5MTMsMTc3Ljk5MTExMSA1NS41MDIyMjIyLDE3Ny45OTExMTEgTDc4LjIyMjIyMjIsMTc3Ljk5MTExMSBMNzguMjIyMjIyMiwxOTkuODU3Nzc4IEM3OC4yNDE3NjcsMjMwLjQ1NTMyIDEwMy4wMjAyODUsMjU1LjI2NTY0NyAxMzMuNjE3Nzc4LDI1NS4zMjQ0NDQgTDEzMy42MTc3NzgsMTMzLjE1NTU1NiBDMTMzLjYxNzc3OCwxMjcuMjY0NTE4IDEyOC44NDIxNDgsMTIyLjQ4ODg4OSAxMjIuOTUxMTExLDEyMi40ODg4ODkgWiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0yKSI+PC9wYXRoPgoJCTwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "JIRA"
    camel.apache.org/kamelet.namespace: "JIRA"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Jira Add Issue Sink"
    description: Add a new issue to Jira.

    required:
      - jiraUrl
    type: object
    properties:
      jiraUrl:
        title: Jira URL
        description: The URL of your instance of Jira
        type: string
        example: http://my_jira.com:8081
      username:
        title: Username
        description: The username to access Jira
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access Jira
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      personal-token:
        title: Personal Token
        description: Personal Token
        type: string
        x-descriptors:
        - urn:camel:group:credentials
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:core"
  - "camel:jackson"
  - "camel:jira"
  - "camel:kamelet"
  - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[ce-projectKey]}"
            steps:
            - setHeader:
                name: projectKey
                simple: "${header[ce-projectKey]}"
      - choice:
          when:
          - simple: "${header[ce-issueTypeName]}"
            steps:
            - setHeader:
                name: issueTypeName
                simple: "${header[ce-issueTypeName]}"
      - choice:
          when:
          - simple: "${header[ce-issueSummary]}"
            steps:
            - setHeader:
                name: issueSummary
                simple: "${header[ce-issueSummary]}"
      - choice:
          when:
          - simple: "${header[ce-issueAssignee]}"
            steps:
            - setHeader:
                name: issueAssignee
                simple: "${header[ce-issueAssignee]}"
      - choice:
          when:
          - simple: "${header[ce-issuePriorityName]}"
            steps:
            - setHeader:
                name: issuePriorityName
                simple: "${header[ce-issuePriorityName]}"
      - choice:
          when:
          - simple: "${header[ce-issueComponents]}"
            steps:
            - setHeader:
                name: issueComponents
                simple: "${header[ce-issueComponents]}"
      - choice:
          when:
          - simple: "${header[ce-issueDescription]}"
            steps:
            - setHeader:
                name: issueDescription
                simple: "${header[ce-issueDescription]}"
      - to:
          uri: "jira:AddIssue"
          parameters:
            jiraUrl: "{{jiraUrl}}"
            username: "{{?username}}"
            password: "{{?password}}"
            accessToken: "{{?personal-token}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: jira-oauth-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iOTguMDMwODY3NSUiIHkxPSIwLjE2MDU5OTU3MiUiIHgyPSI1OC44ODc3MDYyJSIgeTI9IjQwLjc2NTUyNDYlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDUyQ0MiIG9mZnNldD0iMTglIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyNjg0RkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDAuNjY1MjQ3JSIgeTE9IjAuNDU1MDMyMTIlIiB4Mj0iNTUuNDAxODA5NSUiIHkyPSI0NC43MjY5ODA3JSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDA1MkNDIiBvZmZzZXQ9IjE4JSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjY4NEZGIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGc+CgkJCQk8cGF0aCBkPSJNMjQ0LjY1Nzc3OCwwIEwxMjEuNzA2NjY3LDAgQzEyMS43MDY2NjcsMTQuNzIwMTA0NiAxMjcuNTU0MjA1LDI4LjgzNzMxMiAxMzcuOTYyODkxLDM5LjI0NTk5NzcgQzE0OC4zNzE1NzcsNDkuNjU0NjgzNSAxNjIuNDg4Nzg0LDU1LjUwMjIyMjIgMTc3LjIwODg4OSw1NS41MDIyMjIyIEwxOTkuODU3Nzc4LDU1LjUwMjIyMjIgTDE5OS44NTc3NzgsNzcuMzY4ODg4OSBDMTk5Ljg3NzM5MSwxMDcuOTk0MTU1IDIyNC42OTkxNzgsMTMyLjgxNTk0MyAyNTUuMzI0NDQ0LDEzMi44MzU1NTYgTDI1NS4zMjQ0NDQsMTAuNjY2NjY2NyBDMjU1LjMyNDQ0NCw0Ljc3NTYyOTM0IDI1MC41NDg4MTUsMy42MDcyMjAwMWUtMTYgMjQ0LjY1Nzc3OCwwIFoiIGZpbGw9IiMyNjg0RkYiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xODMuODIyMjIyLDYxLjI2MjIyMjIgTDYwLjg3MTExMTEsNjEuMjYyMjIyMiBDNjAuODkwNzIzOCw5MS44ODc0ODg4IDg1LjcxMjUxMTIsMTE2LjcwOTI3NiAxMTYuMzM3Nzc4LDExNi43Mjg4ODkgTDEzOC45ODY2NjcsMTE2LjcyODg4OSBMMTM4Ljk4NjY2NywxMzguNjY2NjY3IEMxMzkuMDI1OTA1LDE2OS4yOTE5MjMgMTYzLjg2MzYwNywxOTQuMDk3ODAzIDE5NC40ODg4ODksMTk0LjA5Nzc3OCBMMTk0LjQ4ODg4OSw3MS45Mjg4ODg5IEMxOTQuNDg4ODg5LDY2LjAzNzg1MTYgMTg5LjcxMzI2LDYxLjI2MjIyMjIgMTgzLjgyMjIyMiw2MS4yNjIyMjIyIFoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xMjIuOTUxMTExLDEyMi40ODg4ODkgTDAsMTIyLjQ4ODg4OSBDMy43NTM5MTM2MmUtMTUsMTUzLjE0MTkyIDI0Ljg0OTE5MTMsMTc3Ljk5MTExMSA1NS41MDIyMjIyLDE3Ny45OTExMTEgTDc4LjIyMjIyMjIsMTc3Ljk5MTExMSBMNzguMjIyMjIyMiwxOTkuODU3Nzc4IEM3OC4yNDE3NjcsMjMwLjQ1NTMyIDEwMy4wMjAyODUsMjU1LjI2NTY0NyAxMzMuNjE3Nzc4LDI1NS4zMjQ0NDQgTDEzMy42MTc3NzgsMTMzLjE1NTU1NiBDMTMzLjYxNzc3OCwxMjcuMjY0NTE4IDEyOC44NDIxNDgsMTIyLjQ4ODg4OSAxMjIuOTUxMTExLDEyMi40ODg4ODkgWiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0yKSI+PC9wYXRoPgoJCTwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "JIRA"
    camel.apache.org/kamelet.namespace: "JIRA"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Jira oauth Source"
    description: Receive notifications about new issues from Jira through OAuth authentication.
    required:
      - jiraUrl
      - accessToken
      - verificationCode
      - consumerKey
      - privateKey
      - jql
    type: object
    properties:
      jiraUrl:
        title: Jira URL
        description: The URL of your instance of Jira.
        type: string
        example: http://my_jira.com:8081
      accessToken:
        title: Username
        description: The access token generated by the Jira server.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      verificationCode:
        title: Password
        description: The verification code from Jira generated in the first step of the authorization proccess.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      consumerKey:
        title: Password
        description: The consumer key from Jira settings.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      privateKey:
        title: Password
        description: The private key generated by the client to encrypt the conversation to the server.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      jql:
        title: JQL
        description: A query to filter issues.
        type: string
        example: project=MyProject
  types:
    out:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:jira"
  - "camel:kamelet"
  - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5"
  template:
    from:
      uri: "jira:newIssues"
      parameters:
        jiraUrl: "{{jiraUrl}}"
        accessToken: "{{accessToken}}"
        verificationCode: "{{verificationCode}}"
        privateKey: "RAW({{privateKey}})"
        consumerKey: "{{consumerKey}}"
        jql: "{{jql}}"
      steps:
      - marshal:
          json: 
            library: Jackson
            moduleClassNames: com.fasterxml.jackson.datatype.joda.JodaModule
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: jira-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iOTguMDMwODY3NSUiIHkxPSIwLjE2MDU5OTU3MiUiIHgyPSI1OC44ODc3MDYyJSIgeTI9IjQwLjc2NTUyNDYlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDUyQ0MiIG9mZnNldD0iMTglIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyNjg0RkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDAuNjY1MjQ3JSIgeTE9IjAuNDU1MDMyMTIlIiB4Mj0iNTUuNDAxODA5NSUiIHkyPSI0NC43MjY5ODA3JSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDA1MkNDIiBvZmZzZXQ9IjE4JSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjY4NEZGIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGc+CgkJCQk8cGF0aCBkPSJNMjQ0LjY1Nzc3OCwwIEwxMjEuNzA2NjY3LDAgQzEyMS43MDY2NjcsMTQuNzIwMTA0NiAxMjcuNTU0MjA1LDI4LjgzNzMxMiAxMzcuOTYyODkxLDM5LjI0NTk5NzcgQzE0OC4zNzE1NzcsNDkuNjU0NjgzNSAxNjIuNDg4Nzg0LDU1LjUwMjIyMjIgMTc3LjIwODg4OSw1NS41MDIyMjIyIEwxOTkuODU3Nzc4LDU1LjUwMjIyMjIgTDE5OS44NTc3NzgsNzcuMzY4ODg4OSBDMTk5Ljg3NzM5MSwxMDcuOTk0MTU1IDIyNC42OTkxNzgsMTMyLjgxNTk0MyAyNTUuMzI0NDQ0LDEzMi44MzU1NTYgTDI1NS4zMjQ0NDQsMTAuNjY2NjY2NyBDMjU1LjMyNDQ0NCw0Ljc3NTYyOTM0IDI1MC41NDg4MTUsMy42MDcyMjAwMWUtMTYgMjQ0LjY1Nzc3OCwwIFoiIGZpbGw9IiMyNjg0RkYiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xODMuODIyMjIyLDYxLjI2MjIyMjIgTDYwLjg3MTExMTEsNjEuMjYyMjIyMiBDNjAuODkwNzIzOCw5MS44ODc0ODg4IDg1LjcxMjUxMTIsMTE2LjcwOTI3NiAxMTYuMzM3Nzc4LDExNi43Mjg4ODkgTDEzOC45ODY2NjcsMTE2LjcyODg4OSBMMTM4Ljk4NjY2NywxMzguNjY2NjY3IEMxMzkuMDI1OTA1LDE2OS4yOTE5MjMgMTYzLjg2MzYwNywxOTQuMDk3ODAzIDE5NC40ODg4ODksMTk0LjA5Nzc3OCBMMTk0LjQ4ODg4OSw3MS45Mjg4ODg5IEMxOTQuNDg4ODg5LDY2LjAzNzg1MTYgMTg5LjcxMzI2LDYxLjI2MjIyMjIgMTgzLjgyMjIyMiw2MS4yNjIyMjIyIFoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xMjIuOTUxMTExLDEyMi40ODg4ODkgTDAsMTIyLjQ4ODg4OSBDMy43NTM5MTM2MmUtMTUsMTUzLjE0MTkyIDI0Ljg0OTE5MTMsMTc3Ljk5MTExMSA1NS41MDIyMjIyLDE3Ny45OTExMTEgTDc4LjIyMjIyMjIsMTc3Ljk5MTExMSBMNzguMjIyMjIyMiwxOTkuODU3Nzc4IEM3OC4yNDE3NjcsMjMwLjQ1NTMyIDEwMy4wMjAyODUsMjU1LjI2NTY0NyAxMzMuNjE3Nzc4LDI1NS4zMjQ0NDQgTDEzMy42MTc3NzgsMTMzLjE1NTU1NiBDMTMzLjYxNzc3OCwxMjcuMjY0NTE4IDEyOC44NDIxNDgsMTIyLjQ4ODg4OSAxMjIuOTUxMTExLDEyMi40ODg4ODkgWiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0yKSI+PC9wYXRoPgoJCTwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "JIRA"
    camel.apache.org/kamelet.namespace: "JIRA"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Jira Source"
    description: Receive notifications about new issues from Jira.

    required:
      - jiraUrl
    type: object
    properties:
      jiraUrl:
        title: Jira URL
        description: The URL of your instance of Jira.
        type: string
        example: http://my_jira.com:8081
      username:
        title: Username
        description: The username to access Jira.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access Jira.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      personal-token:
        title: Personal Token
        description: Personal Token
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      jql:
        title: JQL
        description: A query to filter issues.
        type: string
        example: project=MyProject

  types:
    out:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:jira"
  - "camel:kamelet"
  - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5"
  template:
    from:
      uri: "jira:newIssues"
      parameters:
        jiraUrl: "{{jiraUrl}}"
        username: "{{?username}}"
        password: "{{?password}}"
        accessToken: "{{?personal-token}}"
        jql: "{{jql}}"
      steps:
      - marshal:
          json:
            library: Jackson
            moduleClassNames: com.fasterxml.jackson.datatype.joda.JodaModule
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: jira-transition-issue-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iOTguMDMwODY3NSUiIHkxPSIwLjE2MDU5OTU3MiUiIHgyPSI1OC44ODc3MDYyJSIgeTI9IjQwLjc2NTUyNDYlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDUyQ0MiIG9mZnNldD0iMTglIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyNjg0RkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDAuNjY1MjQ3JSIgeTE9IjAuNDU1MDMyMTIlIiB4Mj0iNTUuNDAxODA5NSUiIHkyPSI0NC43MjY5ODA3JSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDA1MkNDIiBvZmZzZXQ9IjE4JSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjY4NEZGIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGc+CgkJCQk8cGF0aCBkPSJNMjQ0LjY1Nzc3OCwwIEwxMjEuNzA2NjY3LDAgQzEyMS43MDY2NjcsMTQuNzIwMTA0NiAxMjcuNTU0MjA1LDI4LjgzNzMxMiAxMzcuOTYyODkxLDM5LjI0NTk5NzcgQzE0OC4zNzE1NzcsNDkuNjU0NjgzNSAxNjIuNDg4Nzg0LDU1LjUwMjIyMjIgMTc3LjIwODg4OSw1NS41MDIyMjIyIEwxOTkuODU3Nzc4LDU1LjUwMjIyMjIgTDE5OS44NTc3NzgsNzcuMzY4ODg4OSBDMTk5Ljg3NzM5MSwxMDcuOTk0MTU1IDIyNC42OTkxNzgsMTMyLjgxNTk0MyAyNTUuMzI0NDQ0LDEzMi44MzU1NTYgTDI1NS4zMjQ0NDQsMTAuNjY2NjY2NyBDMjU1LjMyNDQ0NCw0Ljc3NTYyOTM0IDI1MC41NDg4MTUsMy42MDcyMjAwMWUtMTYgMjQ0LjY1Nzc3OCwwIFoiIGZpbGw9IiMyNjg0RkYiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xODMuODIyMjIyLDYxLjI2MjIyMjIgTDYwLjg3MTExMTEsNjEuMjYyMjIyMiBDNjAuODkwNzIzOCw5MS44ODc0ODg4IDg1LjcxMjUxMTIsMTE2LjcwOTI3NiAxMTYuMzM3Nzc4LDExNi43Mjg4ODkgTDEzOC45ODY2NjcsMTE2LjcyODg4OSBMMTM4Ljk4NjY2NywxMzguNjY2NjY3IEMxMzkuMDI1OTA1LDE2OS4yOTE5MjMgMTYzLjg2MzYwNywxOTQuMDk3ODAzIDE5NC40ODg4ODksMTk0LjA5Nzc3OCBMMTk0LjQ4ODg4OSw3MS45Mjg4ODg5IEMxOTQuNDg4ODg5LDY2LjAzNzg1MTYgMTg5LjcxMzI2LDYxLjI2MjIyMjIgMTgzLjgyMjIyMiw2MS4yNjIyMjIyIFoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xMjIuOTUxMTExLDEyMi40ODg4ODkgTDAsMTIyLjQ4ODg4OSBDMy43NTM5MTM2MmUtMTUsMTUzLjE0MTkyIDI0Ljg0OTE5MTMsMTc3Ljk5MTExMSA1NS41MDIyMjIyLDE3Ny45OTExMTEgTDc4LjIyMjIyMjIsMTc3Ljk5MTExMSBMNzguMjIyMjIyMiwxOTkuODU3Nzc4IEM3OC4yNDE3NjcsMjMwLjQ1NTMyIDEwMy4wMjAyODUsMjU1LjI2NTY0NyAxMzMuNjE3Nzc4LDI1NS4zMjQ0NDQgTDEzMy42MTc3NzgsMTMzLjE1NTU1NiBDMTMzLjYxNzc3OCwxMjcuMjY0NTE4IDEyOC44NDIxNDgsMTIyLjQ4ODg4OSAxMjIuOTUxMTExLDEyMi40ODg4ODkgWiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0yKSI+PC9wYXRoPgoJCTwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "JIRA"
    camel.apache.org/kamelet.namespace: "JIRA"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Jira Transition Issue Sink"
    description: Sets a new status (transition to) of an existing issue in Jira.

    required:
      - jiraUrl
    type: object
    properties:
      jiraUrl:
        title: Jira URL
        description: The URL of your instance of Jira
        type: string
        example: http://my_jira.com:8081
      username:
        title: Username
        description: The username to access Jira
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access Jira
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      personal-token:
        title: Personal Token
        description: Personal Token
        type: string
        x-descriptors:
        - urn:camel:group:credentials
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:core"
  - "camel:jackson"
  - "camel:jira"
  - "camel:kamelet"
  - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[ce-issueKey]}"
            steps:
            - setHeader:
                name: issueKey
                simple: "${header[ce-issueKey]}"
      - choice:
          when:
          - simple: "${header[ce-issueTransitionId]}"
            steps:
            - setHeader:
                name: issueTransitionId
                simple: "${header[ce-issueTransitionId]}"
      - to:
          uri: "jira:transitionIssue"
          parameters:
            jiraUrl: "{{jiraUrl}}"
            username: "{{?username}}"
            password: "{{?password}}"
            accessToken: "{{?personal-token}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: jira-update-issue-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDxkZWZzPgogICAgICAgIDxsaW5lYXJHcmFkaWVudCB4MT0iOTguMDMwODY3NSUiIHkxPSIwLjE2MDU5OTU3MiUiIHgyPSI1OC44ODc3MDYyJSIgeTI9IjQwLjc2NTUyNDYlIiBpZD0ibGluZWFyR3JhZGllbnQtMSI+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDUyQ0MiIG9mZnNldD0iMTglIj48L3N0b3A+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyNjg0RkYiIG9mZnNldD0iMTAwJSI+PC9zdG9wPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IHgxPSIxMDAuNjY1MjQ3JSIgeTE9IjAuNDU1MDMyMTIlIiB4Mj0iNTUuNDAxODA5NSUiIHkyPSI0NC43MjY5ODA3JSIgaWQ9ImxpbmVhckdyYWRpZW50LTIiPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMDA1MkNDIiBvZmZzZXQ9IjE4JSI+PC9zdG9wPgogICAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMjY4NEZGIiBvZmZzZXQ9IjEwMCUiPjwvc3RvcD4KICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgPC9kZWZzPgogICAgPGc+CgkJCQk8cGF0aCBkPSJNMjQ0LjY1Nzc3OCwwIEwxMjEuNzA2NjY3LDAgQzEyMS43MDY2NjcsMTQuNzIwMTA0NiAxMjcuNTU0MjA1LDI4LjgzNzMxMiAxMzcuOTYyODkxLDM5LjI0NTk5NzcgQzE0OC4zNzE1NzcsNDkuNjU0NjgzNSAxNjIuNDg4Nzg0LDU1LjUwMjIyMjIgMTc3LjIwODg4OSw1NS41MDIyMjIyIEwxOTkuODU3Nzc4LDU1LjUwMjIyMjIgTDE5OS44NTc3NzgsNzcuMzY4ODg4OSBDMTk5Ljg3NzM5MSwxMDcuOTk0MTU1IDIyNC42OTkxNzgsMTMyLjgxNTk0MyAyNTUuMzI0NDQ0LDEzMi44MzU1NTYgTDI1NS4zMjQ0NDQsMTAuNjY2NjY2NyBDMjU1LjMyNDQ0NCw0Ljc3NTYyOTM0IDI1MC41NDg4MTUsMy42MDcyMjAwMWUtMTYgMjQ0LjY1Nzc3OCwwIFoiIGZpbGw9IiMyNjg0RkYiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xODMuODIyMjIyLDYxLjI2MjIyMjIgTDYwLjg3MTExMTEsNjEuMjYyMjIyMiBDNjAuODkwNzIzOCw5MS44ODc0ODg4IDg1LjcxMjUxMTIsMTE2LjcwOTI3NiAxMTYuMzM3Nzc4LDExNi43Mjg4ODkgTDEzOC45ODY2NjcsMTE2LjcyODg4OSBMMTM4Ljk4NjY2NywxMzguNjY2NjY3IEMxMzkuMDI1OTA1LDE2OS4yOTE5MjMgMTYzLjg2MzYwNywxOTQuMDk3ODAzIDE5NC40ODg4ODksMTk0LjA5Nzc3OCBMMTk0LjQ4ODg4OSw3MS45Mjg4ODg5IEMxOTQuNDg4ODg5LDY2LjAzNzg1MTYgMTg5LjcxMzI2LDYxLjI2MjIyMjIgMTgzLjgyMjIyMiw2MS4yNjIyMjIyIFoiIGZpbGw9InVybCgjbGluZWFyR3JhZGllbnQtMSkiPjwvcGF0aD4KCQkJCTxwYXRoIGQ9Ik0xMjIuOTUxMTExLDEyMi40ODg4ODkgTDAsMTIyLjQ4ODg4OSBDMy43NTM5MTM2MmUtMTUsMTUzLjE0MTkyIDI0Ljg0OTE5MTMsMTc3Ljk5MTExMSA1NS41MDIyMjIyLDE3Ny45OTExMTEgTDc4LjIyMjIyMjIsMTc3Ljk5MTExMSBMNzguMjIyMjIyMiwxOTkuODU3Nzc4IEM3OC4yNDE3NjcsMjMwLjQ1NTMyIDEwMy4wMjAyODUsMjU1LjI2NTY0NyAxMzMuNjE3Nzc4LDI1NS4zMjQ0NDQgTDEzMy42MTc3NzgsMTMzLjE1NTU1NiBDMTMzLjYxNzc3OCwxMjcuMjY0NTE4IDEyOC44NDIxNDgsMTIyLjQ4ODg4OSAxMjIuOTUxMTExLDEyMi40ODg4ODkgWiIgZmlsbD0idXJsKCNsaW5lYXJHcmFkaWVudC0yKSI+PC9wYXRoPgoJCTwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "JIRA"
    camel.apache.org/kamelet.namespace: "JIRA"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Jira Update Issue Sink"
    description: Update fields of an existing issue in Jira.

    required:
      - jiraUrl
    type: object
    properties:
      jiraUrl:
        title: Jira URL
        description: The URL of your instance of Jira
        type: string
        example: http://my_jira.com:8081
      username:
        title: Username
        description: The username to access Jira
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access Jira
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      personal-token:
        title: Personal Token
        description: Personal Token
        type: string
        x-descriptors:
        - urn:camel:group:credentials
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:core"
  - "camel:jackson"
  - "camel:jira"
  - "camel:kamelet"
  - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[ce-issueKey]}"
            steps:
            - setHeader:
                name: issueKey
                simple: "${header[ce-issueKey]}"
      - choice:
          when:
          - simple: "${header[ce-issueTypeName]}"
            steps:
            - setHeader:
                name: issueTypeName
                simple: "${header[ce-issueTypeName]}"
      - choice:
          when:
          - simple: "${header[ce-issueSummary]}"
            steps:
            - setHeader:
                name: issueSummary
                simple: "${header[ce-issueSummary]}"
      - choice:
          when:
          - simple: "${header[ce-issueAssignee]}"
            steps:
            - setHeader:
                name: issueAssignee
                simple: "${header[ce-issueAssignee]}"
      - choice:
          when:
          - simple: "${header[ce-issuePriorityName]}"
            steps:
            - setHeader:
                name: issuePriorityName
                simple: "${header[ce-issuePriorityName]}"
      - choice:
          when:
          - simple: "${header[ce-issueComponents]}"
            steps:
            - setHeader:
                name: issueComponents
                simple: "${header[ce-issueComponents]}"
      - choice:
          when:
          - simple: "${header[ce-issueDescription]}"
            steps:
            - setHeader:
                name: issueDescription
                simple: "${header[ce-issueDescription]}"
      - to:
          uri: "jira:UpdateIssue"
          parameters:
            jiraUrl: "{{jiraUrl}}"
            username: "{{?username}}"
            password: "{{?password}}"
            accessToken: "{{?personal-token}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: jms-amqp-10-sink
  annotations:
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 39376 characters]"
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.group: "JMS"
    camel.apache.org/kamelet.namespace: "Messaging"
  labels:
    camel.apache.org/kamelet.type: "sink"
    camel.apache.org/requires.runtime: camel-k
spec:
  definition:
    title: "JMS - AMQP 1.0 Sink"
    description: "Send data to any AMQP 1.0 compliant message broker by using the Apache Qpid JMS client."
    required:
      - destinationName
      - remoteURI
    type: object
    properties:
      destinationType:
        title: "Destination Type"
        description: "The JMS destination type (queue or topic)."
        type: string
        default: queue
      destinationName:
        title: "Destination Name"
        description: "The JMS destination name."
        type: string
      remoteURI:
        title: "Broker URL"
        description: "The JMS URL."
        type: string
        example: "amqp://my-host:31616"
  dependencies:
  - "camel:jms"
  - "camel:amqp"
  - "camel:kamelet"
  template:
    beans:
      - name: connectionFactoryBean
        type: "#class:org.apache.qpid.jms.JmsConnectionFactory"
        properties:
          remoteURI: '{{remoteURI}}'
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "jms:{{destinationType}}:{{destinationName}}"
          parameters:
            connectionFactory: "#bean:{{connectionFactoryBean}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: jms-amqp-10-source
  annotations:
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 39376 characters]"
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.group: "JMS"
    camel.apache.org/kamelet.namespace: "Messaging"
  labels:
    camel.apache.org/kamelet.type: "source"
    camel.apache.org/requires.runtime: camel-k
spec:
  definition:
    title: "JMS - AMQP 1.0 Source"
    description: "Consume data from any AMQP 1.0 compliant message broker by using the Apache Qpid JMS client."
    required:
      - destinationName
      - remoteURI
    type: object
    properties:
      destinationType:
        title: "Destination Type"
        description: "The JMS destination type (queue or topic)."
        type: string
        default: queue
      destinationName:
        title: "Destination Name"
        description: "The JMS destination name."
        type: string
      remoteURI:
        title: "Broker URL"
        description: "The JMS URL."
        type: string
        example: "amqp://my-host:31616"
  dependencies:
  - "camel:jms"
  - "camel:amqp"
  - "camel:kamelet"
  template:
    beans:
      - name: connectionFactoryBean
        type: "#class:org.apache.qpid.jms.JmsConnectionFactory"
        properties:
          remoteURI: '{{remoteURI}}'
    from:
      uri: "jms:{{destinationType}}:{{destinationName}}"
      parameters:
        connectionFactory: "#bean:{{connectionFactoryBean}}"
      steps:
      - to:
          uri: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: jms-apache-artemis-sink
  annotations:
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 26696 characters]"
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.group: "JMS"
    camel.apache.org/kamelet.namespace: "Messaging"
  labels:
    camel.apache.org/kamelet.type: "sink"
    camel.apache.org/requires.runtime: camel-k
spec:
  definition:
    title: "JMS - Apache Artemis Sink"
    description: "Send data to an Apache Artemis message broker by using JMS."
    required:
      - destinationName
      - brokerURL
    type: object
    properties:
      destinationType:
        title: "Destination Type"
        description: "The JMS destination type (queue or topic)."
        type: string
        default: queue
      destinationName:
        title: "Destination Name"
        description: "The JMS destination name."
        type: string
        example: person
      brokerURL:
        title: "Broker URL"
        description: "The JMS URL."
        type: string
        example: "tcp://my-host:61616"
  dependencies:
  - "camel:jms"
  - "camel:kamelet"
  - "mvn:org.apache.activemq:artemis-jakarta-client-all:2.42.0"
  template:
    beans:
      - name: connectionFactoryBean
        type: "#class:org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory"
        properties:
          brokerURL: '{{brokerURL}}'
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "jms:{{destinationType}}:{{destinationName}}"
          parameters:
            connectionFactory: "#bean:{{connectionFactoryBean}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: jms-apache-artemis-source
  annotations:
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 26696 characters]"
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.group: "JMS"
    camel.apache.org/kamelet.namespace: "Messaging"
  labels:
    camel.apache.org/kamelet.type: "source"
    camel.apache.org/requires.runtime: camel-k
spec:
  definition:
    title: "JMS - Apache Artemis Source"
    description: "Receive data from an Apache Artemis message broker by using JMS."
    required:
      - destinationName
      - brokerURL
    type: object
    properties:
      destinationType:
        title: "Destination Type"
        description: "The JMS destination type (queue or topic)."
        type: string
        default: queue
      destinationName:
        title: "Destination Name"
        description: "The JMS destination name."
        type: string
      brokerURL:
        title: "Broker URL"
        description: "The JMS URL."
        type: string
        example: "tcp://my-host:61616"
  dependencies:
  - "camel:jms"
  - "camel:kamelet"
  - "mvn:org.apache.activemq:artemis-jakarta-client-all:2.42.0"
  template:
    beans:
      - name: connectionFactoryBean
        type: "#class:org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory"
        properties:
          brokerURL: '{{brokerURL}}'
    from:
      uri: "jms:{{destinationType}}:{{destinationName}}"
      parameters:
        connectionFactory: "#bean:{{connectionFactoryBean}}"
      steps:
      - to:
          uri: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: jms-ibm-mq-sink
  annotations:
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 5208 characters]"
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.group: "JMS"
    camel.apache.org/kamelet.namespace: "Messaging"
  labels:
    camel.apache.org/kamelet.type: "sink"
    camel.apache.org/requires.runtime: camel-k
spec:
  definition:
    title: "JMS - IBM MQ Sink"
    description: A Kamelet that can produce events to an IBM MQ message queue using JMS.

    required:
      - serverName
      - serverPort
      - destinationName
      - queueManager
      - channel
      - username
      - password
    type: object
    properties:
      serverName:
        title: "IBM MQ Server name"
        description: "IBM MQ Server name or address."
        type: string
      serverPort:
        title: "IBM MQ Server Port"
        description: "IBM MQ Server port."
        type: integer
        default: 1414
      destinationType:
        title: "Destination Type"
        description: "The JMS destination type (queue or topic)."
        type: string
        default: queue
      destinationName:
        title: "Destination Name"
        description: "The destination name."
        type: string
      queueManager:
        title: "IBM MQ Queue Manager"
        description: "Name of the IBM MQ Queue Manager."
        type: string
      channel:
        title: "IBM MQ Channel"
        description: "Name of the IBM MQ Channel."
        type: string
      clientId:
        title: "IBM MQ Client ID"
        description: "Name of the IBM MQ Client ID."
        type: string
      username:
        title: "Username"
        description: "Username to authenticate to IBM MQ server."
        type: string
      password:
        title: "Password"
        description: "Password to authenticate to IBM MQ server."
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      sslCipherSuite:
        title: "CipherSuite"
        description: "CipherSuite to use for enabling TLS."
        type: string
  dependencies:
  - "camel:jms"
  - "camel:kamelet"
  template:
    beans:
      - name: wmqConnectionFactory
        type: "#class:com.ibm.mq.jakarta.jms.MQConnectionFactory"
        properties:
          XMSC_WMQ_HOST_NAME: '{{serverName}}'
          XMSC_WMQ_PORT: '{{serverPort}}'
          XMSC_WMQ_CHANNEL: '{{channel}}'
          XMSC_WMQ_QUEUE_MANAGER: '{{queueManager}}'
          XMSC_WMQ_CONNECTION_MODE: 1
          XMSC_USERID: '{{username}}'
          XMSC_PASSWORD: '{{password}}'
          XMSC_CLIENT_ID: '{{?clientId}}'
          XMSC_WMQ_SSL_CIPHER_SUITE: '{{?sslCipherSuite}}'
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "jms:{{destinationType}}:{{destinationName}}"
          parameters:
            connectionFactory: "#bean:{{wmqConnectionFactory}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: jms-ibm-mq-source
  annotations:
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 5208 characters]"
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.group: "JMS"
    camel.apache.org/kamelet.namespace: "Messaging"
  labels:
    camel.apache.org/kamelet.type: "source"
    camel.apache.org/requires.runtime: camel-k
spec:
  definition:
    title: "JMS - IBM MQ Source"
    description: A Kamelet that can read events from an IBM MQ message queue using JMS.
      
    required:
      - serverName
      - serverPort
      - destinationName
      - queueManager
      - channel
      - username
      - password
    type: object
    properties:
      serverName:
        title: "IBM MQ Server name"
        description: "IBM MQ Server name or address."
        type: string
      serverPort:
        title: "IBM MQ Server Port"
        description: "IBM MQ Server port."
        type: integer
        default: 1414
      destinationType:
        title: "Destination Type"
        description: "The JMS destination type (queue or topic)."
        type: string
        default: queue
      destinationName:
        title: "Destination Name"
        description: "The destination name."
        type: string
      queueManager:
        title: "IBM MQ Queue Manager"
        description: "Name of the IBM MQ Queue Manager."
        type: string
      channel:
        title: "IBM MQ Channel"
        description: "Name of the IBM MQ Channel."
        type: string
      clientId:
        title: "IBM MQ Client ID"
        description: "Name of the IBM MQ Client ID."
        type: string
      username:
        title: "Username"
        description: "Username to authenticate to IBM MQ server."
        type: string
      password:
        title: "Password"
        description: "Password to authenticate to IBM MQ server."
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      sslCipherSuite:
        title: "CipherSuite"
        description: "CipherSuite to use for enabling TLS."
        type: string
  dependencies:
  - "camel:jms"
  - "camel:kamelet"
  template:
    beans:
      - name: wmqConnectionFactory
        type: "#class:com.ibm.mq.jakarta.jms.MQConnectionFactory"
        properties:
          XMSC_WMQ_HOST_NAME: '{{serverName}}'
          XMSC_WMQ_PORT: '{{serverPort}}'
          XMSC_WMQ_CHANNEL: '{{channel}}'
          XMSC_WMQ_QUEUE_MANAGER: '{{queueManager}}'
          XMSC_WMQ_CONNECTION_MODE: 1
          XMSC_USERID: '{{username}}'
          XMSC_PASSWORD: '{{password}}'
          XMSC_CLIENT_ID: '{{?clientId}}'
          XMSC_WMQ_SSL_CIPHER_SUITE: '{{?sslCipherSuite}}'
    from:
      uri: "jms:{{destinationType}}:{{destinationName}}"
      parameters:
        connectionFactory: "#bean:{{wmqConnectionFactory}}"
      steps:
      - to:
          uri: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: jms-pooled-apache-artemis-sink
  annotations:
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 26696 characters]"
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.group: "JMS"
    camel.apache.org/kamelet.namespace: "Messaging"
  labels:
    camel.apache.org/kamelet.type: "sink"
    camel.apache.org/requires.runtime: camel-k
spec:
  definition:
    title: "JMS Pooled - Apache Artemis Sink"
    description: "Send data to an Apache Artemis message broker by using JMS Pooled."
    required:
      - destinationName
      - brokerURL
    type: object
    properties:
      destinationType:
        title: "Destination Type"
        description: "The JMS destination type (queue or topic)."
        type: string
        default: queue
      destinationName:
        title: "Destination Name"
        description: "The JMS destination name."
        type: string
        example: person
      brokerURL:
        title: "Broker URL"
        description: "The JMS URL."
        type: string
        example: "tcp://my-host:61616"
      username:
        title: "Broker Username"
        description: "The JMS Broker Username."
        type: string
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:password
        - urn:keda:required 
      password:
        title: "Broker Password"
        description: "The JMS Broker Password."
        type: string
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:password
        - urn:keda:required
      maxSessionsPerConnection:
        title: "Max Sessions Per Connection"
        description: "The maximum number of pooled sessions per connection in the pool."
        type: integer
        default: 500 
      maxIdleSessionsPerConnection:
        title: "Max Idle Sessions Per Connection"
        description: "The number of idle sessions allowed per connection before they are closed."
        type: integer
        default: 500
      connectionIdleTimeout:
        title: "Connection Idle Timeout"
        description: "The maximum time a pooled Connection can sit unused before it is eligible for removal (in milliseconds)."
        type: integer
        default: 30000     
  dependencies:
  - "camel:jms"
  - "camel:kamelet"
  - "mvn:org.apache.activemq:artemis-jakarta-client-all:2.42.0"
  - "mvn:org.messaginghub:pooled-jms:3.1.7"
  template:
    beans:
      - name: connectionFactoryBean
        type: "#class:org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory"
        properties:
          brokerURL: '{{brokerURL}}'
          user: '{{?username}}'
          password: '{{?password}}'
      - name: pooledFactoryBean
        type: "#class:org.messaginghub.pooled.jms.JmsPoolConnectionFactory"
        properties:
          connectionFactory: '#bean:{{connectionFactoryBean}}'
          maxSessionsPerConnection: "{{maxSessionsPerConnection}}"
          maxIdleSessionsPerConnection: "{{maxIdleSessionsPerConnection}}"
          connectionIdleTimeout: "{{connectionIdleTimeout}}"
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "jms:{{destinationType}}:{{destinationName}}"
          parameters:
            connectionFactory: "#bean:{{pooledFactoryBean}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: jms-pooled-apache-artemis-source
  annotations:
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 26696 characters]"
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.group: "JMS"
    camel.apache.org/kamelet.namespace: "Messaging"
  labels:
    camel.apache.org/kamelet.type: "source"
    camel.apache.org/requires.runtime: camel-k
spec:
  definition:
    title: "JMS Pooled - Apache Artemis Source"
    description: "Receive data from an Apache Artemis message broker by using JMS Pooled Connection."
    required:
      - destinationName
      - brokerURL
    type: object
    properties:
      destinationType:
        title: "Destination Type"
        description: "The JMS destination type (queue or topic)."
        type: string
        default: queue
      destinationName:
        title: "Destination Name"
        description: "The JMS destination name."
        type: string
      brokerURL:
        title: "Broker URL"
        description: "The JMS URL."
        type: string
        example: "tcp://my-host:61616"
      username:
        title: "Broker Username"
        description: "The JMS Broker Username."
        type: string
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:password
        - urn:keda:required 
      password:
        title: "Broker Password"
        description: "The JMS Broker Password."
        type: string
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:password
        - urn:keda:required
      maxSessionsPerConnection:
        title: "Max Session Per Connection"
        description: "The maximum number of pooled sessions per connection in the pool."
        type: integer
        default: 500
      maxIdleSessionsPerConnection:
        title: "Max Idle Sessions Per Connection"
        description: "The number of idle sessions allowed per connection before they are closed."
        type: integer
        default: 500
      connectionIdleTimeout:
        title: "Connection Idle Timeout"
        description: "The maximum time a pooled Connection can sit unused before it is eligible for removal (in milliseconds)."
        type: integer
        default: 30000       
  dependencies:
  - "camel:jms"
  - "camel:kamelet"
  - "mvn:org.apache.activemq:artemis-jakarta-client-all:2.42.0"
  - "mvn:org.messaginghub:pooled-jms:3.1.7"
  template:
    beans:
      - name: connectionFactoryBean
        type: "#class:org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory"
        properties:
          brokerURL: '{{brokerURL}}'
          user: '{{?username}}'
          password: '{{?password}}'
      - name: pooledFactoryBean
        type: "#class:org.messaginghub.pooled.jms.JmsPoolConnectionFactory"
        properties:
          connectionFactory: '#bean:{{connectionFactoryBean}}'
          maxSessionsPerConnection: "{{maxSessionsPerConnection}}"
          maxIdleSessionsPerConnection: "{{maxIdleSessionsPerConnection}}"
          connectionIdleTimeout: "{{connectionIdleTimeout}}"        
    from:
      uri: "jms:{{destinationType}}:{{destinationName}}"
      parameters:
        connectionFactory: "#bean:{{pooledFactoryBean}}"
      steps:
      - to:
          uri: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: jolt-transformation-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Jolt Transformation Action"
    description: Apply a Jolt Transformation.
    required:
      - template
    type: object
    properties:
      template:
        title: Template
        description: The inline template
        type: string
        example: "file:////template.json"
        pattern: "^(http|https|file|classpath|ref|bean)://.*"
      transform:
        title: Transform DSL
        description: Specifies the Transform DSL of the endpoint resource. If none is specified, Chainr is used.
        type: string
        default: "Chainr"
        enum: ["Chainr", "Shiftr", "Defaultr", "Removr", "Sortr"]
  dependencies:
  - "camel:jolt"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "jolt:"
          parameters:
            resourceUri: "{{template}}"
            transformDsl: "{{transform}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: jslt-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "JSLT Action"
    description: Apply a JSLT query or transformation on JSON.
    required:
      - template
    type: object
    properties:
      template:
        title: Template
        description: The inline template for JSLT Transformation
        type: string
        example: "file://template.json"
        pattern: "^(http|https|file|classpath|ref|bean)://.*"
  dependencies:
  - "camel:jslt"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "jslt:"
          parameters:
            resourceUri: "{{template}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: json-deserialize-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "JSON"
spec:
  definition:
    title: "Json Deserialize Action"
    description: "Deserialize payload to JSON."
    type: object
  dependencies:
  - "camel:kamelet"
  - "camel:core"
  - "camel:jackson"
  template:
    from:
      uri: kamelet:source
      steps:
      - unmarshal:
          json: 
            library: Jackson
            unmarshalType: com.fasterxml.jackson.databind.JsonNode
      - removeHeader:
          name: "Content-Type"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: json-patch-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Json Patch Action"
    description: Apply a Json Patch Transformation.
    required:
      - template
    type: object
    properties:
      template:
        title: Template
        description: The json patch transformation
        type: string
        example: "file:////template.json"
        pattern: "^(http|https|file|classpath|ref|bean)://.*"
  dependencies:
  - "camel:json-patch"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "json-patch:"
          parameters:
            resourceUri: "{{template}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: json-schema-validator-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "JSON"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Json Schema Validator Action"
    description: Apply a Json Schema Template to validate the payload against.
    required:
      - template
    type: object
    properties:
      template:
        title: Template
        description: The inline template
        type: string
        example: "file:////template.json"
        pattern: "^(http|https|file|classpath|ref|bean)://.*"
  dependencies:
  - "camel:json-validator"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "json-validator:"
          parameters:
            resourceUri: "{{template}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: json-serialize-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "JSON"
spec:
  definition:
    title: "Json Serialize Action"
    description: "Serialize payload to JSON."
    type: object
  dependencies:
  - "camel:kamelet"
  - "camel:core"
  - "camel:jackson"
  template:
    from:
      uri: kamelet:source
      steps:
      - marshal:
          json: 
            library: Jackson
            unmarshalType: com.fasterxml.jackson.databind.JsonNode
      - setHeader:
          name: "Content-Type"
          constant: "application/json"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: jsonata-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "JSON"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Jsonata Action"
    description: Apply a Jsonata Transformation.
    required:
      - template
    type: object
    properties:
      template:
        title: Template
        description: The inline template.
        type: string
        example: "file:////template.spec"
        pattern: "^(http|https|file|classpath|ref|bean)://.*"
  dependencies:
  - "camel:jsonata"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "jsonata:"
          parameters:
            resourceUri: "{{template}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-apicurio-registry-not-secured-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Kafka Not Secured with Apicurio Registry Sink"
    description: Send data to Kafka topics on an insecure broker with Apicurio Registry.
    required:
      - topic
      - bootstrapServers
      - apicurioRegistryUrl
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names.
        type: string
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs.
        type: string
      valueSerializer:
        title: Value Serializer
        description: Serliazer class for value that implements the Serializer interface.
        type: string
        default: "io.apicurio.registry.serde.avro.AvroKafkaSerializer"
      apicurioRegistryUrl:
        title: Apicurio Registry URL
        description: The Apicurio Schema Registry URL.
        type: string
        x-descriptors:
        - urn:keda:metadata:apicurioRegistryUrl
        - urn:keda:required
      avroDatumProvider:
        title: Avro Datum Provider
        description: How to write data with Avro.
        type: string
        default: "io.apicurio.registry.serde.avro.ReflectAvroDatumProvider"
  dependencies:
    - "camel:core"
    - "camel:kamelet"
    - "camel:kafka"
    - "mvn:io.apicurio:apicurio-registry-serdes-avro-serde:2.4.14.Final"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[key]}"
            steps:
            - setHeader:
                name: kafka.KEY
                simple: "${header[key]}"
          - simple: "${header[ce-key]}"
            steps:
            - setHeader:
                name: kafka.KEY
                simple: "${header[ce-key]}"
      - choice:
          when:
          - simple: "${header[partition-key]}"
            steps:
            - setHeader:
                name: kafka.PARTITION_KEY
                simple: "${header[partition-key]}"
          - simple: "${header[ce-partitionkey]}"
            steps:
            - setHeader:
                name: kafka.PARTITION_KEY
                simple: "${header[ce-partitionkey]}"
      - to:
          uri: "kafka:{{topic}}"
          parameters:
            brokers: "{{bootstrapServers}}"
            valueSerializer: "{{valueSerializer}}"
            additionalProperties.apicurio.registry.url: "{{apicurioRegistryUrl}}"
            additionalProperties.apicurio.registry.avro-datum-provider: "{{avroDatumProvider}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-apicurio-registry-not-secured-source
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
    camel.apache.org/keda.type: "kafka"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Kafka Not Secured with Apicurio Registry Source"
    description: Receive data from Kafka topics on an insecure broker combined with Apicurio Registry.
    required:
      - topic
      - bootstrapServers
      - apicurioRegistryUrl
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names
        type: string
        x-descriptors:
        - urn:keda:metadata:topic
        - urn:keda:required
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      autoCommitEnable:
        title: Auto Commit Enable
        description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer
        type: boolean
        default: true
      allowManualCommit:
        title: Allow Manual Commit
        description: Whether to allow doing manual commits
        type: boolean
        default: false
      pollOnError:
        title: Poll On Error Behavior
        description: What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of `DISCARD`, `ERROR_HANDLER`, `RECONNECT`, `RETRY`, `STOP`
        type: string
        default: "ERROR_HANDLER"
      autoOffsetReset:
        title: Auto Offset Reset
        description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none
        type: string
        default: "latest"
        x-descriptors:
        - urn:keda:metadata:offsetResetPolicy
      consumerGroup:
        title: Consumer Group
        description: A string that uniquely identifies the group of consumers to which this source belongs
        type: string
        example: "my-group-id"
        x-descriptors:
        - urn:keda:metadata:consumerGroup
        - urn:keda:required
      deserializeHeaders:
        title: Automatically Deserialize Headers
        description: When enabled the Kamelet source will deserialize all message headers to String representation.
        type: boolean
        default: true
      valueDeserializer:
        title: Value Deserializer
        description: Deserializer class for value that implements the Deserializer interface.
        type: string
        default: "io.apicurio.registry.serde.jsonschema.JsonSchemaKafkaDeserializer"
      apicurioRegistryUrl:
        title: Apicurio Registry URL
        description: The Apicurio Schema Registry URL
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      topicIsPattern:
        title: Topic Is Pattern
        description: Whether the topic is a pattern (regular expression). This can be used to subscribe to dynamic number of topics matching the pattern.
        type: boolean
        default: false
  dependencies:
    - "camel:kafka"
    - "camel:core"
    - "camel:kamelet"
    - "mvn:io.quarkus:quarkus-apicurio-registry-json-schema:3.15.1"
  template:
    beans:
      - name: kafkaHeaderDeserializer
        type: "#class:org.apache.camel.component.kafka.KafkaHeaderDeserializer"
        properties:
          enabled: '{{deserializeHeaders}}'
    from:
      uri: "kafka:{{topic}}"
      parameters:
        brokers: "{{bootstrapServers}}"
        autoCommitEnable: "{{autoCommitEnable}}"
        allowManualCommit: "{{allowManualCommit}}"
        pollOnError: "{{pollOnError}}"
        autoOffsetReset: "{{autoOffsetReset}}"
        groupId: "{{?consumerGroup}}"
        valueDeserializer: "{{valueDeserializer}}"
        topicIsPattern: "{{topicIsPattern}}"
        additionalProperties.apicurio.registry.url: "{{apicurioRegistryUrl}}"
      steps:
        - process:
            ref: "{{kafkaHeaderDeserializer}}"
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-azure-schema-registry-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Azure Kafka through Eventhubs with Azure Schema Registry Sink"
    description: Send data to Kafka topics on Azure Eventhubs combined with Azure Schema Registry.
    required:
      - topic
      - bootstrapServers
      - azureRegistryUrl
      - password
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names
        type: string
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs
        type: string
      securityProtocol:
        title: Security Protocol
        description: Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported
        type: string
        default: SASL_SSL
      saslMechanism:
        title: SASL Mechanism
        description: The Simple Authentication and Security Layer (SASL) Mechanism used. 
        type: string
        default: PLAIN
      password:
        title: Password
        description: Password to authenticate to kafka
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      valueSerializer:
        title: Value Deserializer
        description: Deserializer class for value that implements the Deserializer interface.
        type: string
        default: "com.microsoft.azure.schemaregistry.kafka.avro.KafkaAvroSerializer"
      azureRegistryUrl:
        title: Azure Schema Registry URL
        description: The Apicurio Schema Registry URL
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      specificAvroValueType:
        title: Specific Avro Value Type
        description: The Specific Type Avro will have to deal with
        type: string
        example: "com.example.Order"
  dependencies:
    - "camel:core"
    - "camel:kafka"
    - "camel:kamelet"
    - "camel:azure-schema-registry"
    - "mvn:com.microsoft.azure:azure-schemaregistry-kafka-avro:1.1.2"
    - "mvn:com.azure:azure-data-schemaregistry-apacheavro:1.1.26"
    - "mvn:com.azure:azure-identity:1.16.2"
  template:
    beans:
      - name: defaultAzureCredential
        type: "#class:org.apache.camel.component.azure.schema.registry.DefaultAzureCredentialWrapper"
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[key]}"
            steps:
            - setHeader:
                name: kafka.KEY
                simple: "${header[key]}"
          - simple: "${header[ce-key]}"
            steps:
            - setHeader:
                name: kafka.KEY
                simple: "${header[ce-key]}"
      - choice:
          when:
          - simple: "${header[partition-key]}"
            steps:
            - setHeader:
                name: kafka.PARTITION_KEY
                simple: "${header[partition-key]}"
          - simple: "${header[ce-partitionkey]}"
            steps:
            - setHeader:
                name: kafka.PARTITION_KEY
                simple: "${header[ce-partitionkey]}"
      - to:
          uri: "kafka:{{topic}}"
          parameters:
            brokers: "{{bootstrapServers}}"
            securityProtocol: "{{securityProtocol}}"
            saslMechanism: "{{saslMechanism}}"
            saslJaasConfig: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password={{password}};'
            valueSerializer: "{{valueSerializer}}"
            additionalProperties.schema.registry.url: "{{azureRegistryUrl}}"
            additionalProperties.schema.group: avro
            additionalProperties.schema.registry.credential: '#bean:defaultAzureCredential'
            additionalProperties.specific.avro.value.type: '#valueAs(java.lang.Class):{{specificAvroValueType}}'
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-azure-schema-registry-source
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
    camel.apache.org/keda.type: "kafka"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Azure Kafka through Eventhubs with Azure Schema Registry Source"
    description: Receive data from Kafka topics on Azure Eventhubs combined with Azure Schema Registry.
    required:
      - topic
      - bootstrapServers
      - azureRegistryUrl
      - password
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names
        type: string
        x-descriptors:
        - urn:keda:metadata:topic
        - urn:keda:required
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      securityProtocol:
        title: Security Protocol
        description: Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported
        type: string
        default: SASL_SSL
      saslMechanism:
        title: SASL Mechanism
        description: The Simple Authentication and Security Layer (SASL) Mechanism used.
        type: string
        default: PLAIN
      password:
        title: Password
        description: Password to authenticate to kafka
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:password
        - urn:keda:required
      autoCommitEnable:
        title: Auto Commit Enable
        description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer
        type: boolean
        default: true
      allowManualCommit:
        title: Allow Manual Commit
        description: Whether to allow doing manual commits
        type: boolean
        default: false
      pollOnError:
        title: Poll On Error Behavior
        description: What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of `DISCARD`, `ERROR_HANDLER`, `RECONNECT`, `RETRY`, `STOP`
        type: string
        default: "ERROR_HANDLER"
      autoOffsetReset:
        title: Auto Offset Reset
        description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none
        type: string
        default: "latest"
        x-descriptors:
        - urn:keda:metadata:offsetResetPolicy
      consumerGroup:
        title: Consumer Group
        description: A string that uniquely identifies the group of consumers to which this source belongs
        type: string
        example: "my-group-id"
        x-descriptors:
        - urn:keda:metadata:consumerGroup
        - urn:keda:required
      deserializeHeaders:
        title: Automatically Deserialize Headers
        description: When enabled the Kamelet source will deserialize all message headers to String representation.
        type: boolean
        default: true
      valueDeserializer:
        title: Value Deserializer
        description: Deserializer class for value that implements the Deserializer interface.
        type: string
        default: "com.microsoft.azure.schemaregistry.kafka.avro.KafkaAvroDeserializer"
      azureRegistryUrl:
        title: Azure Schema Registry URL
        description: The Apicurio Schema Registry URL
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      specificAvroValueType:
        title: Specific Avro Value Type
        description: The Specific Type Avro will have to deal with
        type: string
        example: "com.example.Order"
      topicIsPattern:
        title: Topic Is Pattern
        description: Whether the topic is a pattern (regular expression). This can be used to subscribe to dynamic number of topics matching the pattern.
        type: boolean
        default: false
  dependencies:
    - "camel:kafka"
    - "camel:core"
    - "camel:kamelet"
    - "camel:azure-schema-registry"
    - "mvn:com.microsoft.azure:azure-schemaregistry-kafka-avro:1.1.2"
    - "mvn:com.azure:azure-data-schemaregistry-apacheavro:1.1.26"
    - "mvn:com.azure:azure-identity:1.16.2"
  template:
    beans:
      - name: defaultAzureCredential
        type: "#class:org.apache.camel.component.azure.schema.registry.DefaultAzureCredentialWrapper"
      - name: kafkaHeaderDeserializer
        type: "#class:org.apache.camel.component.kafka.KafkaHeaderDeserializer"
        properties:
          enabled: '{{deserializeHeaders}}'
    from:
      uri: "kafka:{{topic}}"
      parameters:
        brokers: "{{bootstrapServers}}"
        securityProtocol: "{{securityProtocol}}"
        saslMechanism: "{{saslMechanism}}"
        saslJaasConfig: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password={{password}};'
        autoCommitEnable: "{{autoCommitEnable}}"
        allowManualCommit: "{{allowManualCommit}}"
        pollOnError: "{{pollOnError}}"
        autoOffsetReset: "{{autoOffsetReset}}"
        groupId: "{{?consumerGroup}}"
        valueDeserializer: "{{valueDeserializer}}"
        topicIsPattern: "{{topicIsPattern}}"
        additionalProperties.schema.registry.url: "{{azureRegistryUrl}}"
        additionalProperties.schema.group: avro
        additionalProperties.schema.registry.credential: '#bean:defaultAzureCredential'
        additionalProperties.specific.avro.value.type: '#valueAs(java.lang.Class):{{specificAvroValueType}}'
        additionalProperties.specific.avro.reader: '#valueAs(boolean):true'
      steps:
        - process:
            ref: "{{kafkaHeaderDeserializer}}"
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-batch-apicurio-registry-not-secured-source
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
    camel.apache.org/keda.type: "kafka"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Kafka Batch Not Secured with Apicurio Registry Source"
    description: Receive data from Kafka topics in batch on an insecure broker combined with Apicurio Registry and commit them manually through KafkaManualCommit or auto commit.
    required:
      - topic
      - bootstrapServers
      - apicurioRegistryUrl
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names.
        type: string
        x-descriptors:
        - urn:keda:metadata:topic
        - urn:keda:required
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs.
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      autoCommitEnable:
        title: Auto Commit Enable
        description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer.
        type: boolean
        default: true
      allowManualCommit:
        title: Allow Manual Commit
        description: Whether to allow doing manual commits.
        type: boolean
        default: false
      pollOnError:
        title: Poll On Error Behavior
        description: What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of `DISCARD`, `ERROR_HANDLER`, `RECONNECT`, `RETRY`, `STOP`.
        type: string
        default: "ERROR_HANDLER"
      autoOffsetReset:
        title: Auto Offset Reset
        description: What to do when there is no initial offset. There are 3 enums and the value can be one of `latest`, `earliest`, `none`.
        type: string
        default: "latest"
        x-descriptors:
        - urn:keda:metadata:offsetResetPolicy
      consumerGroup:
        title: Consumer Group
        description: A string that uniquely identifies the group of consumers to which this source belongs.
        type: string
        example: "my-group-id"
        x-descriptors:
        - urn:keda:metadata:consumerGroup
        - urn:keda:required
      deserializeHeaders:
        title: Automatically Deserialize Headers
        description: When enabled the Kamelet source will deserialize all message headers to String representation.
        type: boolean
        default: true
      valueDeserializer:
        title: Value Deserializer
        description: Deserializer class for value that implements the Deserializer interface.
        type: string
        default: "io.apicurio.registry.serde.avro.AvroKafkaDeserializer"
      apicurioRegistryUrl:
        title: Apicurio Registry URL
        description: The Apicurio Schema Registry URL.
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      avroDatumProvider:
        title: Avro Datum Provider
        description: How to read data with Avro.
        type: string
        default: "io.apicurio.registry.serde.avro.ReflectAvroDatumProvider"
      batchSize:
        title: Batch Dimension
        description: The maximum number of records returned in a single call to poll().
        type: integer
        default: 500
      pollTimeout:
        title: Poll Timeout Interval
        description: The timeout used when polling the KafkaConsumer.
        type: integer
        default: 5000
      maxPollIntervalMs:
        title: Max Poll Interval
        description: The maximum delay between invocations of poll() when using consumer group management.
        type: integer
      batchingIntervalMs:
        title: Batching Interval
        description: In consumer batching mode, then this option is specifying a time in millis, to trigger batch completion eager when the current batch size has not reached the maximum size defined by maxPollRecords. Notice the trigger is not exact at the given interval, as this can only happen between kafka polls (see pollTimeoutMs option).
        type: integer
      topicIsPattern:
        title: Topic Is Pattern
        description: Whether the topic is a pattern (regular expression). This can be used to subscribe to dynamic number of topics matching the pattern.
        type: boolean
        default: false
  dependencies:
    - "camel:kafka"
    - "camel:core"
    - "camel:kamelet"
    - "mvn:io.quarkus:quarkus-apicurio-registry-avro:3.24.2"
  template:
    beans:
      - name: kafkaHeaderDeserializer
        type: "#class:org.apache.camel.component.kafka.KafkaHeaderDeserializer"
        properties:
          enabled: '{{deserializeHeaders}}'
      - name: manualCommitFactory
        type: "#class:org.apache.camel.component.kafka.consumer.DefaultKafkaManualCommitFactory"
    from:
      uri: "kafka:{{topic}}"
      parameters:
        brokers: "{{bootstrapServers}}"
        autoCommitEnable: "{{autoCommitEnable}}"
        allowManualCommit: "{{allowManualCommit}}"
        pollOnError: "{{pollOnError}}"
        autoOffsetReset: "{{autoOffsetReset}}"
        groupId: "{{?consumerGroup}}"
        valueDeserializer: "{{valueDeserializer}}"
        additionalProperties.apicurio.registry.url: "{{apicurioRegistryUrl}}"
        additionalProperties.apicurio.registry.avro-datum-provider: "{{avroDatumProvider}}"
        maxPollRecords: "{{batchSize}}"
        pollTimeoutMs: "{{pollTimeout}}"
        maxPollIntervalMs: "{{?maxPollIntervalMs}}"
        batchingIntervalMs: "{{?batchingIntervalMs}}"
        batching: true
        kafkaManualCommitFactory: "#bean:{{manualCommitFactory}}"
        topicIsPattern: "{{topicIsPattern}}"
      steps:
        - process:
            ref: "{{kafkaHeaderDeserializer}}"
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-batch-apicurio-registry-source
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
    camel.apache.org/keda.type: "kafka"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Kafka Batch with Apicurio Registry secured with Keycloak Source"
    description: Receive data from Kafka topics in batch on an insecure broker combined with Apicurio Registry secured with Keycloak and commit them manually through KafkaManualCommit or auto commit.
    required:
      - topic
      - bootstrapServers
      - apicurioRegistryUrl
      - apicurioAuthServiceUrl
      - apicurioAuthRealm
      - apicurioAuthClientId
      - apicurioAuthClientSecret
      - apicurioAuthUsername
      - apicurioAuthPassword
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names
        type: string
        x-descriptors:
        - urn:keda:metadata:topic
        - urn:keda:required
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      autoCommitEnable:
        title: Auto Commit Enable
        description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer
        type: boolean
        default: true
      allowManualCommit:
        title: Allow Manual Commit
        description: Whether to allow doing manual commits
        type: boolean
        default: false
      pollOnError:
        title: Poll On Error Behavior
        description: What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of `DISCARD`, `ERROR_HANDLER`, `RECONNECT`, `RETRY`, `STOP`
        type: string
        default: "ERROR_HANDLER"
      autoOffsetReset:
        title: Auto Offset Reset
        description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none
        type: string
        default: "latest"
        x-descriptors:
        - urn:keda:metadata:offsetResetPolicy
      consumerGroup:
        title: Consumer Group
        description: A string that uniquely identifies the group of consumers to which this source belongs
        type: string
        example: "my-group-id"
        x-descriptors:
        - urn:keda:metadata:consumerGroup
        - urn:keda:required
      deserializeHeaders:
        title: Automatically Deserialize Headers
        description: When enabled the Kamelet source will deserialize all message headers to String representation.
        type: boolean
        default: true
      valueDeserializer:
        title: Value Deserializer
        description: Deserializer class for value that implements the Deserializer interface.
        type: string
        default: "io.apicurio.registry.serde.avro.AvroKafkaDeserializer"
      apicurioRegistryUrl:
        title: Apicurio Registry URL
        description: The Apicurio Schema Registry URL
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      avroDatumProvider:
        title: Avro Datum Provider
        description: How to read data with Avro
        type: string
        default: "io.apicurio.registry.serde.avro.ReflectAvroDatumProvider"
      batchSize:
        title: Batch Dimension
        description: The maximum number of records returned in a single call to poll()
        type: integer
        default: 500
      pollTimeout:
        title: Poll Timeout Interval
        description: The timeout used when polling the KafkaConsumer
        type: integer
        default: 5000
      maxPollIntervalMs:
        title: Max Poll Interval
        description: The maximum delay between invocations of poll() when using consumer group management
        type: integer
      batchingIntervalMs:
        title: Batching Interval
        description: In consumer batching mode, then this option is specifying a time in millis, to trigger batch completion eager when the current batch size has not reached the maximum size defined by maxPollRecords. Notice the trigger is not exact at the given interval, as this can only happen between kafka polls (see pollTimeoutMs option).
        type: integer
      apicurioAuthServiceUrl:
        title: Apicurio Registry Auth Service URL
        description: The URL for Keycloak instance securing the Apicurio Registry
        type: string
        example: "http://my-keycloak.com:8080/"
      apicurioAuthRealm:
        title: Apicurio Registry Auth Realm
        description: The Realm in Keycloak instance securing the Apicurio Registry
        type: string
      apicurioAuthClientId:
        title: Apicurio Registry Auth Client ID
        description: The Client ID in Keycloak instance securing the Apicurio Registry
        type: string
      apicurioAuthClientSecret:
        title: Apicurio Registry Auth Client Secret
        description: The Client Secret in Keycloak instance securing the Apicurio Registry
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:password
        - urn:keda:required
      apicurioAuthUsername:
        title: Apicurio Registry Auth Username
        description: The Username in Keycloak instance securing the Apicurio Registry
        type: string
      apicurioAuthPassword:
        title: Apicurio Registry Auth Password
        description: The Password in Keycloak instance securing the Apicurio Registry
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:password
        - urn:keda:required
      topicIsPattern:
        title: Topic Is Pattern
        description: Whether the topic is a pattern (regular expression). This can be used to subscribe to dynamic number of topics matching the pattern.
        type: boolean
        default: false
  dependencies:
    - "camel:kafka"
    - "camel:core"
    - "camel:kamelet"
    - "mvn:io.quarkus:quarkus-apicurio-registry-avro:3.24.2"
  template:
    beans:
      - name: kafkaHeaderDeserializer
        type: "#class:org.apache.camel.component.kafka.KafkaHeaderDeserializer"
        properties:
          enabled: '{{deserializeHeaders}}'
      - name: manualCommitFactory
        type: "#class:org.apache.camel.component.kafka.consumer.DefaultKafkaManualCommitFactory"
    from:
      uri: "kafka:{{topic}}"
      parameters:
        brokers: "{{bootstrapServers}}"
        autoCommitEnable: "{{autoCommitEnable}}"
        allowManualCommit: "{{allowManualCommit}}"
        pollOnError: "{{pollOnError}}"
        autoOffsetReset: "{{autoOffsetReset}}"
        groupId: "{{?consumerGroup}}"
        valueDeserializer: "{{valueDeserializer}}"
        additionalProperties.apicurio.registry.url: "{{apicurioRegistryUrl}}"
        additionalProperties.apicurio.registry.avro-datum-provider: "{{avroDatumProvider}}"
        additionalProperties.apicurio.auth.service.url: "{{apicurioAuthServiceUrl}}"
        additionalProperties.apicurio.auth.realm: "{{apicurioAuthRealm}}"
        additionalProperties.apicurio.auth.client.id: "{{apicurioAuthClientId}}"
        additionalProperties.apicurio.auth.client.secret: "{{apicurioAuthClientSecret}}"
        additionalProperties.apicurio.auth.username: "{{apicurioAuthUsername}}"
        additionalProperties.apicurio.auth.password: "{{apicurioAuthPassword}}"
        maxPollRecords: "{{batchSize}}"
        pollTimeoutMs: "{{pollTimeout}}"
        maxPollIntervalMs: "{{?maxPollIntervalMs}}"
        batchingIntervalMs: "{{?batchingIntervalMs}}"
        batching: true
        kafkaManualCommitFactory: "#bean:{{manualCommitFactory}}"
        topicIsPattern: "{{topicIsPattern}}"
      steps:
        - process:
            ref: "{{kafkaHeaderDeserializer}}"
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-batch-azure-schema-registry-source
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
    camel.apache.org/keda.type: "kafka"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Azure Kafka Batch through Eventhubs with Azure Schema Registry Source"
    description: Receive data from Kafka topics in batch on Azure Eventhubs combined with Azure Schema Registry and commit them manually through KafkaManualCommit or auto commit.
    required:
      - topic
      - bootstrapServers
      - azureRegistryUrl
      - password
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names
        type: string
        x-descriptors:
        - urn:keda:metadata:topic
        - urn:keda:required
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      securityProtocol:
        title: Security Protocol
        description: Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported
        type: string
        default: SASL_SSL
      saslMechanism:
        title: SASL Mechanism
        description: The Simple Authentication and Security Layer (SASL) Mechanism used.
        type: string
        default: PLAIN
      password:
        title: Password
        description: Password to authenticate to kafka
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:password
        - urn:keda:required
      autoCommitEnable:
        title: Auto Commit Enable
        description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer
        type: boolean
        default: true
      allowManualCommit:
        title: Allow Manual Commit
        description: Whether to allow doing manual commits
        type: boolean
        default: false
      pollOnError:
        title: Poll On Error Behavior
        description: What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of `DISCARD`, `ERROR_HANDLER`, `RECONNECT`, `RETRY`, `STOP`
        type: string
        default: "ERROR_HANDLER"
      autoOffsetReset:
        title: Auto Offset Reset
        description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none
        type: string
        default: "latest"
        x-descriptors:
        - urn:keda:metadata:offsetResetPolicy
      consumerGroup:
        title: Consumer Group
        description: A string that uniquely identifies the group of consumers to which this source belongs
        type: string
        example: "my-group-id"
        x-descriptors:
        - urn:keda:metadata:consumerGroup
        - urn:keda:required
      deserializeHeaders:
        title: Automatically Deserialize Headers
        description: When enabled the Kamelet source will deserialize all message headers to String representation.
        type: boolean
        default: true
      valueDeserializer:
        title: Value Deserializer
        description: Deserializer class for value that implements the Deserializer interface.
        type: string
        default: "com.microsoft.azure.schemaregistry.kafka.avro.KafkaAvroDeserializer"
      azureRegistryUrl:
        title: Azure Schema Registry URL
        description: The Apicurio Schema Registry URL
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      specificAvroValueType:
        title: Specific Avro Value Type
        description: The Specific Type Avro will have to deal with
        type: string
        example: "com.example.Order"
      batchSize:
        title: Batch Dimension
        description: The maximum number of records returned in a single call to poll()
        type: integer
        default: 500
      pollTimeout:
        title: Poll Timeout Interval
        description: The timeout used when polling the KafkaConsumer
        type: integer
        default: 5000
      maxPollIntervalMs:
        title: Max Poll Interval
        description: The maximum delay between invocations of poll() when using consumer group management
        type: integer
      batchingIntervalMs:
        title: Batching Interval
        description: In consumer batching mode, then this option is specifying a time in millis, to trigger batch completion eager when the current batch size has not reached the maximum size defined by maxPollRecords. Notice the trigger is not exact at the given interval, as this can only happen between kafka polls (see pollTimeoutMs option).
        type: integer
      topicIsPattern:
        title: Topic Is Pattern
        description: Whether the topic is a pattern (regular expression). This can be used to subscribe to dynamic number of topics matching the pattern.
        type: boolean
        default: false
  dependencies:
    - "camel:kafka"
    - "camel:core"
    - "camel:kamelet"
    - "camel:azure-schema-registry"
    - "mvn:com.microsoft.azure:azure-schemaregistry-kafka-avro:1.1.2"
    - "mvn:com.azure:azure-data-schemaregistry-apacheavro:1.1.26"
    - "mvn:com.azure:azure-identity:1.16.2"
  template:
    beans:
      - name: defaultAzureCredential
        type: "#class:org.apache.camel.component.azure.schema.registry.DefaultAzureCredentialWrapper"
      - name: kafkaHeaderDeserializer
        type: "#class:org.apache.camel.component.kafka.KafkaHeaderDeserializer"
        properties:
          enabled: '{{deserializeHeaders}}'
      - name: manualCommitFactory
        type: "#class:org.apache.camel.component.kafka.consumer.DefaultKafkaManualCommitFactory"
    from:
      uri: "kafka:{{topic}}"
      parameters:
        brokers: "{{bootstrapServers}}"
        securityProtocol: "{{securityProtocol}}"
        saslMechanism: "{{saslMechanism}}"
        saslJaasConfig: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password={{password}};'
        autoCommitEnable: "{{autoCommitEnable}}"
        allowManualCommit: "{{allowManualCommit}}"
        pollOnError: "{{pollOnError}}"
        autoOffsetReset: "{{autoOffsetReset}}"
        groupId: "{{?consumerGroup}}"
        valueDeserializer: "{{valueDeserializer}}"
        maxPollRecords: "{{batchSize}}"
        pollTimeoutMs: "{{pollTimeout}}"
        maxPollIntervalMs: "{{?maxPollIntervalMs}}"
        batchingIntervalMs: "{{?batchingIntervalMs}}"
        batching: true
        kafkaManualCommitFactory: "#bean:{{manualCommitFactory}}"
        topicIsPattern: "{{topicIsPattern}}"
        additionalProperties.schema.registry.url: "{{azureRegistryUrl}}"
        additionalProperties.schema.group: avro
        additionalProperties.schema.registry.credential: '#bean:defaultAzureCredential'
        additionalProperties.specific.avro.value.type: '#valueAs(java.lang.Class):{{specificAvroValueType}}'
        additionalProperties.specific.avro.reader: '#valueAs(boolean):true'
      steps:
        - process:
            ref: "{{kafkaHeaderDeserializer}}"
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-batch-manual-commit-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Kafka"
spec:
  definition:
    title: "Kafka Batch Manual Commit Action"
    description: "Manually commit Kafka Batch Offset."
    type: object
  dependencies:
  - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - bean: "org.apache.camel.component.kafka.BatchManualCommit"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-batch-not-secured-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
    camel.apache.org/keda.type: "kafka"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Kafka Batch Not Secured Source"
    description: Receive data from Kafka topics in batch on an insecure broker and commit them manually through KafkaManualCommit.
    required:
      - topic
      - bootstrapServers
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names
        type: string
        x-descriptors:
        - urn:keda:metadata:topic
        - urn:keda:required
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      autoCommitEnable:
        title: Auto Commit Enable
        description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer
        type: boolean
        default: true
      allowManualCommit:
        title: Allow Manual Commit
        description: Whether to allow doing manual commits
        type: boolean
        default: false
      pollOnError:
        title: Poll On Error Behavior
        description: What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of `DISCARD`, `ERROR_HANDLER`, `RECONNECT`, `RETRY`, `STOP`
        type: string
        default: "ERROR_HANDLER"
      autoOffsetReset:
        title: Auto Offset Reset
        description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none
        type: string
        default: "latest"
        x-descriptors:
        - urn:keda:metadata:offsetResetPolicy
      consumerGroup:
        title: Consumer Group
        description: A string that uniquely identifies the group of consumers to which this source belongs
        type: string
        example: "my-group-id"
        x-descriptors:
        - urn:keda:metadata:consumerGroup
        - urn:keda:required
      deserializeHeaders:
        title: Automatically Deserialize Headers
        description: When enabled the Kamelet source will deserialize all message headers to String representation.
        type: boolean
        default: true
      batchSize:
        title: Batch Dimension
        description: The maximum number of records returned in a single call to poll()
        type: integer
        default: 500
      pollTimeout:
        title: Poll Timeout Interval
        description: The timeout used when polling the KafkaConsumer
        type: integer
        default: 5000
      maxPollIntervalMs:
        title: Max Poll Interval
        description: The maximum delay between invocations of poll() when using consumer group management
        type: integer
      batchingIntervalMs:
        title: Batching Interval
        description: In consumer batching mode, then this option is specifying a time in millis, to trigger batch completion eager when the current batch size has not reached the maximum size defined by maxPollRecords. Notice the trigger is not exact at the given interval, as this can only happen between kafka polls (see pollTimeoutMs option).
        type: integer
      topicIsPattern:
        title: Topic Is Pattern
        description: Whether the topic is a pattern (regular expression). This can be used to subscribe to dynamic number of topics matching the pattern.
        type: boolean
        default: false
  dependencies:
    - "camel:kafka"
    - "camel:core"
    - "camel:kamelet"
  template:
    beans:
      - name: kafkaHeaderDeserializer
        type: "#class:org.apache.camel.component.kafka.KafkaHeaderDeserializer"
        properties:
          enabled: '{{deserializeHeaders}}'
      - name: manualCommitFactory
        type: "#class:org.apache.camel.component.kafka.consumer.DefaultKafkaManualCommitFactory"
    from:
      uri: "kafka:{{topic}}"
      parameters:
        brokers: "{{bootstrapServers}}"
        autoCommitEnable: "{{autoCommitEnable}}"
        allowManualCommit: "{{allowManualCommit}}"
        pollOnError: "{{pollOnError}}"
        autoOffsetReset: "{{autoOffsetReset}}"
        groupId: "{{?consumerGroup}}"
        maxPollRecords: "{{batchSize}}"
        pollTimeoutMs: "{{pollTimeout}}"
        maxPollIntervalMs: "{{?maxPollIntervalMs}}"
        batchingIntervalMs: "{{?batchingIntervalMs}}"
        batching: true
        kafkaManualCommitFactory: "#bean:{{manualCommitFactory}}"
        topicIsPattern: "{{topicIsPattern}}"
      steps:
        - process:
            ref: "{{kafkaHeaderDeserializer}}"
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-batch-scram-source
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
    camel.apache.org/keda.type: "kafka"
    camel.apache.org/keda.authentication.sasl: "scram-sha-512"
    camel.apache.org/keda.authentication.tls: "enable"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Kafka Batch Scram Source"
    description: Receive data from Kafka topics in batch through SCRAM login module and commit them manually through KafkaManualCommit. This provides complete control over when messages are committed, allowing for custom processing logic before acknowledgment.
    required:
      - topic
      - bootstrapServers
      - user
      - password
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names
        type: string
        x-descriptors:
        - urn:keda:metadata:topic
        - urn:keda:required
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      securityProtocol:
        title: Security Protocol
        description: Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported
        type: string
        default: SASL_SSL
      saslMechanism:
        title: SASL Mechanism
        description: The Simple Authentication and Security Layer (SASL) Mechanism used.
        type: string
        default: SCRAM-SHA-512
      user:
        title: Username
        description: Username to authenticate to Kafka
        type: string
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:username
        - urn:keda:required
      password:
        title: Password
        description: Password to authenticate to kafka
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:password
        - urn:keda:required
      autoCommitEnable:
        title: Auto Commit Enable
        description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer
        type: boolean
        default: true
      allowManualCommit:
        title: Allow Manual Commit
        description: Whether to allow doing manual commits
        type: boolean
        default: false
      pollOnError:
        title: Poll On Error Behavior
        description: What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of `DISCARD`, `ERROR_HANDLER`, `RECONNECT`, `RETRY`, `STOP`
        type: string
        default: "ERROR_HANDLER"
      autoOffsetReset:
        title: Auto Offset Reset
        description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none
        type: string
        default: "latest"
        x-descriptors:
        - urn:keda:metadata:offsetResetPolicy
      consumerGroup:
        title: Consumer Group
        description: A string that uniquely identifies the group of consumers to which this source belongs
        type: string
        example: "my-group-id"
        x-descriptors:
        - urn:keda:metadata:consumerGroup
        - urn:keda:required
      deserializeHeaders:
        title: Automatically Deserialize Headers
        description: When enabled the Kamelet source will deserialize all message headers to String representation.
        type: boolean
        default: true
      batchSize:
        title: Batch Dimension
        description: The maximum number of records returned in a single call to poll()
        type: integer
        default: 500
      pollTimeout:
        title: Poll Timeout Interval
        description: The timeout used when polling the KafkaConsumer
        type: integer
        default: 5000
      maxPollIntervalMs:
        title: Max Poll Interval
        description: The maximum delay between invocations of poll() when using consumer group management
        type: integer
      batchingIntervalMs:
        title: Batching Interval
        description: In consumer batching mode, then this option is specifying a time in millis, to trigger batch completion eager when the current batch size has not reached the maximum size defined by maxPollRecords. Notice the trigger is not exact at the given interval, as this can only happen between kafka polls (see pollTimeoutMs option).
        type: integer
      topicIsPattern:
        title: Topic Is Pattern
        description: Whether the topic is a pattern (regular expression). This can be used to subscribe to dynamic number of topics matching the pattern.
        type: boolean
        default: false
  dependencies:
    - "camel:core"
    - "camel:kafka"
    - "camel:kamelet"
  template:
    beans:
      - name: kafkaHeaderDeserializer
        type: "#class:org.apache.camel.component.kafka.KafkaHeaderDeserializer"
        properties:
          enabled: '{{deserializeHeaders}}'
      - name: manualCommitFactory
        type: "#class:org.apache.camel.component.kafka.consumer.DefaultKafkaManualCommitFactory"
    from:
      uri: "kafka:{{topic}}"
      parameters:
        brokers: "{{?bootstrapServers}}"
        securityProtocol: "{{securityProtocol}}"
        saslMechanism: "{{saslMechanism}}"
        saslJaasConfig: 'org.apache.kafka.common.security.scram.ScramLoginModule required username="{{user}}" password="{{password}}";'
        autoCommitEnable: "{{autoCommitEnable}}"
        allowManualCommit: "{{allowManualCommit}}"
        pollOnError: "{{pollOnError}}"
        autoOffsetReset: "{{autoOffsetReset}}"
        groupId: "{{?consumerGroup}}"
        maxPollRecords: "{{batchSize}}"
        pollTimeoutMs: "{{pollTimeout}}"
        maxPollIntervalMs: "{{?maxPollIntervalMs}}"
        batchingIntervalMs: "{{?batchingIntervalMs}}"
        batching: true
        kafkaManualCommitFactory: "#bean:{{manualCommitFactory}}"
        topicIsPattern: "{{topicIsPattern}}"
      steps:
        - process:
            ref: "{{kafkaHeaderDeserializer}}"
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-batch-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
    camel.apache.org/keda.type: "kafka"
    camel.apache.org/keda.authentication.sasl: "plaintext"
    camel.apache.org/keda.authentication.tls: "enable"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Kafka Batch Source"
    description: Receive data from Kafka topics in batch through Plain Login Module and commit them manually through KafkaManualCommit. This provides complete control over when messages are committed, allowing for custom processing logic before acknowledgment.
    required:
      - topic
      - bootstrapServers
      - user
      - password
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names
        type: string
        x-descriptors:
        - urn:keda:metadata:topic
        - urn:keda:required
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      securityProtocol:
        title: Security Protocol
        description: Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported
        type: string
        default: SASL_SSL
      saslMechanism:
        title: SASL Mechanism
        description: The Simple Authentication and Security Layer (SASL) Mechanism used.
        type: string
        default: PLAIN
      user:
        title: Username
        description: Username to authenticate to Kafka
        type: string
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:username
        - urn:keda:required
      password:
        title: Password
        description: Password to authenticate to kafka
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:password
        - urn:keda:required
      autoCommitEnable:
        title: Auto Commit Enable
        description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer
        type: boolean
        default: true
      allowManualCommit:
        title: Allow Manual Commit
        description: Whether to allow doing manual commits
        type: boolean
        default: false
      pollOnError:
        title: Poll On Error Behavior
        description: What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of `DISCARD`, `ERROR_HANDLER`, `RECONNECT`, `RETRY`, `STOP`
        type: string
        default: "ERROR_HANDLER"
      autoOffsetReset:
        title: Auto Offset Reset
        description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none
        type: string
        default: "latest"
        x-descriptors:
        - urn:keda:metadata:offsetResetPolicy
      consumerGroup:
        title: Consumer Group
        description: A string that uniquely identifies the group of consumers to which this source belongs
        type: string
        example: "my-group-id"
        x-descriptors:
        - urn:keda:metadata:consumerGroup
        - urn:keda:required
      deserializeHeaders:
        title: Automatically Deserialize Headers
        description: When enabled the Kamelet source will deserialize all message headers to String representation.
        type: boolean
        default: true
      batchSize:
        title: Batch Dimension
        description: The maximum number of records returned in a single call to poll()
        type: integer
        default: 500
      pollTimeout:
        title: Poll Timeout Interval
        description: The timeout used when polling the KafkaConsumer
        type: integer
        default: 5000
      maxPollIntervalMs:
        title: Max Poll Interval
        description: The maximum delay between invocations of poll() when using consumer group management
        type: integer
      batchingIntervalMs:
        title: Batching Interval
        description: In consumer batching mode, then this option is specifying a time in millis, to trigger batch completion eager when the current batch size has not reached the maximum size defined by maxPollRecords. Notice the trigger is not exact at the given interval, as this can only happen between kafka polls (see pollTimeoutMs option).
        type: integer
      topicIsPattern:
        title: Topic Is Pattern
        description: Whether the topic is a pattern (regular expression). This can be used to subscribe to dynamic number of topics matching the pattern.
        type: boolean
        default: false
  dependencies:
    - "camel:core"
    - "camel:kafka"
    - "camel:kamelet"
  template:
    beans:
      - name: kafkaHeaderDeserializer
        type: "#class:org.apache.camel.component.kafka.KafkaHeaderDeserializer"
        properties:
          enabled: '{{deserializeHeaders}}'
      - name: manualCommitFactory
        type: "#class:org.apache.camel.component.kafka.consumer.DefaultKafkaManualCommitFactory"
    from:
      uri: "kafka:{{topic}}"
      parameters:
        brokers: "{{?bootstrapServers}}"
        securityProtocol: "{{securityProtocol}}"
        saslMechanism: "{{saslMechanism}}"
        saslJaasConfig: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="{{user}}" password="{{password}}";'
        autoCommitEnable: "{{autoCommitEnable}}"
        allowManualCommit: "{{allowManualCommit}}"
        pollOnError: "{{pollOnError}}"
        autoOffsetReset: "{{autoOffsetReset}}"
        groupId: "{{?consumerGroup}}"
        maxPollRecords: "{{batchSize}}"
        pollTimeoutMs: "{{pollTimeout}}"
        maxPollIntervalMs: "{{?maxPollIntervalMs}}"
        batchingIntervalMs: "{{?batchingIntervalMs}}"
        batching: true
        kafkaManualCommitFactory: "#bean:{{manualCommitFactory}}"      
        topicIsPattern: "{{topicIsPattern}}"  
      steps:
        - process:
            ref: "{{kafkaHeaderDeserializer}}"
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-batch-ssl-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Kafka Batch SSL Source"
    description: Receive data from Kafka topics in batch with SSL/TLS support and commit them manually through KafkaManualCommit or automatically.
    required:
      - topic
      - bootstrapServers
      - sslTruststoreLocation
      - sslKeyPassword
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names
        type: string
        x-descriptors:
          - urn:keda:metadata:topic
          - urn:keda:required
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs
        type: string
        x-descriptors:
          - urn:keda:metadata:bootstrapServers
          - urn:keda:required
      securityProtocol:
        title: Security Protocol
        description: Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported
        type: string
        default: SSL
      saslMechanism:
        title: SASL Mechanism
        description: The Simple Authentication and Security Layer (SASL) Mechanism used.
        type: string
        default: GSSAPI
      autoCommitEnable:
        title: Auto Commit Enable
        description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer
        type: boolean
        default: true
      allowManualCommit:
        title: Allow Manual Commit
        description: Whether to allow doing manual commits
        type: boolean
        default: false
      pollOnError:
        title: Poll On Error Behavior
        description: What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of `DISCARD`, `ERROR_HANDLER`, `RECONNECT`, `RETRY`, `STOP`
        type: string
        default: "ERROR_HANDLER"
      autoOffsetReset:
        title: Auto Offset Reset
        description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none
        type: string
        default: "latest"
        x-descriptors:
          - urn:keda:metadata:offsetResetPolicy
      consumerGroup:
        title: Consumer Group
        description: A string that uniquely identifies the group of consumers to which this source belongs
        type: string
        example: "my-group-id"
        x-descriptors:
          - urn:keda:metadata:consumerGroup
          - urn:keda:required
      deserializeHeaders:
        title: Automatically Deserialize Headers
        description: When enabled the Kamelet source will deserialize all message headers to String representation.
        type: boolean
        default: true
      sslKeyPassword:
        description: The password of the private key in the key store file.
        title: SSL Key Password
        type: string
        format: password
        x-descriptors:
          - urn:camel:group:credentials
          - urn:keda:authentication:password
          - urn:keda:required
      sslKeystorePassword:
        description: The store password for the key store file.This is optional for client and only needed if ssl.keystore.location is configured.
        title: SSL Keystore Password
        type: string
        format: password
        x-descriptors:
          - urn:camel:group:credentials
          - urn:keda:authentication:password
      sslEndpointAlgorithm:
        description: The endpoint identification algorithm to validate server hostname using server certificate. Use none or false to disable server hostname verification.
        title: SSL Endpoint Algorithm
        type: string
        default: https
      sslProtocol:
        description: The SSL protocol used to generate the SSLContext. Default setting is TLS, which is fine for most cases. Allowed values in recent JVMs are TLS, TLSv1.1 and TLSv1.2. SSL, SSLv2 and SSLv3 may be supported in older JVMs, but their usage is discouraged due to known security vulnerabilities.
        title: SSL Protocol
        type: string
        default: TLSv1.2
      sslKeystoreLocation:
        description: The location of the key store file. This is optional for client and can be used for two-way authentication for client.
        title: SSL Keystore Location
        type: string
      sslTruststoreLocation:
        description: The location of the trust store file.
        title: SSL Truststore Location
        type: string
      sslEnabledProtocols:
        description:   The list of protocols enabled for SSL connections. TLSv1.2, TLSv1.1 and TLSv1 are enabled by default.
        title: SSL Enabled Protocols
        type: string
        default: TLSv1.2,TLSv1.1,TLSv1
      saslJaasConfig:
        description: Java Authentication and Authorization Service (JAAS) for Simple Authentication and Security Layer (SASL) configuration.
        title: JAAS Configuration
        type: string
      batchSize:
        title: Batch Dimension
        description: The maximum number of records returned in a single call to poll()
        type: integer
        default: 500
      pollTimeout:
        title: Poll Timeout Interval
        description: The timeout used when polling the KafkaConsumer
        type: integer
        default: 5000
      maxPollIntervalMs:
        title: Max Poll Interval
        description: The maximum delay between invocations of poll() when using consumer group management
        type: integer
      batchingIntervalMs:
        title: Batching Interval
        description: In consumer batching mode, then this option is specifying a time in millis, to trigger batch completion eager when the current batch size has not reached the maximum size defined by maxPollRecords. Notice the trigger is not exact at the given interval, as this can only happen between kafka polls (see pollTimeoutMs option).
        type: integer
      topicIsPattern:
        title: Topic Is Pattern
        description: Whether the topic is a pattern (regular expression). This can be used to subscribe to dynamic number of topics matching the pattern.
        type: boolean
        default: false
  dependencies:
    - "camel:core"
    - "camel:kafka"
    - "camel:kamelet"
  template:
    beans:
      - name: kafka-ssl-source-local
        type: '#class:org.apache.camel.component.kafka.KafkaComponent'
      - name: manualCommitFactory
        type: "#class:org.apache.camel.component.kafka.consumer.DefaultKafkaManualCommitFactory"
      - name: kafka-ssl-source-configuration-local
        properties:
          brokers: '{{bootstrapServers}}'
          securityProtocol: '{{securityProtocol}}'
          sslKeystoreLocation: '{{sslKeystoreLocation}}'
          sslKeyPassword: '{{sslKeyPassword}}'
          sslKeystorePassword: '{{sslKeystorePassword}}'
          sslTruststoreLocation: '{{sslTruststoreLocation}}'
          sslProtocol: '{{sslProtocol}}'
          sslEnabledProtocols: '{{sslEnabledProtocols}}'
          sslEndpointAlgorithm: '{{sslEndpointAlgorithm}}'
          saslMechanism: '{{saslMechanism}}'
          groupId: '{{?consumerGroup}}'
          autoOffsetReset: '{{autoOffsetReset}}'
          pollOnError: '{{pollOnError}}'
          allowManualCommit: '{{allowManualCommit}}'
          autoCommitEnable: '{{autoCommitEnable}}'
          saslJaasConfig: '{{?saslJaasConfig}}'
          maxPollRecords: "{{batchSize}}"
          pollTimeoutMs: "{{pollTimeout}}"
          maxPollIntervalMs: "{{?maxPollIntervalMs}}"
          batchingIntervalMs: "{{?batchingIntervalMs}}"
          batching: true
          kafkaManualCommitFactory: "#bean:{{manualCommitFactory}}"
          topicIsPattern: "{{topicIsPattern}}"
        type: '#class:org.apache.camel.component.kafka.KafkaConfiguration'
      - name: kafkaHeaderDeserializer
        type: "#class:org.apache.camel.component.kafka.KafkaHeaderDeserializer"
        properties:
          enabled: '{{deserializeHeaders}}'
    from:
      uri: "{{kafka-ssl-source-local}}:{{topic}}"
      parameters:
        configuration: '#bean:{{kafka-ssl-source-configuration-local}}'
      steps:
        - process:
            ref: "{{kafkaHeaderDeserializer}}"
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-manual-commit-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Kafka"
spec:
  definition:
    title: "Kafka Manual Commit Action"
    description: "Manually commit Kafka Offset."
    type: object
  dependencies:
  - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - bean: "org.apache.camel.component.kafka.ManualCommit"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-not-secured-apicurio-registry-json-source
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
    camel.apache.org/keda.type: "kafka"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Kafka not secured with Apicurio Registry secured with Keycloak for JSON schema support Source"
    description: Receive data from Kafka topics on an insecure broker combined with Apicurio Registry secured with Keycloak for JSON Schema support.
    required:
      - topic
      - bootstrapServers
      - apicurioRegistryUrl
      - apicurioAuthServiceUrl
      - apicurioAuthRealm
      - apicurioAuthClientId
      - apicurioAuthClientSecret
      - apicurioAuthUsername
      - apicurioAuthPassword
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names
        type: string
        x-descriptors:
        - urn:keda:metadata:topic
        - urn:keda:required
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      autoCommitEnable:
        title: Auto Commit Enable
        description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer
        type: boolean
        default: true
      allowManualCommit:
        title: Allow Manual Commit
        description: Whether to allow doing manual commits
        type: boolean
        default: false
      pollOnError:
        title: Poll On Error Behavior
        description: What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of `DISCARD`, `ERROR_HANDLER`, `RECONNECT`, `RETRY`, `STOP`
        type: string
        default: "ERROR_HANDLER"
      autoOffsetReset:
        title: Auto Offset Reset
        description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none
        type: string
        default: "latest"
        x-descriptors:
        - urn:keda:metadata:offsetResetPolicy
      consumerGroup:
        title: Consumer Group
        description: A string that uniquely identifies the group of consumers to which this source belongs
        type: string
        example: "my-group-id"
        x-descriptors:
        - urn:keda:metadata:consumerGroup
        - urn:keda:required
      deserializeHeaders:
        title: Automatically Deserialize Headers
        description: When enabled the Kamelet source will deserialize all message headers to String representation.
        type: boolean
        default: true
      valueDeserializer:
        title: Value Deserializer
        description: Deserializer class for value that implements the Deserializer interface.
        type: string
        default: "io.apicurio.registry.serde.jsonschema.JsonSchemaKafkaDeserializer"
      apicurioRegistryUrl:
        title: Apicurio Registry URL
        description: The Apicurio Schema Registry URL
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      apicurioAuthServiceUrl:
        title: Apicurio Registry Auth Service URL
        description: The URL for Keycloak instance securing the Apicurio Registry
        type: string
        example: "http://my-keycloak.com:8080/"
      apicurioAuthRealm:
        title: Apicurio Registry Auth Realm
        description: The Realm in Keycloak instance securing the Apicurio Registry
        type: string
      apicurioAuthClientId:
        title: Apicurio Registry Auth Client ID
        description: The Client ID in Keycloak instance securing the Apicurio Registry
        type: string
      apicurioAuthClientSecret:
        title: Apicurio Registry Auth Client Secret
        description: The Client Secret in Keycloak instance securing the Apicurio Registry
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:password
        - urn:keda:required
      apicurioAuthUsername:
        title: Apicurio Registry Auth Username
        description: The Username in Keycloak instance securing the Apicurio Registry
        type: string
      apicurioAuthPassword:
        title: Apicurio Registry Auth Password
        description: The Password in Keycloak instance securing the Apicurio Registry
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:password
        - urn:keda:required
      topicIsPattern:
        title: Topic Is Pattern
        description: Whether the topic is a pattern (regular expression). This can be used to subscribe to dynamic number of topics matching the pattern.
        type: boolean
        default: false
  dependencies:
    - "camel:kafka"
    - "camel:core"
    - "camel:kamelet"
    - "mvn:io.apicurio:apicurio-registry-serdes-jsonschema-serde:2.5.11.Final"
  template:
    beans:
      - name: kafkaHeaderDeserializer
        type: "#class:org.apache.camel.component.kafka.KafkaHeaderDeserializer"
        properties:
          enabled: '{{deserializeHeaders}}'
    from:
      uri: "kafka:{{topic}}"
      parameters:
        brokers: "{{bootstrapServers}}"
        autoCommitEnable: "{{autoCommitEnable}}"
        allowManualCommit: "{{allowManualCommit}}"
        pollOnError: "{{pollOnError}}"
        autoOffsetReset: "{{autoOffsetReset}}"
        groupId: "{{?consumerGroup}}"
        valueDeserializer: "{{valueDeserializer}}"
        topicIsPattern: "{{topicIsPattern}}"
        additionalProperties.apicurio.registry.url: "{{apicurioRegistryUrl}}"
        additionalProperties.apicurio.auth.service.url: "{{apicurioAuthServiceUrl}}"
        additionalProperties.apicurio.auth.realm: "{{apicurioAuthRealm}}"
        additionalProperties.apicurio.auth.client.id: "{{apicurioAuthClientId}}"
        additionalProperties.apicurio.auth.client.secret: "{{apicurioAuthClientSecret}}"
        additionalProperties.apicurio.auth.username: "{{apicurioAuthUsername}}"
        additionalProperties.apicurio.auth.password: "{{apicurioAuthPassword}}"
      steps:
        - process:
            ref: "{{kafkaHeaderDeserializer}}"
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-not-secured-apicurio-registry-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Kafka Not Secured with Apicurio Registry secured with Keycloak Sink"
    description: Send data to Kafka topics on an insecure broker with Apicurio Registry secured with Keycloak.
    required:
      - topic
      - bootstrapServers
      - apicurioRegistryUrl
      - apicurioAuthServiceUrl
      - apicurioAuthRealm
      - apicurioAuthClientId
      - apicurioAuthClientSecret
      - apicurioAuthUsername
      - apicurioAuthPassword
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names
        type: string
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs
        type: string
      valueSerializer:
        title: Value Serializer
        description: Serliazer class for value that implements the Serializer interface.
        type: string
        default: "io.apicurio.registry.serde.avro.AvroKafkaSerializer"
      apicurioRegistryUrl:
        title: Apicurio Registry URL
        description: The Apicurio Schema Registry URL
        type: string
        x-descriptors:
        - urn:keda:metadata:apicurioRegistryUrl
        - urn:keda:required
      avroDatumProvider:
        title: Avro Datum Provider
        description: How to write data with Avro
        type: string
        default: "io.apicurio.registry.serde.avro.ReflectAvroDatumProvider"
      apicurioAuthServiceUrl:
        title: Apicurio Registry Auth Service URL
        description: The URL for Keycloak instance securing the Apicurio Registry
        type: string
        example: "http://my-keycloak.com:8080/"
      apicurioAuthRealm:
        title: Apicurio Registry Auth Realm
        description: The Realm in Keycloak instance securing the Apicurio Registry
        type: string
      apicurioAuthClientId:
        title: Apicurio Registry Auth Client ID
        description: The Client ID in Keycloak instance securing the Apicurio Registry
        type: string
      apicurioAuthClientSecret:
        title: Apicurio Registry Auth Client Secret
        description: The Client Secret in Keycloak instance securing the Apicurio Registry
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:password
        - urn:keda:required
      apicurioAuthUsername:
        title: Apicurio Registry Auth Username
        description: The Username in Keycloak instance securing the Apicurio Registry
        type: string
      apicurioAuthPassword:
        title: Apicurio Registry Auth Password
        description: The Password in Keycloak instance securing the Apicurio Registry
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:password
        - urn:keda:required
  dependencies:
    - "camel:core"
    - "camel:kamelet"
    - "camel:kafka"
    - "mvn:io.apicurio:apicurio-registry-serdes-avro-serde:2.4.14.Final"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[key]}"
            steps:
            - setHeader:
                name: kafka.KEY
                simple: "${header[key]}"
          - simple: "${header[ce-key]}"
            steps:
            - setHeader:
                name: kafka.KEY
                simple: "${header[ce-key]}"
      - choice:
          when:
          - simple: "${header[partition-key]}"
            steps:
            - setHeader:
                name: kafka.PARTITION_KEY
                simple: "${header[partition-key]}"
          - simple: "${header[ce-partitionkey]}"
            steps:
            - setHeader:
                name: kafka.PARTITION_KEY
                simple: "${header[ce-partitionkey]}"
      - to:
          uri: "kafka:{{topic}}"
          parameters:
            brokers: "{{bootstrapServers}}"
            valueSerializer: "{{valueSerializer}}"
            additionalProperties.apicurio.registry.url: "{{apicurioRegistryUrl}}"
            additionalProperties.apicurio.registry.avro-datum-provider: "{{avroDatumProvider}}"
            additionalProperties.apicurio.auth.service.url: "{{apicurioAuthServiceUrl}}"
            additionalProperties.apicurio.auth.realm: "{{apicurioAuthRealm}}"
            additionalProperties.apicurio.auth.client.id: "{{apicurioAuthClientId}}"
            additionalProperties.apicurio.auth.client.secret: "{{apicurioAuthClientSecret}}"
            additionalProperties.apicurio.auth.username: "{{apicurioAuthUsername}}"
            additionalProperties.apicurio.auth.password: "{{apicurioAuthPassword}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-not-secured-apicurio-registry-source
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
    camel.apache.org/keda.type: "kafka"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Kafka not secured with Apicurio Registry secured with Keycloak Source"
    description: Receive data from Kafka topics on an insecure broker combined with Apicurio Registry secured with Keycloak.
    required:
      - topic
      - bootstrapServers
      - apicurioRegistryUrl
      - apicurioAuthServiceUrl
      - apicurioAuthRealm
      - apicurioAuthClientId
      - apicurioAuthClientSecret
      - apicurioAuthUsername
      - apicurioAuthPassword
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names
        type: string
        x-descriptors:
        - urn:keda:metadata:topic
        - urn:keda:required
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      autoCommitEnable:
        title: Auto Commit Enable
        description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer
        type: boolean
        default: true
      allowManualCommit:
        title: Allow Manual Commit
        description: Whether to allow doing manual commits
        type: boolean
        default: false
      pollOnError:
        title: Poll On Error Behavior
        description: What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of `DISCARD`, `ERROR_HANDLER`, `RECONNECT`, `RETRY`, `STOP`
        type: string
        default: "ERROR_HANDLER"
      autoOffsetReset:
        title: Auto Offset Reset
        description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none
        type: string
        default: "latest"
        x-descriptors:
        - urn:keda:metadata:offsetResetPolicy
      consumerGroup:
        title: Consumer Group
        description: A string that uniquely identifies the group of consumers to which this source belongs
        type: string
        example: "my-group-id"
        x-descriptors:
        - urn:keda:metadata:consumerGroup
        - urn:keda:required
      deserializeHeaders:
        title: Automatically Deserialize Headers
        description: When enabled the Kamelet source will deserialize all message headers to String representation.
        type: boolean
        default: true
      valueDeserializer:
        title: Value Deserializer
        description: Deserializer class for value that implements the Deserializer interface.
        type: string
        default: "io.apicurio.registry.serde.avro.AvroKafkaDeserializer"
      apicurioRegistryUrl:
        title: Apicurio Registry URL
        description: The Apicurio Schema Registry URL
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      avroDatumProvider:
        title: Avro Datum Provider
        description: How to read data with Avro
        type: string
        default: "io.apicurio.registry.serde.avro.ReflectAvroDatumProvider"
      apicurioAuthServiceUrl:
        title: Apicurio Registry Auth Service URL
        description: The URL for Keycloak instance securing the Apicurio Registry
        type: string
        example: "http://my-keycloak.com:8080/"
      apicurioAuthRealm:
        title: Apicurio Registry Auth Realm
        description: The Realm in Keycloak instance securing the Apicurio Registry
        type: string
      apicurioAuthClientId:
        title: Apicurio Registry Auth Client ID
        description: The Client ID in Keycloak instance securing the Apicurio Registry
        type: string
      apicurioAuthClientSecret:
        title: Apicurio Registry Auth Client Secret
        description: The Client Secret in Keycloak instance securing the Apicurio Registry
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:password
        - urn:keda:required
      apicurioAuthUsername:
        title: Apicurio Registry Auth Username
        description: The Username in Keycloak instance securing the Apicurio Registry
        type: string
      apicurioAuthPassword:
        title: Apicurio Registry Auth Password
        description: The Password in Keycloak instance securing the Apicurio Registry
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:password
        - urn:keda:required
      topicIsPattern:
        title: Topic Is Pattern
        description: Whether the topic is a pattern (regular expression). This can be used to subscribe to dynamic number of topics matching the pattern.
        type: boolean
        default: false
  dependencies:
    - "camel:kafka"
    - "camel:core"
    - "camel:kamelet"
    - "mvn:io.quarkus:quarkus-apicurio-registry-avro:3.24.2"
  template:
    beans:
      - name: kafkaHeaderDeserializer
        type: "#class:org.apache.camel.component.kafka.KafkaHeaderDeserializer"
        properties:
          enabled: '{{deserializeHeaders}}'
    from:
      uri: "kafka:{{topic}}"
      parameters:
        brokers: "{{bootstrapServers}}"
        autoCommitEnable: "{{autoCommitEnable}}"
        allowManualCommit: "{{allowManualCommit}}"
        pollOnError: "{{pollOnError}}"
        autoOffsetReset: "{{autoOffsetReset}}"
        groupId: "{{?consumerGroup}}"
        valueDeserializer: "{{valueDeserializer}}"
        topicIsPattern: "{{topicIsPattern}}"
        additionalProperties.apicurio.registry.url: "{{apicurioRegistryUrl}}"
        additionalProperties.apicurio.registry.avro-datum-provider: "{{avroDatumProvider}}"
        additionalProperties.apicurio.auth.service.url: "{{apicurioAuthServiceUrl}}"
        additionalProperties.apicurio.auth.realm: "{{apicurioAuthRealm}}"
        additionalProperties.apicurio.auth.client.id: "{{apicurioAuthClientId}}"
        additionalProperties.apicurio.auth.client.secret: "{{apicurioAuthClientSecret}}"
        additionalProperties.apicurio.auth.username: "{{apicurioAuthUsername}}"
        additionalProperties.apicurio.auth.password: "{{apicurioAuthPassword}}"
      steps:
        - process:
            ref: "{{kafkaHeaderDeserializer}}"
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-not-secured-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Kafka Not Secured Sink"
    description: Send data to Kafka topics on an insecure broker.
    required:
      - topic
      - bootstrapServers
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names
        type: string
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs
        type: string
  dependencies:
    - "camel:core"
    - "camel:kafka"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[key]}"
            steps:
            - setHeader:
                name: kafka.KEY
                simple: "${header[key]}"
          - simple: "${header[ce-key]}"
            steps:
            - setHeader:
                name: kafka.KEY
                simple: "${header[ce-key]}"
      - choice:
          when:
          - simple: "${header[partition-key]}"
            steps:
            - setHeader:
                name: kafka.PARTITION_KEY
                simple: "${header[partition-key]}"
          - simple: "${header[ce-partitionkey]}"
            steps:
            - setHeader:
                name: kafka.PARTITION_KEY
                simple: "${header[ce-partitionkey]}"
      - to:
          uri: "kafka:{{topic}}"
          parameters:
            brokers: "{{bootstrapServers}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-not-secured-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
    camel.apache.org/keda.type: "kafka"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Kafka Not Secured Source"
    description: Receive data from Kafka topics on an insecure broker.
    required:
      - topic
      - bootstrapServers
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names
        type: string
        x-descriptors:
        - urn:keda:metadata:topic
        - urn:keda:required
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      autoCommitEnable:
        title: Auto Commit Enable
        description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer
        type: boolean
        default: true
      allowManualCommit:
        title: Allow Manual Commit
        description: Whether to allow doing manual commits
        type: boolean
        default: false
      pollOnError:
        title: Poll On Error Behavior
        description: What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of `DISCARD`, `ERROR_HANDLER`, `RECONNECT`, `RETRY`, `STOP`
        type: string
        default: "ERROR_HANDLER"
      autoOffsetReset:
        title: Auto Offset Reset
        description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none
        type: string
        default: "latest"
        x-descriptors:
        - urn:keda:metadata:offsetResetPolicy
      consumerGroup:
        title: Consumer Group
        description: A string that uniquely identifies the group of consumers to which this source belongs
        type: string
        example: "my-group-id"
        x-descriptors:
        - urn:keda:metadata:consumerGroup
        - urn:keda:required
      deserializeHeaders:
        title: Automatically Deserialize Headers
        description: When enabled the Kamelet source will deserialize all message headers to String representation.
        type: boolean
        default: true
      topicIsPattern:
        title: Topic Is Pattern
        description: Whether the topic is a pattern (regular expression). This can be used to subscribe to dynamic number of topics matching the pattern.
        type: boolean
        default: false
  dependencies:
    - "camel:kafka"
    - "camel:core"
    - "camel:kamelet"
  template:
    beans:
      - name: kafkaHeaderDeserializer
        type: "#class:org.apache.camel.component.kafka.KafkaHeaderDeserializer"
        properties:
          enabled: '{{deserializeHeaders}}'
    from:
      uri: "kafka:{{topic}}"
      parameters:
        brokers: "{{bootstrapServers}}"
        autoCommitEnable: "{{autoCommitEnable}}"
        allowManualCommit: "{{allowManualCommit}}"
        pollOnError: "{{pollOnError}}"
        autoOffsetReset: "{{autoOffsetReset}}"
        groupId: "{{?consumerGroup}}"
        topicIsPattern: "{{topicIsPattern}}"
      steps:
        - process:
            ref: "{{kafkaHeaderDeserializer}}"
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-scram-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Kafka Scram Sink"
    description: Send data to Kafka topics through SCRAM login module.
    required:
      - topic
      - bootstrapServers
      - user
      - password
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names.
        type: string
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs.
        type: string
      securityProtocol:
        title: Security Protocol
        description: Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported.
        type: string
        default: SASL_SSL
      saslMechanism:
        title: SASL Mechanism
        description: The Simple Authentication and Security Layer (SASL) Mechanism used. 
        type: string
        default: SCRAM-SHA-512
      user:
        title: Username
        description: Username to authenticate to Kafka .
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: Password to authenticate to kafka.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  dependencies:
    - "camel:core"
    - "camel:kafka"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[key]}"
            steps:
            - setHeader:
                name: kafka.KEY
                simple: "${header[key]}"
          - simple: "${header[ce-key]}"
            steps:
            - setHeader:
                name: kafka.KEY
                simple: "${header[ce-key]}"
      - choice:
          when:
          - simple: "${header[partition-key]}"
            steps:
            - setHeader:
                name: kafka.PARTITION_KEY
                simple: "${header[partition-key]}"
          - simple: "${header[ce-partitionkey]}"
            steps:
            - setHeader:
                name: kafka.PARTITION_KEY
                simple: "${header[ce-partitionkey]}"
      - to:
          uri: "kafka:{{topic}}"
          parameters:
            brokers: "{{bootstrapServers}}"
            securityProtocol: "{{securityProtocol}}"
            saslMechanism: "{{saslMechanism}}"
            saslJaasConfig: 'org.apache.kafka.common.security.scram.ScramLoginModule required username="{{user}}" password="{{password}}";'
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-scram-source
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
    camel.apache.org/keda.type: "kafka"
    camel.apache.org/keda.authentication.sasl: "scram-sha-512"
    camel.apache.org/keda.authentication.tls: "enable"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Kafka Scram Source"
    description: Receive data from Kafka topics through SCRAM login module.
    required:
      - topic
      - bootstrapServers
      - user
      - password
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names
        type: string
        x-descriptors:
        - urn:keda:metadata:topic
        - urn:keda:required
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      securityProtocol:
        title: Security Protocol
        description: Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported
        type: string
        default: SASL_SSL
      saslMechanism:
        title: SASL Mechanism
        description: The Simple Authentication and Security Layer (SASL) Mechanism used.
        type: string
        default: SCRAM-SHA-512
      user:
        title: Username
        description: Username to authenticate to Kafka
        type: string
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:username
        - urn:keda:required
      password:
        title: Password
        description: Password to authenticate to kafka
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:password
        - urn:keda:required
      autoCommitEnable:
        title: Auto Commit Enable
        description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer
        type: boolean
        default: true
      allowManualCommit:
        title: Allow Manual Commit
        description: Whether to allow doing manual commits
        type: boolean
        default: false
      pollOnError:
        title: Poll On Error Behavior
        description: What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of `DISCARD`, `ERROR_HANDLER`, `RECONNECT`, `RETRY`, `STOP`
        type: string
        default: "ERROR_HANDLER"
      autoOffsetReset:
        title: Auto Offset Reset
        description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none
        type: string
        default: "latest"
        x-descriptors:
        - urn:keda:metadata:offsetResetPolicy
      consumerGroup:
        title: Consumer Group
        description: A string that uniquely identifies the group of consumers to which this source belongs
        type: string
        example: "my-group-id"
        x-descriptors:
        - urn:keda:metadata:consumerGroup
        - urn:keda:required
      deserializeHeaders:
        title: Automatically Deserialize Headers
        description: When enabled the Kamelet source will deserialize all message headers to String representation.
        type: boolean
        default: true
      topicIsPattern:
        title: Topic Is Pattern
        description: Whether the topic is a pattern (regular expression). This can be used to subscribe to dynamic number of topics matching the pattern.
        type: boolean
        default: false
  dependencies:
    - "camel:core"
    - "camel:kafka"
    - "camel:kamelet"
  template:
    beans:
      - name: kafkaHeaderDeserializer
        type: "#class:org.apache.camel.component.kafka.KafkaHeaderDeserializer"
        properties:
          enabled: '{{deserializeHeaders}}'
    from:
      uri: "kafka:{{topic}}"
      parameters:
        brokers: "{{?bootstrapServers}}"
        securityProtocol: "{{securityProtocol}}"
        saslMechanism: "{{saslMechanism}}"
        saslJaasConfig: 'org.apache.kafka.common.security.scram.ScramLoginModule required username="{{user}}" password="{{password}}";'
        autoCommitEnable: "{{autoCommitEnable}}"
        allowManualCommit: "{{allowManualCommit}}"
        pollOnError: "{{pollOnError}}"
        autoOffsetReset: "{{autoOffsetReset}}"
        groupId: "{{?consumerGroup}}"
        topicIsPattern: "{{topicIsPattern}}"
      steps:
        - process:
            ref: "{{kafkaHeaderDeserializer}}"
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Kafka Sink"
    description: Send data to Kafka topics through Plain Login Module.
    required:
      - topic
      - bootstrapServers
      - user
      - password
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names
        type: string
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs
        type: string
      securityProtocol:
        title: Security Protocol
        description: Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported
        type: string
        default: SASL_SSL
      saslMechanism:
        title: SASL Mechanism
        description: The Simple Authentication and Security Layer (SASL) Mechanism used. 
        type: string
        default: PLAIN
      user:
        title: Username
        description: Username to authenticate to Kafka 
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: Password to authenticate to kafka
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  dependencies:
    - "camel:core"
    - "camel:kafka"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[key]}"
            steps:
            - setHeader:
                name: kafka.KEY
                simple: "${header[key]}"
          - simple: "${header[ce-key]}"
            steps:
            - setHeader:
                name: kafka.KEY
                simple: "${header[ce-key]}"
      - choice:
          when:
          - simple: "${header[partition-key]}"
            steps:
            - setHeader:
                name: kafka.PARTITION_KEY
                simple: "${header[partition-key]}"
          - simple: "${header[ce-partitionkey]}"
            steps:
            - setHeader:
                name: kafka.PARTITION_KEY
                simple: "${header[ce-partitionkey]}"
      - to:
          uri: "kafka:{{topic}}"
          parameters:
            brokers: "{{bootstrapServers}}"
            securityProtocol: "{{securityProtocol}}"
            saslMechanism: "{{saslMechanism}}"
            saslJaasConfig: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="{{user}}" password="{{password}}";'
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
    camel.apache.org/keda.type: "kafka"
    camel.apache.org/keda.authentication.sasl: "plaintext"
    camel.apache.org/keda.authentication.tls: "enable"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Kafka Source"
    description: Receive data from Kafka topics through Plain Login Module.
    required:
      - topic
      - bootstrapServers
      - user
      - password
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names
        type: string
        x-descriptors:
        - urn:keda:metadata:topic
        - urn:keda:required
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs
        type: string
        x-descriptors:
        - urn:keda:metadata:bootstrapServers
        - urn:keda:required
      securityProtocol:
        title: Security Protocol
        description: Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT, SASL_SSL and SSL are supported
        type: string
        default: SASL_SSL
      saslMechanism:
        title: SASL Mechanism
        description: The Simple Authentication and Security Layer (SASL) Mechanism used.
        type: string
        default: PLAIN
      user:
        title: Username
        description: Username to authenticate to Kafka
        type: string
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:username
        - urn:keda:required
      password:
        title: Password
        description: Password to authenticate to kafka
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
        - urn:keda:authentication:password
        - urn:keda:required
      autoCommitEnable:
        title: Auto Commit Enable
        description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer
        type: boolean
        default: true
      allowManualCommit:
        title: Allow Manual Commit
        description: Whether to allow doing manual commits
        type: boolean
        default: false
      pollOnError:
        title: Poll On Error Behavior
        description: What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of `DISCARD`, `ERROR_HANDLER`, `RECONNECT`, `RETRY`, `STOP`
        type: string
        default: "ERROR_HANDLER"
      autoOffsetReset:
        title: Auto Offset Reset
        description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none
        type: string
        default: "latest"
        x-descriptors:
        - urn:keda:metadata:offsetResetPolicy
      consumerGroup:
        title: Consumer Group
        description: A string that uniquely identifies the group of consumers to which this source belongs
        type: string
        example: "my-group-id"
        x-descriptors:
        - urn:keda:metadata:consumerGroup
        - urn:keda:required
      deserializeHeaders:
        title: Automatically Deserialize Headers
        description: When enabled the Kamelet source will deserialize all message headers to String representation.
        type: boolean
        default: true
      topicIsPattern:
        title: Topic Is Pattern
        description: Whether the topic is a pattern (regular expression). This can be used to subscribe to dynamic number of topics matching the pattern.
        type: boolean
        default: false
  dependencies:
    - "camel:core"
    - "camel:kafka"
    - "camel:kamelet"
  template:
    beans:
      - name: kafkaHeaderDeserializer
        type: "#class:org.apache.camel.component.kafka.KafkaHeaderDeserializer"
        properties:
          enabled: '{{deserializeHeaders}}'
    from:
      uri: "kafka:{{topic}}"
      parameters:
        brokers: "{{?bootstrapServers}}"
        securityProtocol: "{{securityProtocol}}"
        saslMechanism: "{{saslMechanism}}"
        saslJaasConfig: 'org.apache.kafka.common.security.plain.PlainLoginModule required username="{{user}}" password="{{password}}";'
        autoCommitEnable: "{{autoCommitEnable}}"
        allowManualCommit: "{{allowManualCommit}}"
        pollOnError: "{{pollOnError}}"
        autoOffsetReset: "{{autoOffsetReset}}"
        groupId: "{{?consumerGroup}}"
        topicIsPattern: "{{topicIsPattern}}"
      steps:
        - process:
            ref: "{{kafkaHeaderDeserializer}}"
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-ssl-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    description: Send data to Kafka topics wit TLS/SSL support.
    required:
      - topic
      - bootstrapServers
      - sslKeystoreLocation
      - sslKeystorePassword
      - sslTruststoreLocation
      - sslTruststorePassword
      - sslKeyPassword
    properties:
      bootstrapServers:
        description: Comma separated list of Kafka Broker URLs
        title: Brokers
        type: string
      sslKeystoreLocation:
        description: >-
          The location of the key store file. This is optional for client and
          can be used for two-way authentication for client.
        title: SSL Keystore Location
        type: string
      sslProtocol:
        default: TLSv1.2
        description: >-
          The SSL protocol used to generate the SSLContext. Default setting is
          TLS, which is fine for most cases. Allowed values in recent JVMs are
          TLS, TLSv1.1 and TLSv1.2. SSL, SSLv2 and SSLv3 may be supported in
          older JVMs, but their usage is discouraged due to known security
          vulnerabilities.
        title: SSL Protocol
        type: string
      saslMechanism:
        title: SASL Mechanism
        description: The Simple Authentication and Security Layer (SASL) Mechanism used.
        type: string
        default: GSSAPI
      sslEnabledProtocols:
        default: TLSv1.2,TLSv1.1,TLSv1
        description: >-
          The list of protocols enabled for SSL connections. TLSv1.2, TLSv1.1
          and TLSv1 are enabled by default.
        title: SSL Enabled Protocols
        type: string
      sslKeystorePassword:
        description: >-
          The store password for the key store file.This is optional for client
          and only needed if ssl.keystore.location is configured.
        title: SSL Keystore Password
        type: string
        format: password
        x-descriptors:
          - urn:camel:group:credentials
      sslTruststoreLocation:
        description: The location of the trust store file.
        title: SSL Truststore Location
        type: string
      sslTruststorePassword:
        description: The store password for the trust store file.
        title: SSL Truststore Password
        type: string
        format: password
        x-descriptors:
          - urn:camel:group:credentials
      sslKeyPassword:
        description: The password of the private key in the key store file.
        title: SSL Key Password
        type: string
        format: password
        x-descriptors:
          - urn:camel:group:credentials
      sslEndpointAlgorithm:
        description: The endpoint identification algorithm to validate server hostname using server certificate. Use none or false to disable server hostname verification.
        title: SSL Endpoint Algorithm
        type: string
        default: https
      topic:
        description: Comma separated list of Kafka topic names
        title: Topic Names
        type: string
      securityProtocol:
        default: SSL
        description: >-
          Protocol used to communicate with brokers. SASL_PLAINTEXT, PLAINTEXT,
          SASL_SSL and SSL are supported
        title: Security Protocol
        type: string
    title: Kafka SSL Sink
    type: object
  dependencies:
    - "camel:core"
    - "camel:kafka"
    - "camel:kamelet"
  template:
    beans:
      - name: kafka-ssl-sink-local
        type: '#class:org.apache.camel.component.kafka.KafkaComponent'
      - name: kafka-ssl-sink-configuration-local
        properties:
          brokers: '{{bootstrapServers}}'
          securityProtocol: '{{securityProtocol}}'
          sslKeystoreLocation: '{{sslKeystoreLocation}}'
          sslKeyPassword: '{{sslKeyPassword}}'
          sslKeystorePassword: '{{sslKeystorePassword}}'
          sslTruststoreLocation: '{{sslTruststoreLocation}}'
          sslTruststorePassword: '{{sslTruststorePassword}}'
          sslProtocol: '{{sslProtocol}}'
          sslEnabledProtocols: '{{sslEnabledProtocols}}'
          sslEndpointAlgorithm: '{{sslEndpointAlgorithm}}'
          saslMechanism: '{{saslMechanism}}' 
        type: '#class:org.apache.camel.component.kafka.KafkaConfiguration'
    from:
      uri: "kamelet:source"
      steps:
        - choice:
            when:
              - simple: ${header[key]}
                steps:
                  - setHeader:
                      name: kafka.KEY
                      simple: ${header[key]}
              - simple: ${header[ce-key]}
                steps:
                  - setHeader:
                      name: kafka.KEY
                      simple: ${header[ce-key]}
        - choice:
            when:
              - simple: ${header[partition-key]}
                steps:
                  - setHeader:
                      name: kafka.PARTITION_KEY
                      simple: ${header[partition-key]}
              - simple: ${header[ce-partitionkey]}
                steps:
                  - setHeader:
                      name: kafka.PARTITION_KEY
                      simple: ${header[ce-partitionkey]}
        - to:
            uri: '{{kafka-ssl-sink-local}}:{{topic}}'
            parameters:
              configuration: '#bean:{{kafka-ssl-sink-configuration-local}}'
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kafka-ssl-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4wLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCA1MDAgNTAwIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MDAgNTAwOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+DQo8ZyBpZD0iWE1MSURfMV8iPg0KCTxwYXRoIGlkPSJYTUxJRF85XyIgZD0iTTMxNC44LDI2OS43Yy0xNC4yLDAtMjcsNi4zLTM1LjcsMTYuMkwyNTYuOCwyNzBjMi40LTYuNSwzLjctMTMuNiwzLjctMjAuOWMwLTcuMi0xLjMtMTQuMS0zLjYtMjAuNg0KCQlsMjIuMy0xNS43YzguNyw5LjksMjEuNCwxNi4xLDM1LjYsMTYuMWMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNnMtMjEuMy00Ny42LTQ3LjYtNDcuNnMtNDcuNiwyMS4zLTQ3LjYsNDcuNg0KCQljMCw0LjcsMC43LDkuMiwyLDEzLjVsLTIyLjMsMTUuN2MtOS4zLTExLjYtMjIuOC0xOS42LTM4LjEtMjIuMXYtMjYuOWMyMS42LTQuNSwzNy44LTIzLjcsMzcuOC00Ni42YzAtMjYuMi0yMS4zLTQ3LjYtNDcuNi00Ny42DQoJCWMtMjYuMiwwLTQ3LjYsMjEuMy00Ny42LDQ3LjZjMCwyMi42LDE1LjgsNDEuNSwzNi45LDQ2LjN2MjcuM2MtMjguOCw1LjEtNTAuOCwzMC4yLTUwLjgsNjAuNWMwLDMwLjQsMjIuMiw1NS43LDUxLjIsNjAuNXYyOC44DQoJCWMtMjEuMyw0LjctMzcuNCwyMy43LTM3LjQsNDYuNGMwLDI2LjIsMjEuMyw0Ny42LDQ3LjYsNDcuNmMyNi4yLDAsNDcuNi0yMS4zLDQ3LjYtNDcuNmMwLTIyLjctMTYtNDEuOC0zNy40LTQ2LjR2LTI4LjgNCgkJYzE1LTIuNSwyOC4yLTEwLjQsMzcuNC0yMS44bDIyLjUsMTUuOWMtMS4yLDQuMy0xLjksOC43LTEuOSwxMy40YzAsMjYuMiwyMS4zLDQ3LjYsNDcuNiw0Ny42czQ3LjYtMjEuMyw0Ny42LTQ3LjYNCgkJQzM2Mi40LDI5MSwzNDEuMSwyNjkuNywzMTQuOCwyNjkuN3ogTTMxNC44LDE1OC40YzEyLjcsMCwyMy4xLDEwLjQsMjMuMSwyMy4xYzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xcy0yMy4xLTEwLjQtMjMuMS0yMy4xDQoJCUMyOTEuOCwxNjguOCwzMDIuMSwxNTguNCwzMTQuOCwxNTguNHogTTE3NiwxMTUuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMWMxMi43LDAsMjMuMSwxMC40LDIzLjEsMjMuMQ0KCQljMCwxMi43LTEwLjMsMjMuMS0yMy4xLDIzLjFDMTg2LjMsMTM4LjIsMTc2LDEyNy44LDE3NiwxMTUuMXogTTIyMi4xLDM4NC45YzAsMTIuNy0xMC4zLDIzLjEtMjMuMSwyMy4xDQoJCWMtMTIuNywwLTIzLjEtMTAuNC0yMy4xLTIzLjFjMC0xMi43LDEwLjMtMjMuMSwyMy4xLTIzLjFDMjExLjgsMzYxLjgsMjIyLjEsMzcyLjIsMjIyLjEsMzg0Ljl6IE0xOTkuMSwyODEuMw0KCQljLTE3LjcsMC0zMi4yLTE0LjQtMzIuMi0zMi4yYzAtMTcuNywxNC40LTMyLjIsMzIuMi0zMi4yYzE3LjcsMCwzMi4yLDE0LjQsMzIuMiwzMi4yQzIzMS4yLDI2Ni45LDIxNi44LDI4MS4zLDE5OS4xLDI4MS4zeg0KCQkgTTMxNC44LDM0MC4zYy0xMi43LDAtMjMuMS0xMC40LTIzLjEtMjMuMWMwLTEyLjcsMTAuMy0yMy4xLDIzLjEtMjMuMXMyMy4xLDEwLjQsMjMuMSwyMy4xQzMzNy45LDMzMCwzMjcuNSwzNDAuMywzMTQuOCwzNDAuM3oiLz4NCjwvZz4NCjwvc3ZnPg0K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kafka"
    camel.apache.org/kamelet.namespace: "Kafka"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Kafka SSL Source"
    description: Receive data from Kafka topics with SSL/TLS support
    required:
      - topic
      - bootstrapServers
      - sslTruststoreLocation
      - sslTruststorePassword
      - sslKeyPassword
    type: object
    properties:
      topic:
        title: Topic Names
        description: Comma separated list of Kafka topic names.
        type: string
        x-descriptors:
          - urn:keda:metadata:topic
          - urn:keda:required
      bootstrapServers:
        title: Bootstrap Servers
        description: Comma separated list of Kafka Broker URLs.
        type: string
        x-descriptors:
          - urn:keda:metadata:bootstrapServers
          - urn:keda:required
      securityProtocol:
        title: Security Protocol
        description: Protocol used to communicate with brokers. `SASL_PLAINTEXT`, `PLAINTEXT`, `SASL_SSL` and `SSL` are supported.
        type: string
        default: SSL
      saslMechanism:
        title: SASL Mechanism
        description: The Simple Authentication and Security Layer (SASL) Mechanism used.
        type: string
        default: GSSAPI
      autoCommitEnable:
        title: Auto Commit Enable
        description: If true, periodically commit to ZooKeeper the offset of messages already fetched by the consumer.
        type: boolean
        default: true
      allowManualCommit:
        title: Allow Manual Commit
        description: Whether to allow doing manual commits.
        type: boolean
        default: false
      pollOnError:
        title: Poll On Error Behavior
        description: What to do if kafka threw an exception while polling for new messages. There are 5 enums and the value can be one of `DISCARD`, `ERROR_HANDLER`, `RECONNECT`, `RETRY`, `STOP`.
        type: string
        default: "ERROR_HANDLER"
      autoOffsetReset:
        title: Auto Offset Reset
        description: What to do when there is no initial offset. There are 3 enums and the value can be one of latest, earliest, none.
        type: string
        default: "latest"
        x-descriptors:
          - urn:keda:metadata:offsetResetPolicy
      consumerGroup:
        title: Consumer Group
        description: A string that uniquely identifies the group of consumers to which this source belongs.
        type: string
        example: "my-group-id"
        x-descriptors:
          - urn:keda:metadata:consumerGroup
          - urn:keda:required
      deserializeHeaders:
        title: Automatically Deserialize Headers
        description: When enabled the Kamelet source will deserialize all message headers to String representation.
        type: boolean
        default: true
      sslKeyPassword:
        description: The password of the private key in the key store file.
        title: SSL Key Password
        type: string
        format: password
        x-descriptors:
          - urn:camel:group:credentials
          - urn:keda:authentication:password
          - urn:keda:required
      sslKeystorePassword:
        description: The store password for the key store file.This is optional for client and only needed if ssl.keystore.location is configured.
        title: SSL Keystore Password
        type: string
        format: password
        x-descriptors:
          - urn:camel:group:credentials
          - urn:keda:authentication:password
      sslEndpointAlgorithm:
        description: The endpoint identification algorithm to validate server hostname using server certificate. Use none or false to disable server hostname verification.
        title: SSL Endpoint Algorithm
        type: string
        default: https
      sslProtocol:
        description: The SSL protocol used to generate the SSLContext. Default setting is TLS, which is fine for most cases. Allowed values in recent JVMs are TLS, TLSv1.1 and TLSv1.2. SSL, SSLv2 and SSLv3 may be supported in older JVMs, but their usage is discouraged due to known security vulnerabilities.
        title: SSL Protocol
        type: string
        default: TLSv1.2
      sslKeystoreLocation:
        description: The location of the key store file. This is optional for client and can be used for two-way authentication for client.
        title: SSL Keystore Location
        type: string
      sslTruststoreLocation:
        description: The location of the trust store file.
        title: SSL Truststore Location
        type: string
      sslTruststorePassword:
        description: The store password for the trust store file.
        title: SSL Truststore Password
        type: string
        format: password
        x-descriptors:
          - urn:camel:group:credentials
          - urn:keda:authentication:password
      sslEnabledProtocols:
        description:   The list of protocols enabled for SSL connections. TLSv1.2, TLSv1.1 and TLSv1 are enabled by default.
        title: SSL Enabled Protocols
        type: string
        default: TLSv1.2,TLSv1.1,TLSv1
      saslJaasConfig:
        description: Java Authentication and Authorization Service (JAAS) for Simple Authentication and Security Layer (SASL) configuration.
        title: JAAS Configuration
        type: string
      topicIsPattern:
        title: Topic Is Pattern
        description: Whether the topic is a pattern (regular expression). This can be used to subscribe to dynamic number of topics matching the pattern.
        type: boolean
        default: false
  dependencies:
    - "camel:core"
    - "camel:kafka"
    - "camel:kamelet"
  template:
    beans:
      - name: kafka-ssl-source-local
        type: '#class:org.apache.camel.component.kafka.KafkaComponent'
      - name: kafka-ssl-source-configuration-local
        properties:
          brokers: '{{bootstrapServers}}'
          securityProtocol: '{{securityProtocol}}'
          sslKeystoreLocation: '{{sslKeystoreLocation}}'
          sslKeyPassword: '{{sslKeyPassword}}'
          sslKeystorePassword: '{{sslKeystorePassword}}'
          sslTruststoreLocation: '{{sslTruststoreLocation}}'
          sslTruststorePassword: '{{sslTruststorePassword}}'
          sslProtocol: '{{sslProtocol}}'
          sslEnabledProtocols: '{{sslEnabledProtocols}}'
          sslEndpointAlgorithm: '{{sslEndpointAlgorithm}}'
          saslMechanism: '{{saslMechanism}}'
          groupId: '{{?consumerGroup}}'
          autoOffsetReset: '{{autoOffsetReset}}'
          pollOnError: '{{pollOnError}}'
          allowManualCommit: '{{allowManualCommit}}'
          autoCommitEnable: '{{autoCommitEnable}}'
          saslJaasConfig: '{{?saslJaasConfig}}'
          topicIsPattern: '{{topicIsPattern}}'
        type: '#class:org.apache.camel.component.kafka.KafkaConfiguration'
      - name: kafkaHeaderDeserializer
        type: "#class:org.apache.camel.component.kafka.KafkaHeaderDeserializer"
        properties:
          enabled: '{{deserializeHeaders}}'
    from:
      uri: "{{kafka-ssl-source-local}}:{{topic}}"
      parameters:
        configuration: '#bean:{{kafka-ssl-source-configuration-local}}'
      steps:
        - process:
            ref: "{{kafkaHeaderDeserializer}}"
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kubernetes-namespaces-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 14584 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kubernetes"
    camel.apache.org/kamelet.namespace: "Cloud"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Kubernetes Namespaces Source"
    description: Consume Events from Kubernetes Namespaces
    required:
      - token
      - masterUrl
    type: object
    properties:
      token:
        title: Oauth Token
        description: The Auth Token to connect to Kubernetes Cluster
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      masterUrl:
        title: Kubernetes Master URL
        description: The Kubernetes Cluster Master URL
        type: string
  types:
    out:
      mediaType: application/json
  dependencies:
    - "camel:kubernetes"
    - "camel:kamelet"
    - "camel:jackson"
  template:
    from:
      uri: "kubernetes-namespaces://{{masterUrl}}"
      parameters:
        oauthToken: "{{token}}"
      steps:
      - marshal:
          json: {}
      - to: "kamelet:sink"

---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kubernetes-nodes-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 14584 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kubernetes"
    camel.apache.org/kamelet.namespace: "Cloud"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Kubernetes Nodes Source"
    description: Consume Events from Kubernetes Nodes
    required:
      - token
      - masterUrl
    type: object
    properties:
      token:
        title: Oauth Token
        description: The Auth Token to connect to Kubernetes Cluster
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      masterUrl:
        title: Kubernetes Master URL
        description: The Kubernetes Cluster Master URL
        type: string
      resourceName:
        title: Resource Name
        description: The Resource Name we want to watch
        type: string
  types:
    out:
      mediaType: application/json
  dependencies:
    - "camel:kubernetes"
    - "camel:kamelet"
    - "camel:jackson"
  template:
    from:
      uri: "kubernetes-nodes://{{masterUrl}}"
      parameters:
        oauthToken: "{{token}}"
        resourceName: "{{?resourceName}}"
      steps:
      - marshal:
          json: {}
      - to: "kamelet:sink"

---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: kubernetes-pods-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 14584 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Kubernetes"
    camel.apache.org/kamelet.namespace: "Cloud"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Kubernetes Pods Source"
    description: Consume Events from Kubernetes Pods
    required:
      - token
      - masterUrl
    type: object
    properties:
      token:
        title: Oauth Token
        description: The Auth Token to connect to Kubernetes Cluster
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      masterUrl:
        title: Kubernetes Master URL
        description: The Kubernetes Cluster Master URL
        type: string
      resourceName:
        title: Resource Name
        description: The Resource Name we want to watch
        type: string
  types:
    out:
      mediaType: application/json
  dependencies:
    - "camel:kubernetes"
    - "camel:kamelet"
    - "camel:jackson"
  template:
    from:
      uri: "kubernetes-pods://{{masterUrl}}"
      parameters:
        oauthToken: "{{token}}"
        resourceName: "{{?resourceName}}"
      steps:
      - marshal:
          json: {}
      - to: "kamelet:sink"

---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: log-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE2LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQ0OCwwSDY0QzQ2LjMyOCwwLDMyLDE0LjMxMywzMiwzMnY0NDhjMCwxNy42ODgsMTQuMzI4LDMyLDMyLDMyaDM4NGMxNy42ODgsMCwzMi0xNC4zMTIsMzItMzJWMzINCgkJQzQ4MCwxNC4zMTMsNDY1LjY4OCwwLDQ0OCwweiBNNjQsNDgwVjEyOGg4MHY2NEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY4MEg2NHogTTQ0OCw0ODBIMTYwdi04MGgyNTZ2LTE2DQoJCUgxNjB2LTQ4aDI1NnYtMTZIMTYwdi00OGgyNTZ2LTE2SDE2MHYtNDhoMjU2di0xNkgxNjB2LTY0aDI4OFY0ODB6Ii8+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8L3N2Zz4NCg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Logging"
    camel.apache.org/kamelet.namespace: "Logging"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Log Action"
    description: Logs all data that flows between source and sink, useful for debugging purposes.
    type: object
    properties:
      loggerName:
        title: Logger Name
        description: Name of the logging category to use.
        type: string
        default: "log-action"
      level:
        title: Log Level
        description: Logging level to use.
        type: string
        default: "INFO"
        enum: ["TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF"]
      logMask:
        title: Log Mask
        description: Mask sensitive information like password or passphrase in the log.
        type: boolean
        default: false        
      marker:
        title: Marker
        description: An optional Marker name to use.
        type: string
      multiline:
        title: Multiline
        description: If enabled then each information is outputted on a newline.
        type: boolean
        default: false        
      showAllProperties:
        title: Show All Properties
        description: Show all of the exchange properties (both internal and custom).
        type: boolean
        default: false        
      showBody:
        title: Show Body
        description: Show the message body.
        type: boolean
        default: true        
      showBodyType:
        title: Show Body Type
        description: Show the body Java type
        type: boolean
        default: true        
      showExchangePattern:
        title: Show Exchange Pattern
        description: Shows the Message Exchange Pattern (or MEP for short)
        type: boolean
        default: true        
      showHeaders:
        title: Show Headers
        description: Show the headers received
        type: boolean
        default: false       
      showProperties:
        title: Show Properties
        description: Show the exchange properties (only custom). Use showAllProperties to show both internal and custom properties.
        type: boolean
        default: false       
      showStreams:
        title: Show Streams
        description: Show the stream bodies (they may not be available in following steps)
        type: boolean
        default: false        
      showCachedStreams:
        title: Show Cached Streams
        description: Whether Camel should show cached stream bodies or not.
        type: boolean
        default: true        
  dependencies:
  - "camel:kamelet"
  - "camel:log"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "log:{{loggerName}}"
          parameters:
            level: "{{?level}}"
            logMask: "{{?logMask}}"
            marker: "{{?marker}}"
            multiline: "{{?multiline}}"
            showAllProperties: "{{?showAllProperties}}"
            showBody: "{{?showBody}}"
            showBodyType: "{{?showBodyType}}"
            showExchangePattern: "{{?showExchangePattern}}"
            showHeaders: "{{?showHeaders}}"
            showProperties: "{{?showProperties}}"
            showStreams: "{{?showStreams}}"
            showCachedStreams: "{{?showCachedStreams}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: log-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE2LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQ0OCwwSDY0QzQ2LjMyOCwwLDMyLDE0LjMxMywzMiwzMnY0NDhjMCwxNy42ODgsMTQuMzI4LDMyLDMyLDMyaDM4NGMxNy42ODgsMCwzMi0xNC4zMTIsMzItMzJWMzINCgkJQzQ4MCwxNC4zMTMsNDY1LjY4OCwwLDQ0OCwweiBNNjQsNDgwVjEyOGg4MHY2NEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY4MEg2NHogTTQ0OCw0ODBIMTYwdi04MGgyNTZ2LTE2DQoJCUgxNjB2LTQ4aDI1NnYtMTZIMTYwdi00OGgyNTZ2LTE2SDE2MHYtNDhoMjU2di0xNkgxNjB2LTY0aDI4OFY0ODB6Ii8+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8L3N2Zz4NCg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Logging"
    camel.apache.org/kamelet.namespace: "Logging"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Log Sink"
    description: A sink that logs all data that it receives, useful for debugging purposes.
    type: object
    properties:
      loggerName:
        title: Logger Name
        description: Name of the logging category to use
        type: string
        default: "log-sink"
      level:
        title: Log Level
        description: Logging level to use
        type: string
        default: "INFO"
        enum: ["TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF"]
      logMask:
        title: Log Mask
        description: Mask sensitive information like password or passphrase in the log
        type: boolean
        default: false        
      marker:
        title: Marker
        description: An optional Marker name to use
        type: string
      multiline:
        title: Multiline
        description: If enabled then each information is outputted on a newline
        type: boolean
        default: false     
      showAllProperties:
        title: Show All Properties
        description: Show all of the exchange properties (both internal and custom)
        type: boolean
        default: false       
      showBody:
        title: Show Body
        description: Show the message body
        type: boolean
        default: true       
      showBodyType:
        title: Show Body Type
        description: Show the body Java type
        type: boolean
        default: true       
      showExchangePattern:
        title: Show Exchange Pattern
        description: Shows the Message Exchange Pattern (or MEP for short)
        type: boolean
        default: true       
      showHeaders:
        title: Show Headers
        description: Show the headers received
        type: boolean
        default: false       
      showProperties:
        title: Show Properties
        description: Show the exchange properties (only custom). Use showAllProperties to show both internal and custom properties.
        type: boolean
        default: false       
      showStreams:
        title: Show Streams
        description: Show the stream bodies (they may not be available in following steps)
        type: boolean
        default: false      
      showCachedStreams:
        title: Show Cached Streams
        description: Whether Camel should show cached stream bodies or not.
        type: boolean
        default: true       
  dependencies:
  - "camel:kamelet"
  - "camel:log"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "log:{{loggerName}}"
          parameters:
            level: "{{?level}}"
            logMask: "{{?logMask}}"
            marker: "{{?marker}}"
            multiline: "{{?multiline}}"
            showAllProperties: "{{?showAllProperties}}"
            showBody: "{{?showBody}}"
            showBodyType: "{{?showBodyType}}"
            showExchangePattern: "{{?showExchangePattern}}"
            showHeaders: "{{?showHeaders}}"
            showProperties: "{{?showProperties}}"
            showStreams: "{{?showStreams}}"
            showCachedStreams: "{{?showCachedStreams}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: mail-imap-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAwIDE2LjIwMDAwMSAxMi4yIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmc1IgogICBzb2RpcG9kaTpkb2NuYW1lPSJCcmVlemVpY29ucy1wbGFjZXMtMTYtZm9sZGVyLW1haWwuc3ZnIgogICB3aWR0aD0iMTYuMjAwMDAxIgogICBoZWlnaHQ9IjEyLjIiCiAgIGlua3NjYXBlOnZlcnNpb249IjEuMC4yIChlODZjODcwODc5LCAyMDIxLTAxLTE1KSI+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhOSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMTYiCiAgICAgaWQ9Im5hbWVkdmlldzciCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGZpdC1tYXJnaW4tdG9wPSIwLjEiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMC4xIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMC4xIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIwLjEiCiAgICAgaW5rc2NhcGU6em9vbT0iNTMuNSIKICAgICBpbmtzY2FwZTpjeD0iOC4xIgogICAgIGlua3NjYXBlOmN5PSIzLjEwOTM0NTgiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ic3ZnNSIgLz4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzA1MSI+CiAgICA8c3R5bGUKICAgICAgIHR5cGU9InRleHQvY3NzIgogICAgICAgaWQ9ImN1cnJlbnQtY29sb3Itc2NoZW1lIj4KICAgICAgLkNvbG9yU2NoZW1lLVRleHQgewogICAgICAgIGNvbG9yOiM0ZDRkNGQ7CiAgICAgIH0KICAgICAgPC9zdHlsZT4KICA8L2RlZnM+CiAgPHBhdGgKICAgICBzdHlsZT0iZmlsbDpjdXJyZW50Q29sb3I7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiCiAgICAgZD0ibSAwLjEsMC4xIHYgMTIgaCAxNiB2IC0xMiB6IG0gMS40MTQwNjI1LDEgSCAxNC42ODU5MzggTCA4LjEsNy42ODU5Mzc1IFogTSAxLjEsMi4xIGwgNCw0IC00LDQgeiBtIDE0LDAgdiA4IGwgLTQsLTQgeiBNIDUuODA3MDMxMiw2LjgwNzAzMTIgOC4xLDkuMSAxMC4zOTI5NjksNi44MDcwMzEyIDE0LjY4NTkzOCwxMS4xIEggMS41MTQwNjI1IFoiCiAgICAgaWQ9InJlY3Q0MTQ0IgogICAgIGNsYXNzPSJDb2xvclNjaGVtZS1UZXh0IiAvPgo8L3N2Zz4K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Mail"
    camel.apache.org/kamelet.namespace: "Mail"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Mail IMAP Source"
    description: Receive unread emails from an IMAP mail server, marking them as read once they are received.

    required:
    - connectionHost
    - connectionPort
    - username
    - password
    type: object
    properties:
      connectionHost:
        title: Connection Host
        description: The IMAP server host.
        type: string
        example: imap.gmail.com
      connectionPort:
        title: Connection Port
        description: The IMAP server port.
        type: string
        default: 993
      username:
        title: Username
        description: The username to access the mail box.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access the mail box.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      fetchSize:
        title: Fetch Size
        description: The number of messages fetched for each poll (-1 for no limits).
        type: integer
        default: 10
      delay:
        title: Delay
        description: The delay between fetches in milliseconds.
        type: integer
        default: 60000
  dependencies:
    - "camel:core"
    - "camel:mail"
    - "camel:kamelet"
  template:
    from:
      uri: "imaps:{{connectionHost}}:{{connectionPort}}"
      parameters:
        username: "{{username}}"
        password: "{{password}}"
        fetchSize: "{{fetchSize}}"
        delay: "{{delay}}"
      steps:
      - setHeader:
          name: "ce-subject"
          simple: "${header.Subject}"
      - setHeader:
          name: "ce-from"
          simple: "${header.From}"
      - setHeader:
          name: "ce-to"
          simple: "${header.To}"
      - setHeader:
          name: "ce-cc"
          simple: "${header.Cc}"
      - convertBodyTo:
          type: "java.lang.String"
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: mail-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAwIDE2LjIwMDAwMSAxMi4yIgogICB2ZXJzaW9uPSIxLjEiCiAgIGlkPSJzdmc1IgogICBzb2RpcG9kaTpkb2NuYW1lPSJCcmVlemVpY29ucy1wbGFjZXMtMTYtZm9sZGVyLW1haWwuc3ZnIgogICB3aWR0aD0iMTYuMjAwMDAxIgogICBoZWlnaHQ9IjEyLjIiCiAgIGlua3NjYXBlOnZlcnNpb249IjEuMC4yIChlODZjODcwODc5LCAyMDIxLTAxLTE1KSI+CiAgPG1ldGFkYXRhCiAgICAgaWQ9Im1ldGFkYXRhOSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPHNvZGlwb2RpOm5hbWVkdmlldwogICAgIHBhZ2Vjb2xvcj0iI2ZmZmZmZiIKICAgICBib3JkZXJjb2xvcj0iIzY2NjY2NiIKICAgICBib3JkZXJvcGFjaXR5PSIxIgogICAgIG9iamVjdHRvbGVyYW5jZT0iMTAiCiAgICAgZ3JpZHRvbGVyYW5jZT0iMTAiCiAgICAgZ3VpZGV0b2xlcmFuY2U9IjEwIgogICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwIgogICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgICAgaW5rc2NhcGU6d2luZG93LXdpZHRoPSIxOTIwIgogICAgIGlua3NjYXBlOndpbmRvdy1oZWlnaHQ9IjEwMTYiCiAgICAgaWQ9Im5hbWVkdmlldzciCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGZpdC1tYXJnaW4tdG9wPSIwLjEiCiAgICAgZml0LW1hcmdpbi1yaWdodD0iMC4xIgogICAgIGZpdC1tYXJnaW4tbGVmdD0iMC4xIgogICAgIGZpdC1tYXJnaW4tYm90dG9tPSIwLjEiCiAgICAgaW5rc2NhcGU6em9vbT0iNTMuNSIKICAgICBpbmtzY2FwZTpjeD0iOC4xIgogICAgIGlua3NjYXBlOmN5PSIzLjEwOTM0NTgiCiAgICAgaW5rc2NhcGU6d2luZG93LXg9IjAiCiAgICAgaW5rc2NhcGU6d2luZG93LXk9IjI3IgogICAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgICAgaW5rc2NhcGU6Y3VycmVudC1sYXllcj0ic3ZnNSIgLz4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzA1MSI+CiAgICA8c3R5bGUKICAgICAgIHR5cGU9InRleHQvY3NzIgogICAgICAgaWQ9ImN1cnJlbnQtY29sb3Itc2NoZW1lIj4KICAgICAgLkNvbG9yU2NoZW1lLVRleHQgewogICAgICAgIGNvbG9yOiM0ZDRkNGQ7CiAgICAgIH0KICAgICAgPC9zdHlsZT4KICA8L2RlZnM+CiAgPHBhdGgKICAgICBzdHlsZT0iZmlsbDpjdXJyZW50Q29sb3I7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOm5vbmUiCiAgICAgZD0ibSAwLjEsMC4xIHYgMTIgaCAxNiB2IC0xMiB6IG0gMS40MTQwNjI1LDEgSCAxNC42ODU5MzggTCA4LjEsNy42ODU5Mzc1IFogTSAxLjEsMi4xIGwgNCw0IC00LDQgeiBtIDE0LDAgdiA4IGwgLTQsLTQgeiBNIDUuODA3MDMxMiw2LjgwNzAzMTIgOC4xLDkuMSAxMC4zOTI5NjksNi44MDcwMzEyIDE0LjY4NTkzOCwxMS4xIEggMS41MTQwNjI1IFoiCiAgICAgaWQ9InJlY3Q0MTQ0IgogICAgIGNsYXNzPSJDb2xvclNjaGVtZS1UZXh0IiAvPgo8L3N2Zz4K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Mail"
    camel.apache.org/kamelet.namespace: "Mail"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Mail Sink"
    description: "Send mails to given SMTP server."
    required:
      - connectionHost
      - username
      - password
    type: object
    properties:
      connectionHost:
        description: The mail server host
        example: smtp.gmail.com
        title: Host
        type: string
      connectionPort:
        description: The mail server port
        title: Port
        default: 25
        type: string
      username:
        title: Username
        description: The username to access the mail box
        type: string
        x-descriptors:
          - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access the mail box
        type: string
        format: password
        x-descriptors:
          - urn:camel:group:credentials
      from:
        description: The `from` field of the outgoing mail
        title: From
        type: string
      to:
        description: The `to` field of the outgoing mail
        title: To
        type: string
      subject:
        description: The mail subject of the outgoing mail
        title: Subject
        type: string
  dependencies:
    - "camel:core"
    - "camel:mail"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
        - choice:
            when:
            - simple: "${header[ce-subject]}"
              steps:
                - setHeader:
                    name: Subject
                    simple: "${header[ce-subject]}"
        - choice:
            when:
            - simple: "${header[ce-from]}"
              steps:
                - setHeader:
                    name: From
                    simple: "${header[ce-from]}"
        - choice:
            when:
            - simple: "${header[ce-to]}"
              steps:
                - setHeader:
                    name: To
                    simple: "${header[ce-to]}"
        - choice:
            when:
            - simple: "${header[ce-cc]}"
              steps:
                - setHeader:
                    name: Cc
                    simple: "${header[ce-cc]}"
        - removeHeaders:
            pattern: "ce-*"
        - to:
            uri: "smtp:{{connectionHost}}:{{connectionPort}}"
            parameters:
              subject: "{{subject}}"
              from: "{{from}}"
              to: "{{to}}"
              username: "{{username}}"
              password: "{{password}}"

---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: mariadb-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 7560 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "SQL"
    camel.apache.org/kamelet.namespace: "Database"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "MariaDB Sink"
    description: Send data to a MariaDB Database. This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters.
    required:
      - serverName
      - username
      - password
      - query
      - databaseName
    type: object
    properties:
      serverName:
        title: Server Name
        description: The server name for the data source.
        type: string
        example: localhost
      serverPort:
        title: Server Port
        description: The server port for the data source.
        type: string
        default: 3306
      username:
        title: Username
        description: The username to access a secured MariaDB Database.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access a secured MariaDB Database.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      query:
        title: Query
        description: The query to execute against the MariaDB Database.
        type: string
        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
      databaseName:
        title: Database Name
        description: The name of the MariaDB Database.
        type: string
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:sql"
  - "mvn:org.apache.commons:commons-dbcp2:2.13.0"
  template:
    beans:
      - name: local-sql-mariadb-sink
        type: "#class:org.apache.camel.component.sql.SqlComponent"
        properties:
          autowiredEnabled: "false"
      - name: dsBean
        type: "#class:org.apache.commons.dbcp2.BasicDataSource"
        properties:
          username: '{{username}}'
          password: '{{password}}'
          url: 'jdbc:mariadb://{{serverName}}:{{serverPort}}/{{databaseName}}'
          driverClassName: 'org.mariadb.jdbc.Driver'
    from:
      uri: "kamelet:source"
      steps:
      - unmarshal:
          json: 
            library: Jackson
      - to: 
          uri: "{{local-sql-mariadb-sink}}:{{query}}"
          parameters:
            dataSource: "#bean:{{dsBean}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: mariadb-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 7560 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "SQL"
    camel.apache.org/kamelet.namespace: "Database"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "MariaDB Source"
    description: Query data from a MariaDB Database.
    required:
      - serverName
      - username
      - password
      - query
      - databaseName
    type: object
    properties:
      serverName:
        title: Server Name
        description: The server name for the data source.
        type: string
        example: localhost
      serverPort:
        title: Server Port
        description: The server port for the data source.
        type: string
        default: 3306
      username:
        title: Username
        description: The username to access a secured MariaDB Database.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access a secured MariaDB Database.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      query:
        title: Query
        description: The query to execute against the MariaDB Database.
        type: string
        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
      databaseName:
        title: Database Name
        description: The name of the MariaDB Database.
        type: string
      consumedQuery:
        title: Consumed Query
        description: A query to run on a tuple consumed.
        type: string
        example: 'DELETE FROM accounts where user_id = :#user_id'
      delay:
        title: Delay
        description: The number of milliseconds before the next poll
        type: integer
        default: 500
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:sql"
  - "mvn:org.apache.commons:commons-dbcp2:2.13.0"
  template:
    beans:
      - name: local-sql-mariadb-source
        type: "#class:org.apache.camel.component.sql.SqlComponent"
        properties:
          autowiredEnabled: "false"
      - name: dsBean
        type: "#class:org.apache.commons.dbcp2.BasicDataSource"
        properties:
          username: '{{username}}'
          password: '{{password}}'
          url: 'jdbc:mariadb://{{serverName}}:{{serverPort}}/{{databaseName}}'
          driverClassName: 'org.mariadb.jdbc.Driver'
    from:
      uri: "{{local-sql-mariadb-source}}:{{query}}"
      parameters:
        dataSource: "#bean:{{dsBean}}"
        onConsume: "{{?consumedQuery}}"
        delay: "{{delay}}"
      steps:
      - marshal:
          json: 
            library: Jackson
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: mask-field-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
spec:
  definition:
    title: "Mask Fields Action"
    description: "Mask fields with a constant value in the message in transit."
    required:
      - fields
      - replacement
    properties:
      fields:
        title: Fields
        description: Comma separated list of fields to mask
        type: string
      replacement:
        title: Replacement
        description: Replacement for the fields to be masked
        type: string
    type: object
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:core"
  - "camel:kafka"
  template:
    from:
      uri: kamelet:source
      steps:
      - choice:
          when:
          - simple: "${header[Content-Type]} == 'application/json'"
            steps:
            - setProperty:
                name: deserialized
                constant: "true"
            - unmarshal:
                json:
                  library: Jackson
                  unmarshalType: com.fasterxml.jackson.databind.JsonNode
      - setProperty:
          name: "fields"
          constant: "{{fields}}"
      - setProperty:
          name: "replacement"
          constant: "{{replacement}}"
      - bean: "org.apache.camel.component.kafka.transform.MaskField"
      - choice:
          when:
          - simple: "${exchangeProperty[deserialized]} == 'true'"
            steps:
            - marshal:
                json:
                  library: Jackson
                  unmarshalType: com.fasterxml.jackson.databind.JsonNode
            - setHeader:
                name: "Content-Type"
                constant: "application/json"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: message-timestamp-router-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Kafka"
spec:
  definition:
    title: "Message Timestamp Router Action"
    description: "Update the topic field as a function of the original topic name and the record's timestamp field."
    required:
      - timestampKeys
    properties:
      topicFormat:
        title: Topic Format
        description: Format string which can contain '$[topic]' and '$[timestamp]' as placeholders for the topic and timestamp, respectively.
        type: string
        default: "topic-$[timestamp]"
      timestampFormat:
        title: Timestamp Format
        description: Format string for the timestamp that is compatible with java.text.SimpleDateFormat.
        type: string
        default: "yyyyMMdd"
      timestampKeys:
        title: Timestamp Keys
        description: Comma separated list of Timestamp keys. The timestamp is taken from the first found field.
        type: string
      timestampKeyFormat:
        title: Timestamp Keys Format
        description: Format of the timestamp keys. Possible values are `timestamp`, or any format string for the timestamp that is compatible with `java.text.SimpleDateFormat`. In case of `timestamp` the field is evaluated as milliseconds since 1970 (as a UNIX Timestamp).
        type: string
        default: "timestamp"
    type: object
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:core"
  - "camel:kafka"
  template:
    from:
      uri: kamelet:source
      steps:
      - choice:
          when:
          - simple: "${header[Content-Type]} == 'application/json'"
            steps:
            - unmarshal:
                json:
                  library: Jackson
                  unmarshalType: com.fasterxml.jackson.databind.JsonNode
      - setProperty:
          name: "topicFormat"
          constant: "{{topicFormat}}"
      - setProperty:
          name: "timestampFormat"
          constant: "{{timestampFormat}}"
      - setProperty:
          name: "timestampKeys"
          constant: "{{timestampKeys}}"
      - setProperty:
          name: "timestampKeyFormat"
          constant: "{{timestampKeyFormat}}"
      - bean: "org.apache.camel.component.kafka.transform.MessageTimestampRouter"
      - marshal:
          json:
            library: Jackson
            unmarshalType: com.fasterxml.jackson.databind.JsonNode
      - setHeader:
          name: "Content-Type"
          constant: "application/json"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: minio-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2Mi42MTIgMjQuNDY1Ij48cGF0aCBkPSJNNTIuNzUxLjQxNGg5LjEwOHYyMy42M2gtOS4xMDh6TTQxLjcxMS43NGwtMTguNDg4IDkuOTJhLjkxOS45MTkgMCAwIDEtLjg1NiAwTDMuODc5Ljc0QTIuODA4IDIuODA4IDAgMCAwIDIuNTU4LjQxNGgtLjAyM0EyLjQgMi40IDAgMCAwIDAgMi42NDF2MjEuMzc2aDkuMVYxMy44NDJhLjkxOC45MTggMCAwIDEgMS4zODUtLjY4MmwxMC4zNjEgNS41NjhhMy42MzQgMy42MzQgMCAwIDAgMy4zMzYuMDI4bDEwLjkzMy01LjYzNGEuOTE3LjkxNyAwIDAgMSAxLjM3MS42OXYxMC4yMDVoOS4xVjIuNjQxQTIuNCAyLjQgMCAwIDAgNDMuMDU1LjQxNGgtLjAyM2EyLjgwOCAyLjgwOCAwIDAgMC0xLjMyMS4zMjZ6bTY1LjU2NC0uMzI2aC05LjIzN3YxMC43NTVhLjkxMy45MTMgMCAwIDEtMS4zMzguNzA2TDcyLjc2Mi42NzVhMi44MjQgMi44MjQgMCAwIDAtMS4xOTEtLjI2MWgtLjAxNmEyLjQgMi40IDAgMCAwLTIuNTM1IDIuMjI3djIxLjM3N2g5LjE2M1YxMy4yNzVhLjkxNC45MTQgMCAwIDEgMS4zMzctLjcwN2wyNC4wMzIgMTEuMmEyLjgxMyAyLjgxMyAwIDAgMCAxLjE4OC4yNiAyLjQgMi40IDAgMCAwIDIuNTM1LTIuMjI3em03LjE2MSAyMy42M1YuNDE0aDQuMTkxdjIzLjYzem0yOC44NTYuNDIxYy0xMS4yNzQgMC0xOS4yNzItNC43LTE5LjI3Mi0xMi4yMzJDMTI0LjAyIDQuNzQxIDEzMi4wNjYgMCAxNDMuMjkyIDBzMTkuMzIgNC43IDE5LjMyIDEyLjIzMy03LjkwMiAxMi4yMzItMTkuMzIgMTIuMjMyem0wLTIxLjMzM2MtOC4zODMgMC0xNC44NCAzLjIxNy0xNC44NCA5LjEgMCA1LjkyNiA2LjQ1NyA5LjEgMTQuODQgOS4xczE0Ljg4Ny0zLjE3NCAxNC44ODctOS4xYzAtNS44ODMtNi41MDQtOS4xLTE0Ljg4Ny05LjF6IiBmaWxsPSIjYzcyYzQ4Ii8+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Minio"
    camel.apache.org/kamelet.namespace: "Cloud"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Minio Sink"
    description: Upload data to MinIO.
    required:
      - bucketName
      - accessKey
      - secretKey
      - endpoint
    type: object
    properties:
      bucketName:
        title: Bucket Name
        description: The Minio Bucket name.
        type: string
      accessKey:
        title: Access Key
        description: The access key obtained from MinIO.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from MinIO.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      endpoint:
        title: Endpoint
        description: The MinIO Endpoint. You can specify an URL, domain name, IPv4 address, or IPv6 address.
        type: string
        example: http://localhost:9000
      autoCreateBucket:
        title: Autocreate Bucket
        description: Specify to automatically create the MinIO bucket.
        type: boolean
        default: false
      keyName:
        title: Key Name
        description: The key name for saving an element in the bucket.
        type: string
  dependencies:
    - "camel:core"
    - "camel:minio"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          precondition: true
          when:
            - simple: '${propertiesExist:!keyName}'
              steps:
                - choice:
                    when:
                      - simple: "${header[file]}"
                        steps:
                          - setHeader:
                              name: CamelMinioObjectName
                              simple: "${header[file]}"
                      - simple: "${header[ce-file]}"
                        steps:
                          - setHeader:
                              name: CamelMinioObjectName
                              simple: "${header[ce-file]}"
                    otherwise:
                      steps:
                        - setHeader:
                            name: CamelMinioObjectName
                            simple: "${exchangeId}"
      - to:
          uri: "minio:{{bucketName}}"
          parameters:
            autoCreateBucket: "{{autoCreateBucket}}"
            secretKey: "{{secretKey}}"
            accessKey: "{{accessKey}}"
            endpoint: "{{endpoint}}"
            keyName: "{{?keyName}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: minio-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBkYXRhLW5hbWU9IkxheWVyIDEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDE2Mi42MTIgMjQuNDY1Ij48cGF0aCBkPSJNNTIuNzUxLjQxNGg5LjEwOHYyMy42M2gtOS4xMDh6TTQxLjcxMS43NGwtMTguNDg4IDkuOTJhLjkxOS45MTkgMCAwIDEtLjg1NiAwTDMuODc5Ljc0QTIuODA4IDIuODA4IDAgMCAwIDIuNTU4LjQxNGgtLjAyM0EyLjQgMi40IDAgMCAwIDAgMi42NDF2MjEuMzc2aDkuMVYxMy44NDJhLjkxOC45MTggMCAwIDEgMS4zODUtLjY4MmwxMC4zNjEgNS41NjhhMy42MzQgMy42MzQgMCAwIDAgMy4zMzYuMDI4bDEwLjkzMy01LjYzNGEuOTE3LjkxNyAwIDAgMSAxLjM3MS42OXYxMC4yMDVoOS4xVjIuNjQxQTIuNCAyLjQgMCAwIDAgNDMuMDU1LjQxNGgtLjAyM2EyLjgwOCAyLjgwOCAwIDAgMC0xLjMyMS4zMjZ6bTY1LjU2NC0uMzI2aC05LjIzN3YxMC43NTVhLjkxMy45MTMgMCAwIDEtMS4zMzguNzA2TDcyLjc2Mi42NzVhMi44MjQgMi44MjQgMCAwIDAtMS4xOTEtLjI2MWgtLjAxNmEyLjQgMi40IDAgMCAwLTIuNTM1IDIuMjI3djIxLjM3N2g5LjE2M1YxMy4yNzVhLjkxNC45MTQgMCAwIDEgMS4zMzctLjcwN2wyNC4wMzIgMTEuMmEyLjgxMyAyLjgxMyAwIDAgMCAxLjE4OC4yNiAyLjQgMi40IDAgMCAwIDIuNTM1LTIuMjI3em03LjE2MSAyMy42M1YuNDE0aDQuMTkxdjIzLjYzem0yOC44NTYuNDIxYy0xMS4yNzQgMC0xOS4yNzItNC43LTE5LjI3Mi0xMi4yMzJDMTI0LjAyIDQuNzQxIDEzMi4wNjYgMCAxNDMuMjkyIDBzMTkuMzIgNC43IDE5LjMyIDEyLjIzMy03LjkwMiAxMi4yMzItMTkuMzIgMTIuMjMyem0wLTIxLjMzM2MtOC4zODMgMC0xNC44NCAzLjIxNy0xNC44NCA5LjEgMCA1LjkyNiA2LjQ1NyA5LjEgMTQuODQgOS4xczE0Ljg4Ny0zLjE3NCAxNC44ODctOS4xYzAtNS44ODMtNi41MDQtOS4xLTE0Ljg4Ny05LjF6IiBmaWxsPSIjYzcyYzQ4Ii8+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Minio"
    camel.apache.org/kamelet.namespace: "Cloud"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Minio Source"
    description: Receive data from MinIO.
    required:
      - bucketName
      - accessKey
      - secretKey
      - endpoint
    type: object
    properties:
      bucketName:
        title: Bucket Name
        description: The MinIO Bucket name.
        type: string
      deleteAfterRead:
        title: Auto-delete Objects
        description: Delete objects after consuming them.
        type: boolean
        default: true
      accessKey:
        title: Access Key
        description: The access key obtained from MinIO.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      secretKey:
        title: Secret Key
        description: The secret key obtained from MinIO.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      endpoint:
        title: Endpoint
        description: The MinIO Endpoint. You can specify an URL, domain name, IPv4 address, or IPv6 address.
        type: string
        example: http://localhost:9000
      autoCreateBucket:
        title: Autocreate Bucket
        description: Specifies to automatically create the MinIO bucket.
        type: boolean
        default: false
  dependencies:
  - "camel:minio"
  - "camel:kamelet"
  template:
    from:
      uri: "minio:{{bucketName}}"
      parameters:
        autoCreateBucket: "{{autoCreateBucket}}"
        secretKey: "{{secretKey}}"
        accessKey: "{{accessKey}}"
        endpoint: "{{endpoint}}"
        deleteAfterRead: "{{deleteAfterRead}}"
      steps:
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: mongodb-changes-stream-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzEgNjciIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9IjEiIHk9IjEiLz48c3ltYm9sIGlkPSJBIiBvdmVyZmxvdz0idmlzaWJsZSI+PGcgc3Ryb2tlPSJub25lIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjxwYXRoIGQ9Ik0xNC4xNzQuMTc1bDEuNzA4IDMuMjA4Yy4zNzEuNTc5LjgwNCAxLjExNyAxLjI5IDEuNjA0IDEuNDMgMS40MyAyLjc4OCAyLjkyOCA0LjAwOCA0LjUzMiAyLjg5NCAzLjggNC44NDYgOCA2LjI0IDEyLjU4NGEzMC45NCAzMC45NCAwIDAgMSAxLjMyNCA4LjU0Yy4xNCA4LjY0Ni0yLjgyNCAxNi4wNy04LjggMjIuMjQtLjk3Mi45NzgtMi4wMjIgMS44NzYtMy4xNCAyLjY4NC0uNTkyIDAtLjg3Mi0uNDU0LTEuMTE2LS44NzItLjQ1NC0uNzY2LS43MzItMS42NC0uODcyLTIuNTEtLjIxLTEuMDQ2LS4zNDgtMi4wOTItLjI4LTMuMTcydi0uNDg4Yy0uMDQ4LS4xMjQtLjU3LTQ4LjEyNC0uMzYyLTQ4LjM1eiIgZmlsbD0iIzU5OTYzNiIvPjxwYXRoIGQ9Ik0xNC4xNzQuMDY5Yy0uMDctLjE0LS4xNC0uMDM0LS4yMS4wMzQuMDM0LjctLjIxIDEuMzI0LS41OTIgMS45Mi0uNC41OTItLjk3NiAxLjA0Ni0xLjUzNCAxLjUzNC0zLjEgMi42ODQtNS41NCA1LjkyNi03LjQ5NCA5LjU1Mi0yLjYgNC44OC0zLjk0IDEwLjExLTQuMzIgMTUuNjE2LS4xNzQgMS45ODYuNjI4IDguOTk0IDEuMjU0IDExLjAxNiAxLjcwOCA1LjM2OCA0Ljc3NiA5Ljg2NiA4Ljc1IDEzLjc3YTM1LjA4IDM1LjA4IDAgMCAwIDMuMSAyLjY1Yy4zMTQgMCAuMzQ4LS4yOC40LS40ODhhOS41NyA5LjU3IDAgMCAwIC4zMTQtMS4zNmwuNy01LjIyOEwxNC4xNzQuMDY5eiIgZmlsbD0iIzZjYWM0OCIvPjxwYXRoIGQ9Ik0xNS44ODIgNTcuNjkxYy4wNy0uOC40NTQtMS40NjQuODcyLTIuMTI2LS40LS4xNzQtLjczMi0uNTItLjk3Ni0uOTA2YTYuNDcgNi40NyAwIDAgMS0uNTItMS4xNWMtLjQ4OC0xLjQ2NC0uNTkyLTMtLjczMi00LjQ5NnYtLjkwNmMtLjE3NC4xNC0uMjEgMS4zMjQtLjIxIDEuNS0uMTAyIDEuNTgxLS4zMTIgMy4xNTQtLjYyOCA0LjcwNi0uMTA0LjYyOC0uMTc0IDEuMjU0LS41NiAxLjgxMiAwIC4wNyAwIC4xNC4wMzQuMjQ0LjYyOCAxLjg0OC44IDMuNzMuOTA2IDUuNjQ4di43YzAgLjgzNi0uMDM0LjY2LjY2Ljk0LjI4LjEwNC41OTIuMTQuODcyLjM0OC4yMSAwIC4yNDQtLjE3NC4yNDQtLjMxNGwtLjEwNC0xLjE1di0zLjIwOGMtLjAzNC0uNTYuMDctMS4xMTYuMTQtMS42NHoiIGZpbGw9IiNjMmJmYmYiLz48L2c+PC9zeW1ib2w+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "MongoDB"
    camel.apache.org/kamelet.namespace: "Nosql"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "MongoDB Changes Stream Source"
    description: Consume Changes from MongoDB Collection in streaming mode.
    required:
      - hosts
      - collection
      - database
    type: object
    properties:
      hosts:
        title: MongoDB Hosts
        description: Comma separated list of MongoDB Host Addresses in host:port format.
        type: string
      collection:
        title: MongoDB Collection
        description: Sets the name of the MongoDB collection to bind to this endpoint.
        type: string
      password:
        title: MongoDB Password
        description: User password for accessing MongoDB.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      username:
        title: MongoDB Username
        description: Username for accessing MongoDB. The username must be present in the MongoDB's authentication database (authenticationDatabase). By default, the MongoDB authenticationDatabase is 'admin'.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      ssl:
        title: Enable Ssl for Mongodb Connection
        description: whether to enable ssl connection to mongodb
        type: boolean
        default: true
      sslValidationEnabled:
        title: Enables Ssl Certificates Validation and Host name checks.
        description: IMPORTANT this should be disabled only in test environment since can pose security issues.
        type: boolean
        default: true
      database:
        title: MongoDB Database
        description: Sets the name of the MongoDB database to target.
        type: string
      streamFilter:
        title: Stream Filter
        description: Filter condition for change streams consumer.
        type: string
        example: "{ '$match':{'$or':[{'fullDocument.stringValue': 'specificValue'}]} }"
  dependencies:
    - "camel:kamelet"
    - "camel:mongodb"
    - "camel:jackson"
  template:
    beans:
      - name: local-mongodb
        type: "#class:org.apache.camel.component.mongodb.MongoDbComponent"
      - name: mongo-client
        type: "#class:org.apache.camel.component.mongodb.SslAwareMongoClient"
        properties:
          password: "{{?password}}"
          username: "{{?username}}"
          hosts: "{{hosts}}"
          ssl: "{{ssl}}"
          sslValidationEnabled: "{{sslValidationEnabled}}"
    from:
      uri: "{{local-mongodb}}:test"
      parameters:
        collection: "{{collection}}"
        database: "{{database}}"
        consumerType: "changeStreams"
        streamFilter: "{{?streamFilter}}"
        mongoConnection: "#{{mongo-client}}"
      steps:
      - marshal:
          json: {}
      - to: kamelet:sink
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: mongodb-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzEgNjciIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9IjEiIHk9IjEiLz48c3ltYm9sIGlkPSJBIiBvdmVyZmxvdz0idmlzaWJsZSI+PGcgc3Ryb2tlPSJub25lIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjxwYXRoIGQ9Ik0xNC4xNzQuMTc1bDEuNzA4IDMuMjA4Yy4zNzEuNTc5LjgwNCAxLjExNyAxLjI5IDEuNjA0IDEuNDMgMS40MyAyLjc4OCAyLjkyOCA0LjAwOCA0LjUzMiAyLjg5NCAzLjggNC44NDYgOCA2LjI0IDEyLjU4NGEzMC45NCAzMC45NCAwIDAgMSAxLjMyNCA4LjU0Yy4xNCA4LjY0Ni0yLjgyNCAxNi4wNy04LjggMjIuMjQtLjk3Mi45NzgtMi4wMjIgMS44NzYtMy4xNCAyLjY4NC0uNTkyIDAtLjg3Mi0uNDU0LTEuMTE2LS44NzItLjQ1NC0uNzY2LS43MzItMS42NC0uODcyLTIuNTEtLjIxLTEuMDQ2LS4zNDgtMi4wOTItLjI4LTMuMTcydi0uNDg4Yy0uMDQ4LS4xMjQtLjU3LTQ4LjEyNC0uMzYyLTQ4LjM1eiIgZmlsbD0iIzU5OTYzNiIvPjxwYXRoIGQ9Ik0xNC4xNzQuMDY5Yy0uMDctLjE0LS4xNC0uMDM0LS4yMS4wMzQuMDM0LjctLjIxIDEuMzI0LS41OTIgMS45Mi0uNC41OTItLjk3NiAxLjA0Ni0xLjUzNCAxLjUzNC0zLjEgMi42ODQtNS41NCA1LjkyNi03LjQ5NCA5LjU1Mi0yLjYgNC44OC0zLjk0IDEwLjExLTQuMzIgMTUuNjE2LS4xNzQgMS45ODYuNjI4IDguOTk0IDEuMjU0IDExLjAxNiAxLjcwOCA1LjM2OCA0Ljc3NiA5Ljg2NiA4Ljc1IDEzLjc3YTM1LjA4IDM1LjA4IDAgMCAwIDMuMSAyLjY1Yy4zMTQgMCAuMzQ4LS4yOC40LS40ODhhOS41NyA5LjU3IDAgMCAwIC4zMTQtMS4zNmwuNy01LjIyOEwxNC4xNzQuMDY5eiIgZmlsbD0iIzZjYWM0OCIvPjxwYXRoIGQ9Ik0xNS44ODIgNTcuNjkxYy4wNy0uOC40NTQtMS40NjQuODcyLTIuMTI2LS40LS4xNzQtLjczMi0uNTItLjk3Ni0uOTA2YTYuNDcgNi40NyAwIDAgMS0uNTItMS4xNWMtLjQ4OC0xLjQ2NC0uNTkyLTMtLjczMi00LjQ5NnYtLjkwNmMtLjE3NC4xNC0uMjEgMS4zMjQtLjIxIDEuNS0uMTAyIDEuNTgxLS4zMTIgMy4xNTQtLjYyOCA0LjcwNi0uMTA0LjYyOC0uMTc0IDEuMjU0LS41NiAxLjgxMiAwIC4wNyAwIC4xNC4wMzQuMjQ0LjYyOCAxLjg0OC44IDMuNzMuOTA2IDUuNjQ4di43YzAgLjgzNi0uMDM0LjY2LjY2Ljk0LjI4LjEwNC41OTIuMTQuODcyLjM0OC4yMSAwIC4yNDQtLjE3NC4yNDQtLjMxNGwtLjEwNC0xLjE1di0zLjIwOGMtLjAzNC0uNTYuMDctMS4xMTYuMTQtMS42NHoiIGZpbGw9IiNjMmJmYmYiLz48L2c+PC9zeW1ib2w+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "MongoDB"
    camel.apache.org/kamelet.namespace: "Nosql"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "MongoDB Sink"
    description: Send data to MongoDB.
    required:
      - hosts
      - collection
      - database
    type: object
    properties:
      hosts:
        title: MongoDB Hosts
        description: A comma-separated list of MongoDB host addresses in `host:port` format.
        type: string
      collection:
        title: MongoDB Collection
        description: The name of the MongoDB collection to bind to this endpoint.
        type: string
      password:
        title: MongoDB Password
        description: A user password for accessing MongoDB.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      username:
        title: MongoDB Username
        description: A username for accessing MongoDB.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      ssl:
        title: Enable Ssl for Mongodb Connection
        description: whether to enable ssl connection to mongodb.
        type: boolean
        default: true
      sslValidationEnabled:
        title: Enables Ssl Certificates Validation and Host name checks.
        description: IMPORTANT this should be disabled only in test environment since can pose security issues.
        type: boolean
        default: true
      database:
        title: MongoDB Database
        description: The name of the MongoDB database.
        type: string
      writeConcern:
        title: Write Concern
        description: The level of acknowledgment requested from MongoDB for write operations.
        type: string
        enum: ["ACKNOWLEDGED", "W1", "W2", "W3", "UNACKNOWLEDGED", "JOURNALED", "MAJORITY"]
      createCollection:
        title: Collection
        description: Create a collection during initialization if it doesn't exist.
        type: boolean
        default: false
  types:
    in:
      mediaType: application/json
  dependencies:
    - "camel:core"
    - "camel:kamelet"
    - "camel:mongodb"
    - "camel:jackson"
  template:
    beans:
      - name: local-mongodb
        type: "#class:org.apache.camel.component.mongodb.MongoDbComponent"
      - name: mongo-client
        type: "#class:org.apache.camel.component.mongodb.SslAwareMongoClient"
        properties:
          password: "{{?password}}"
          username: "{{?username}}"
          hosts: "{{hosts}}"
          ssl: "{{ssl}}"
          sslValidationEnabled: "{{sslValidationEnabled}}"
    from:
      uri: kamelet:source
      steps:
      - choice:
          when:
          - simple: "${header[db-upsert]}"
            steps:
            - setHeader:
                name: CamelMongoDbUpsert
                simple: "${header[db-upsert]}"
          - simple: "${header[ce-dbupsert]}"
            steps:
            - setHeader:
                name: CamelMongoDbUpsert
                simple: "${header[ce-dbupsert]}"
      - to:
          uri: "{{local-mongodb}}:test"
          parameters:
            createCollection: "{{?createCollection}}"
            writeConcern: "{{?writeConcern}}"
            collection: "{{collection}}"
            database: "{{database}}"
            operation: "insert"
            mongoConnection: "#{{mongo-client}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: mongodb-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgMzEgNjciIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9IjEiIHk9IjEiLz48c3ltYm9sIGlkPSJBIiBvdmVyZmxvdz0idmlzaWJsZSI+PGcgc3Ryb2tlPSJub25lIiBmaWxsLXJ1bGU9Im5vbnplcm8iPjxwYXRoIGQ9Ik0xNC4xNzQuMTc1bDEuNzA4IDMuMjA4Yy4zNzEuNTc5LjgwNCAxLjExNyAxLjI5IDEuNjA0IDEuNDMgMS40MyAyLjc4OCAyLjkyOCA0LjAwOCA0LjUzMiAyLjg5NCAzLjggNC44NDYgOCA2LjI0IDEyLjU4NGEzMC45NCAzMC45NCAwIDAgMSAxLjMyNCA4LjU0Yy4xNCA4LjY0Ni0yLjgyNCAxNi4wNy04LjggMjIuMjQtLjk3Mi45NzgtMi4wMjIgMS44NzYtMy4xNCAyLjY4NC0uNTkyIDAtLjg3Mi0uNDU0LTEuMTE2LS44NzItLjQ1NC0uNzY2LS43MzItMS42NC0uODcyLTIuNTEtLjIxLTEuMDQ2LS4zNDgtMi4wOTItLjI4LTMuMTcydi0uNDg4Yy0uMDQ4LS4xMjQtLjU3LTQ4LjEyNC0uMzYyLTQ4LjM1eiIgZmlsbD0iIzU5OTYzNiIvPjxwYXRoIGQ9Ik0xNC4xNzQuMDY5Yy0uMDctLjE0LS4xNC0uMDM0LS4yMS4wMzQuMDM0LjctLjIxIDEuMzI0LS41OTIgMS45Mi0uNC41OTItLjk3NiAxLjA0Ni0xLjUzNCAxLjUzNC0zLjEgMi42ODQtNS41NCA1LjkyNi03LjQ5NCA5LjU1Mi0yLjYgNC44OC0zLjk0IDEwLjExLTQuMzIgMTUuNjE2LS4xNzQgMS45ODYuNjI4IDguOTk0IDEuMjU0IDExLjAxNiAxLjcwOCA1LjM2OCA0Ljc3NiA5Ljg2NiA4Ljc1IDEzLjc3YTM1LjA4IDM1LjA4IDAgMCAwIDMuMSAyLjY1Yy4zMTQgMCAuMzQ4LS4yOC40LS40ODhhOS41NyA5LjU3IDAgMCAwIC4zMTQtMS4zNmwuNy01LjIyOEwxNC4xNzQuMDY5eiIgZmlsbD0iIzZjYWM0OCIvPjxwYXRoIGQ9Ik0xNS44ODIgNTcuNjkxYy4wNy0uOC40NTQtMS40NjQuODcyLTIuMTI2LS40LS4xNzQtLjczMi0uNTItLjk3Ni0uOTA2YTYuNDcgNi40NyAwIDAgMS0uNTItMS4xNWMtLjQ4OC0xLjQ2NC0uNTkyLTMtLjczMi00LjQ5NnYtLjkwNmMtLjE3NC4xNC0uMjEgMS4zMjQtLjIxIDEuNS0uMTAyIDEuNTgxLS4zMTIgMy4xNTQtLjYyOCA0LjcwNi0uMTA0LjYyOC0uMTc0IDEuMjU0LS41NiAxLjgxMiAwIC4wNyAwIC4xNC4wMzQuMjQ0LjYyOCAxLjg0OC44IDMuNzMuOTA2IDUuNjQ4di43YzAgLjgzNi0uMDM0LjY2LjY2Ljk0LjI4LjEwNC41OTIuMTQuODcyLjM0OC4yMSAwIC4yNDQtLjE3NC4yNDQtLjMxNGwtLjEwNC0xLjE1di0zLjIwOGMtLjAzNC0uNTYuMDctMS4xMTYuMTQtMS42NHoiIGZpbGw9IiNjMmJmYmYiLz48L2c+PC9zeW1ib2w+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "MongoDB"
    camel.apache.org/kamelet.namespace: "Nosql"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "MongoDB Source"
    description: Consume data from MongoDB.
    required:
      - hosts
      - collection
      - database
    type: object
    properties:
      hosts:
        title: MongoDB Hosts
        description: A comma-separated list of MongoDB host addresses in `host:port` format.
        type: string
      collection:
        title: MongoDB Collection
        description: The name of the MongoDB collection to bind to this endpoint.
        type: string
      password:
        title: MongoDB Password
        description: The user password for accessing MongoDB.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      username:
        title: MongoDB Username
        description: The username for accessing MongoDB. The username must be present in the MongoDB's authentication database (`authenticationDatabase`). By default, the MongoDB `authenticationDatabase` is 'admin'.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      ssl:
        title: Enable Ssl for Mongodb Connection
        description: whether to enable ssl connection to mongodb
        type: boolean
        default: true
      sslValidationEnabled:
        title: Enables Ssl Certificates Validation and Host name checks.
        description: IMPORTANT this should be disabled only in test environment since can pose security issues.
        type: boolean
        default: true
      database:
        title: MongoDB Database
        description: The name of the MongoDB database.
        type: string
      persistentTailTracking:
        title: MongoDB Persistent Tail Tracking
        description: Specifies to enable persistent tail tracking, which is a mechanism to keep track of the last consumed data across system restarts. The next time the system is up, the endpoint recovers the cursor from the point where it last stopped consuimg data. This option will only work on capped collections.
        type: boolean
        default: false
      tailTrackIncreasingField:
        title: MongoDB Tail Track Increasing Field
        description: The correlation field in the incoming data which is of increasing nature and is used to position the tailing cursor every time it is generated.
        type: string
  dependencies:
    - "camel:kamelet"
    - "camel:mongodb"
    - "camel:jackson"
  template:
    beans:
      - name: local-mongodb
        type: "#class:org.apache.camel.component.mongodb.MongoDbComponent"
      - name: mongo-client
        type: "#class:org.apache.camel.component.mongodb.SslAwareMongoClient"
        properties:
          password: "{{?password}}"
          username: "{{?username}}"
          hosts: "{{hosts}}"
          ssl: "{{ssl}}"
          sslValidationEnabled: "{{sslValidationEnabled}}"
    from:
      uri: "{{local-mongodb}}:test"
      parameters:
        collection: "{{collection}}"
        database: "{{database}}"
        persistentTailTracking: "{{persistentTailTracking}}"
        tailTrackIncreasingField: "{{?tailTrackIncreasingField}}"
        mongoConnection: "#{{mongo-client}}"
      steps:
      - marshal:
          json: {}
      - to: kamelet:sink
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: mqtt-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjMuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMiIgYmFzZVByb2ZpbGU9InRpbnkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIKCSB5PSIwcHgiIHZpZXdCb3g9IjAgMCAzMjAgMzIwIiBvdmVyZmxvdz0idmlzaWJsZSIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnIGlkPSJibGFja19iZyIgZGlzcGxheT0ibm9uZSI+Cgk8cmVjdCBkaXNwbGF5PSJpbmxpbmUiIHdpZHRoPSIzMjAiIGhlaWdodD0iMzIwIi8+CjwvZz4KPGcgaWQ9ImxvZ29zIj4KCTxnPgoJCTxwYXRoIGZpbGw9IiM2NjAwNjYiIGQ9Ik03LjEsMTgwLjZ2MTE3LjFjMCw4LjQsNi44LDE1LjMsMTUuMywxNS4zSDE0MkMxNDEsMjM5LjgsODAuOSwxODAuNyw3LjEsMTgwLjZ6Ii8+CgkJPHBhdGggZmlsbD0iIzY2MDA2NiIgZD0iTTcuMSw4NC4xdjQ5LjhjOTksMC45LDE3OS40LDgwLjcsMTgwLjQsMTc5LjFoNTEuN0MyMzguMiwxODYuNiwxMzQuNSw4NC4yLDcuMSw4NC4xeiIvPgoJCTxwYXRoIGZpbGw9IiM2NjAwNjYiIGQ9Ik0zMTIuOSwyOTcuNlYxOTMuNUMyNzguMSwxMDcuMiwyMDcuMywzOC45LDExOSw3LjFIMjIuNGMtOC40LDAtMTUuMyw2LjgtMTUuMywxNS4zdjE1CgkJCWMxNTIuNiwwLjksMjc2LjYsMTI0LDI3Ny42LDI3NS42aDEzQzMwNi4xLDMxMi45LDMxMi45LDMwNi4xLDMxMi45LDI5Ny42eiIvPgoJCTxwYXRoIGZpbGw9IiM2NjAwNjYiIGQ9Ik0yNzIuNiw0OS44YzE0LjUsMTQuNCwyOC42LDMxLjcsNDAuNCw0Ny44VjIyLjRjMC04LjQtNi44LTE1LjMtMTUuMy0xNS4zaC03Ny4zCgkJCUMyMzguNCwxOS43LDI1Ni42LDMzLjksMjcyLjYsNDkuOHoiLz4KCTwvZz4KPC9nPgo8L3N2Zz4K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "MQTT"
    camel.apache.org/kamelet.namespace: "Messaging"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "MQTT Sink"
    description: Allows sending messages to any endpoint that supports the MQTT protocol, such as a message broker.
    required:
    - topic
    - brokerUrl
    type: object
    properties:
      topic:
        title: Topic
        description: The topic to send messages to
        type: string
        example: "mytopic"
      brokerUrl:
        title: Broker URL
        description: The URL of the broker where to establish the connection
        type: string
        example: "tcp://mosquitto:1883"
      username:
        title: Username
        description: Username to use when connecting to the MQTT broker
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: Password to use when connecting to the MQTT broker
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  dependencies:
    - "camel:paho"
    - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - to:
          uri: paho:{{topic}}
          parameters:
            brokerUrl: "{{brokerUrl}}"
            userName: "{{?username}}"
            password: "{{?password}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: mqtt-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjMuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMiIgYmFzZVByb2ZpbGU9InRpbnkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIKCSB5PSIwcHgiIHZpZXdCb3g9IjAgMCAzMjAgMzIwIiBvdmVyZmxvdz0idmlzaWJsZSIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnIGlkPSJibGFja19iZyIgZGlzcGxheT0ibm9uZSI+Cgk8cmVjdCBkaXNwbGF5PSJpbmxpbmUiIHdpZHRoPSIzMjAiIGhlaWdodD0iMzIwIi8+CjwvZz4KPGcgaWQ9ImxvZ29zIj4KCTxnPgoJCTxwYXRoIGZpbGw9IiM2NjAwNjYiIGQ9Ik03LjEsMTgwLjZ2MTE3LjFjMCw4LjQsNi44LDE1LjMsMTUuMywxNS4zSDE0MkMxNDEsMjM5LjgsODAuOSwxODAuNyw3LjEsMTgwLjZ6Ii8+CgkJPHBhdGggZmlsbD0iIzY2MDA2NiIgZD0iTTcuMSw4NC4xdjQ5LjhjOTksMC45LDE3OS40LDgwLjcsMTgwLjQsMTc5LjFoNTEuN0MyMzguMiwxODYuNiwxMzQuNSw4NC4yLDcuMSw4NC4xeiIvPgoJCTxwYXRoIGZpbGw9IiM2NjAwNjYiIGQ9Ik0zMTIuOSwyOTcuNlYxOTMuNUMyNzguMSwxMDcuMiwyMDcuMywzOC45LDExOSw3LjFIMjIuNGMtOC40LDAtMTUuMyw2LjgtMTUuMywxNS4zdjE1CgkJCWMxNTIuNiwwLjksMjc2LjYsMTI0LDI3Ny42LDI3NS42aDEzQzMwNi4xLDMxMi45LDMxMi45LDMwNi4xLDMxMi45LDI5Ny42eiIvPgoJCTxwYXRoIGZpbGw9IiM2NjAwNjYiIGQ9Ik0yNzIuNiw0OS44YzE0LjUsMTQuNCwyOC42LDMxLjcsNDAuNCw0Ny44VjIyLjRjMC04LjQtNi44LTE1LjMtMTUuMy0xNS4zaC03Ny4zCgkJCUMyMzguNCwxOS43LDI1Ni42LDMzLjksMjcyLjYsNDkuOHoiLz4KCTwvZz4KPC9nPgo8L3N2Zz4K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "MQTT"
    camel.apache.org/kamelet.namespace: "Messaging"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "MQTT Source"
    description: Allows receiving messages from any endpoint that supports the MQTT protocol, such as a message broker.
    required:
    - topic
    - brokerUrl
    type: object
    properties:
      topic:
        title: Topic
        description: The topic to subscribe to
        type: string
        example: "mytopic"
      brokerUrl:
        title: Broker URL
        description: The URL of the broker where to establish the connection
        type: string
        example: "tcp://mosquitto:1883"
      clientId:
        title: Client ID
        description: The client ID to use when connecting to the resource
        type: string
        default: "mqtt-source"
      username:
        title: Username
        description: Username to use when connecting to the MQTT broker
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: Password to use when connecting to the MQTT broker
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  dependencies:
    - "camel:paho"
    - "camel:kamelet"
  template:
    from:
      uri: paho:{{topic}}
      parameters:
        brokerUrl: "{{brokerUrl}}"
        clientId: "{{clientId}}"
        userName: "{{?username}}"
        password: "{{?password}}"
      steps:
      - to: kamelet:sink
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: mqtt5-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjMuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMiIgYmFzZVByb2ZpbGU9InRpbnkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIKCSB5PSIwcHgiIHZpZXdCb3g9IjAgMCAzMjAgMzIwIiBvdmVyZmxvdz0idmlzaWJsZSIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnIGlkPSJibGFja19iZyIgZGlzcGxheT0ibm9uZSI+Cgk8cmVjdCBkaXNwbGF5PSJpbmxpbmUiIHdpZHRoPSIzMjAiIGhlaWdodD0iMzIwIi8+CjwvZz4KPGcgaWQ9ImxvZ29zIj4KCTxnPgoJCTxwYXRoIGZpbGw9IiM2NjAwNjYiIGQ9Ik03LjEsMTgwLjZ2MTE3LjFjMCw4LjQsNi44LDE1LjMsMTUuMywxNS4zSDE0MkMxNDEsMjM5LjgsODAuOSwxODAuNyw3LjEsMTgwLjZ6Ii8+CgkJPHBhdGggZmlsbD0iIzY2MDA2NiIgZD0iTTcuMSw4NC4xdjQ5LjhjOTksMC45LDE3OS40LDgwLjcsMTgwLjQsMTc5LjFoNTEuN0MyMzguMiwxODYuNiwxMzQuNSw4NC4yLDcuMSw4NC4xeiIvPgoJCTxwYXRoIGZpbGw9IiM2NjAwNjYiIGQ9Ik0zMTIuOSwyOTcuNlYxOTMuNUMyNzguMSwxMDcuMiwyMDcuMywzOC45LDExOSw3LjFIMjIuNGMtOC40LDAtMTUuMyw2LjgtMTUuMywxNS4zdjE1CgkJCWMxNTIuNiwwLjksMjc2LjYsMTI0LDI3Ny42LDI3NS42aDEzQzMwNi4xLDMxMi45LDMxMi45LDMwNi4xLDMxMi45LDI5Ny42eiIvPgoJCTxwYXRoIGZpbGw9IiM2NjAwNjYiIGQ9Ik0yNzIuNiw0OS44YzE0LjUsMTQuNCwyOC42LDMxLjcsNDAuNCw0Ny44VjIyLjRjMC04LjQtNi44LTE1LjMtMTUuMy0xNS4zaC03Ny4zCgkJCUMyMzguNCwxOS43LDI1Ni42LDMzLjksMjcyLjYsNDkuOHoiLz4KCTwvZz4KPC9nPgo8L3N2Zz4K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "MQTT v5"
    camel.apache.org/kamelet.namespace: "Messaging"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "MQTT v5 Sink"
    description: Allows sending messages to any endpoint that supports the MQTT v5 protocol, such as a message broker.
    required:
    - topic
    - brokerUrl
    type: object
    properties:
      topic:
        title: Topic
        description: The topic to send messages to.
        type: string
        example: "mytopic"
      brokerUrl:
        title: Broker URL
        description: The URL of the broker where to establish the connection.
        type: string
        example: "tcp://mosquitto:1883"
      username:
        title: Username
        description: Username to use when connecting to the MQTT v5 compliant broker.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: Password to use when connecting to the MQTT v5 compliant broker.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  dependencies:
    - "camel:paho-mqtt5"
    - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - to:
          uri: paho-mqtt5:{{topic}}
          parameters:
            brokerUrl: "{{brokerUrl}}"
            userName: "{{?username}}"
            password: "{{?password}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: mqtt5-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI0LjMuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMiIgYmFzZVByb2ZpbGU9InRpbnkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIKCSB5PSIwcHgiIHZpZXdCb3g9IjAgMCAzMjAgMzIwIiBvdmVyZmxvdz0idmlzaWJsZSIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnIGlkPSJibGFja19iZyIgZGlzcGxheT0ibm9uZSI+Cgk8cmVjdCBkaXNwbGF5PSJpbmxpbmUiIHdpZHRoPSIzMjAiIGhlaWdodD0iMzIwIi8+CjwvZz4KPGcgaWQ9ImxvZ29zIj4KCTxnPgoJCTxwYXRoIGZpbGw9IiM2NjAwNjYiIGQ9Ik03LjEsMTgwLjZ2MTE3LjFjMCw4LjQsNi44LDE1LjMsMTUuMywxNS4zSDE0MkMxNDEsMjM5LjgsODAuOSwxODAuNyw3LjEsMTgwLjZ6Ii8+CgkJPHBhdGggZmlsbD0iIzY2MDA2NiIgZD0iTTcuMSw4NC4xdjQ5LjhjOTksMC45LDE3OS40LDgwLjcsMTgwLjQsMTc5LjFoNTEuN0MyMzguMiwxODYuNiwxMzQuNSw4NC4yLDcuMSw4NC4xeiIvPgoJCTxwYXRoIGZpbGw9IiM2NjAwNjYiIGQ9Ik0zMTIuOSwyOTcuNlYxOTMuNUMyNzguMSwxMDcuMiwyMDcuMywzOC45LDExOSw3LjFIMjIuNGMtOC40LDAtMTUuMyw2LjgtMTUuMywxNS4zdjE1CgkJCWMxNTIuNiwwLjksMjc2LjYsMTI0LDI3Ny42LDI3NS42aDEzQzMwNi4xLDMxMi45LDMxMi45LDMwNi4xLDMxMi45LDI5Ny42eiIvPgoJCTxwYXRoIGZpbGw9IiM2NjAwNjYiIGQ9Ik0yNzIuNiw0OS44YzE0LjUsMTQuNCwyOC42LDMxLjcsNDAuNCw0Ny44VjIyLjRjMC04LjQtNi44LTE1LjMtMTUuMy0xNS4zaC03Ny4zCgkJCUMyMzguNCwxOS43LDI1Ni42LDMzLjksMjcyLjYsNDkuOHoiLz4KCTwvZz4KPC9nPgo8L3N2Zz4K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "MQTT 5"
    camel.apache.org/kamelet.namespace: "Messaging"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "MQTT 5 Source"
    description: Allows receiving messages from any endpoint that supports the MQTT v5 protocol, such as a message broker.
    required:
    - topic
    - brokerUrl
    type: object
    properties:
      topic:
        title: Topic
        description: The topic to subscribe to
        type: string
        example: "mytopic"
      brokerUrl:
        title: Broker URL
        description: The URL of the broker where to establish the connection
        type: string
        example: "tcp://mosquitto:1883"
      clientId:
        title: Client ID
        description: The client ID to use when connecting to the resource
        type: string
        default: "mqtt-source"
      username:
        title: Username
        description: Username to use when connecting to the MQTT v5 compliant broker
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: Password to use when connecting to the MQTT v5 compliant broker
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  dependencies:
    - "camel:paho-mqtt5"
    - "camel:kamelet"
  template:
    from:
      uri: paho-mqtt5:{{topic}}
      parameters:
        brokerUrl: "{{brokerUrl}}"
        clientId: "{{clientId}}"
        userName: "{{?username}}"
        password: "{{?password}}"
      steps:
      - to: kamelet:sink
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: ms-exchange-online-imap-oauth-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjQgOCA1NSA0OCI+PHRpdGxlPkV4Y2hhbmdlXzY0eDwvdGl0bGU+PHBhdGggZD0iTTU1LjUwOTc3LDhoLTEyLjIwN0EzLjQ4ODM1LDMuNDg4MzUsMCwwLDAsNDAuODM1LDkuMDIyNDZMMTIuMDIyNDYsMzcuODM1QTMuNDg4MzUsMy40ODgzNSwwLDAsMCwxMSw0MC4zMDI3M3YxMi4yMDdBMy40OTAwNiwzLjQ5MDA2LDAsMCwwLDE0LjQ5MDIzLDU2aDEyLjIwN0EzLjQ4ODM1LDMuNDg4MzUsMCwwLDAsMjkuMTY1LDU0Ljk3NzU0TDU3Ljk3OCwyNi4xNjVBMy40ODk5NCwzLjQ4OTk0LDAsMCwwLDU5LDIzLjY5NzI3di0xMi4yMDdBMy40OTAwNywzLjQ5MDA3LDAsMCwwLDU1LjUwOTc3LDhaIiBmaWxsPSIjMjhhOGVhIi8+PHBhdGggZD0iTTU1LjUxLDU2SDQzLjMwMjc1YTMuNDksMy40OSwwLDAsMS0yLjQ2NzgtMS4wMjIyTDM1LDQ5LjE0Mjg2VjM4LjI0QTYuMjQsNi4yNCwwLDAsMSw0MS4yNCwzMkg1Mi4xNDI4Nkw1Ny45Nzc4LDM3LjgzNUEzLjQ5LDMuNDksMCwwLDEsNTksNDAuMzAyNzVWNTIuNTFBMy40OSwzLjQ5LDAsMCwxLDU1LjUxLDU2WiIgZmlsbD0iIzAwNzhkNCIvPjxwYXRoIGQ9Ik0xNC40OSw4SDI2LjY5NzI1YTMuNDksMy40OSwwLDAsMSwyLjQ2NzgsMS4wMjIyTDM1LDE0Ljg1NzE0VjI1Ljc2QTYuMjQsNi4yNCwwLDAsMSwyOC43NiwzMkgxNy44NTcxNEwxMi4wMjIyLDI2LjE2NTA1QTMuNDksMy40OSwwLDAsMSwxMSwyMy42OTcyNVYxMS40OUEzLjQ5LDMuNDksMCwwLDEsMTQuNDksOFoiIGZpbGw9IiM1MGQ5ZmYiLz48cGF0aCBkPSJNMzMsMjAuMzMwMDhWNDYuNjY5OTJhMS43MzQ0NCwxLjczNDQ0LDAsMCwxLS4wNC4zOTk5QTIuMzEzNzgsMi4zMTM3OCwwLDAsMSwzMC42Njk5Miw0OUgxMVYxOEgzMC42Njk5MkEyLjMyNiwyLjMyNiwwLDAsMSwzMywyMC4zMzAwOFoiIG9wYWNpdHk9IjAuMiIvPjxwYXRoIGQ9Ik0zNCwyMC4zMzAwOFY0NC42Njk5MkEzLjM2MTcxLDMuMzYxNzEsMCwwLDEsMzAuNjY5OTIsNDhIMTFWMTdIMzAuNjY5OTJBMy4zNDE3NywzLjM0MTc3LDAsMCwxLDM0LDIwLjMzMDA4WiIgb3BhY2l0eT0iMC4xIi8+PHBhdGggZD0iTTMzLDIwLjMzMDA4VjQ0LjY2OTkyQTIuMzI2LDIuMzI2LDAsMCwxLDMwLjY2OTkyLDQ3SDExVjE4SDMwLjY2OTkyQTIuMzI2LDIuMzI2LDAsMCwxLDMzLDIwLjMzMDA4WiIgb3BhY2l0eT0iMC4yIi8+PHBhdGggZD0iTTMyLDIwLjMzMDA4VjQ0LjY2OTkyQTIuMzI2LDIuMzI2LDAsMCwxLDI5LjY2OTkyLDQ3SDExVjE4SDI5LjY2OTkyQTIuMzI2LDIuMzI2LDAsMCwxLDMyLDIwLjMzMDA4WiIgb3BhY2l0eT0iMC4xIi8+PHJlY3QgeD0iNC4wMDAyMiIgeT0iMTgiIHdpZHRoPSIyOCIgaGVpZ2h0PSIyOCIgcng9IjIuMzMzMzMiIGZpbGw9IiMwMDc4ZDQiLz48cGF0aCBkPSJNMjIuNTg1MzMsMjYuODgxMjFoLTYuNTQ3MlYzMC43MDk4aDYuMTQ1MzV2Mi40NTM3NUgxNi4wMzgxM1YzNy4xNDAxaDYuODk2MDl2Mi40NDM0aC05Ljg2OFYyNC40MTY1aDkuNTE5MVoiIGZpbGw9IiNmZmYiLz48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Mail"
    camel.apache.org/kamelet.namespace: "Mail"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Microsoft Exchange IMAP OAuth2 Source"
    description: Receive unread emails from an IMAP Microsoft Exchange mail server, marking them as read once they are received.
    required:
      - tenantId
      - clientId
      - clientSecret
      - username
    type: object
    properties:
      connectionHost:
        title: Connection Host
        description: The IMAP server host.
        type: string
        default: outlook.office365.com
      connectionPort:
        title: Connection Port
        description: The IMAP server port.
        type: string
        default: 993
      tenantId:
        title: Tenant ID
        description: Azure Active Directory Tenant ID.
        type: string
      clientId:
        title: Client ID
        description: Azure Active Directory Application Client ID.
        type: string
        x-descriptors:
          - urn:camel:group:credentials
      clientSecret:
        title: Client Secret
        description: The Azure Active Directory Application Client Secret.
        type: string
        format: password
        x-descriptors:
          - urn:camel:group:credentials
      username:
        title: Username
        description: The username to access the mail box.
        type: string
        example: arthur@mycompany.com
        x-descriptors:
          - urn:camel:group:credentials
      fetchSize:
        title: Fetch Size
        description: The number of messages fetched for each poll (-1 for no limits).
        type: integer
        default: 10
      delay:
        title: Delay
        description: The delay between fetches in milliseconds.
        type: integer
        default: 60000
  dependencies:
    - "camel:core"
    - "camel:kamelet"
    - "camel:mail-microsoft-oauth"
    - "camel:mail"
  template:
    beans:
      - name: exchangeAuthenticator
        type: "#class:org.apache.camel.component.mail.microsoft.authenticator.MicrosoftExchangeOnlineOAuth2MailAuthenticator({{tenantId}}, {{clientId}}, {{clientSecret}}, {{username}})"
    from:
      uri: "imaps:{{connectionHost}}:{{connectionPort}}"
      parameters:
        mail.imaps.auth.mechanisms: "XOAUTH2"
        username: "{{username}}"
        fetchSize: "{{fetchSize}}"
        delay: "{{delay}}"
        authenticator: "#bean:{{exchangeAuthenticator}}"
      steps:
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: mustache-template-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Mustache Template Action"
    description: Apply a Mustache Template.
    required:
      - template
    type: object
    properties:
      template:
        title: Template
        description: The inline template.
        type: string
        example: "file:////template.mustache"
        pattern: "^(http|https|file|classpath|ref|bean)://.*"
  dependencies:
  - "camel:mustache"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "mustache:"
          parameters:
            resourceUri: "{{template}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: mvel-template-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Mvel Template Action"
    description: Apply a Mvel Template.
    required:
      - template
    type: object
    properties:
      template:
        title: Template
        description: The inline template
        type: string
        example: "file:////template.mvel"
        pattern: "^(http|https|file|classpath|ref|bean)://.*"
  dependencies:
  - "camel:mvel"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "mvel:"
          parameters:
            resourceUri: "{{template}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: mysql-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 6200 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "SQL"
    camel.apache.org/kamelet.namespace: "Database"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "MySQL Sink"
    description: Send data to a MySQL Database. This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters.
    required:
      - serverName
      - username
      - password
      - query
      - databaseName
    type: object
    properties:
      serverName:
        title: Server Name
        description: The server name for the data source.
        type: string
        example: localhost
      serverPort:
        title: Server Port
        description: The server port for the data source.
        type: string
        default: 3306
      username:
        title: Username
        description: The username to access a secured MySQL Database.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access a secured MySQL Database.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      query:
        title: Query
        description: The query to execute against the MySQL Database.
        type: string
        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
      databaseName:
        title: Database Name
        description: The name of the MySQL Database.
        type: string
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:sql"
  - "mvn:org.apache.commons:commons-dbcp2:2.13.0"
  template:
    beans:
      - name: local-sql-mysql-sink
        type: "#class:org.apache.camel.component.sql.SqlComponent"
        properties:
          autowiredEnabled: "false"
      - name: dsBean
        type: "#class:org.apache.commons.dbcp2.BasicDataSource"
        properties:
          username: '{{username}}'
          password: '{{password}}'
          url: 'jdbc:mysql://{{serverName}}:{{serverPort}}/{{databaseName}}'
          driverClassName: 'com.mysql.cj.jdbc.Driver'
    from:
      uri: "kamelet:source"
      steps:
      - unmarshal:
          json: 
            library: Jackson
      - to: 
          uri: "{{local-sql-mysql-sink}}:{{query}}"
          parameters:
            dataSource: "#bean:{{dsBean}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: mysql-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 6200 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "SQL"
    camel.apache.org/kamelet.namespace: "Database"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "MySQL Source"
    description: Query data from a MySQL Database.
    required:
      - serverName
      - username
      - password
      - query
      - databaseName
    type: object
    properties:
      serverName:
        title: Server Name
        description: The server name for the data source.
        type: string
        example: localhost
      serverPort:
        title: Server Port
        description: The server port for the data source.
        type: string
        default: 3306
      username:
        title: Username
        description: The username to access a secured MySQL Database.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access a secured MySQL Database.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      query:
        title: Query
        description: The query to execute against the MySQL Database.
        type: string
        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
      databaseName:
        title: Database Name
        description: The name of the MySQL Database.
        type: string
      consumedQuery:
        title: Consumed Query
        description: A query to run on a tuple consumed.
        type: string
        example: 'DELETE FROM accounts where user_id = :#user_id'
      delay:
        title: Delay
        description: The number of milliseconds before the next poll
        type: integer
        default: 500
  types:
    out:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:sql"
  - "mvn:org.apache.commons:commons-dbcp2:2.13.0"
  template:
    beans:
      - name: local-sql-mysql-source
        type: "#class:org.apache.camel.component.sql.SqlComponent"
        properties:
          autowiredEnabled: "false"
      - name: dsBean
        type: "#class:org.apache.commons.dbcp2.BasicDataSource"
        properties:
          username: '{{username}}'
          password: '{{password}}'
          url: 'jdbc:mysql://{{serverName}}:{{serverPort}}/{{databaseName}}'
          driverClassName: 'com.mysql.cj.jdbc.Driver'
    from:
      uri: "{{local-sql-mysql-source}}:{{query}}"
      parameters:
        dataSource: "#bean:{{dsBean}}"
        onConsume: "{{?consumedQuery}}"
        delay: "{{delay}}"
      steps:
      - marshal:
          json: 
            library: Jackson
      - to: "kamelet:sink"

---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: nats-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 5648 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "NATS"
    camel.apache.org/kamelet.namespace: "Messaging"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "NATS Sink"
    description: Send data to NATS topics.
    required:
      - topic
      - servers
    type: object
    properties:
      topic:
        title: Topic
        description: NATS Topic name
        type: string
      servers:
        title: Servers
        description: Comma separated list of NATS Servers
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      jetstreamEnabled:
        title: Jetstream Enabled
        description: Sets whether to enable JetStream support for this endpoint.
        type: boolean
        default: false
      jetstreamName:
        title: Jetstream Stream Name
        description: Sets the name of the JetStream stream to use.
        type: string
      jetstreamAsync:
        title: Jetstream Async Enabled
        description: Sets whether to operate JetStream requests asynchronously.
        type: boolean
        default: true
  dependencies:
  - "camel:nats"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "nats:{{topic}}"
          parameters:
            servers: "{{servers}}"
            jetstreamEnabled: "{{?jetstreamEnabled}}"
            jetstreamName: "{{?jetstreamName}}"
            jetstreamAsync: "{{?jetstreamAsync}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: nats-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 5648 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "NATS"
    camel.apache.org/kamelet.namespace: "Messaging"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "NATS Source"
    description: Receive data from NATS topics.
    required:
      - topic
      - servers
    type: object
    properties:
      topic:
        title: Topic
        description: NATS Topic name
        type: string
      servers:
        title: Servers
        description: Comma separated list of NATS Servers
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      jetstreamEnabled:
        title: Jetstream Enabled
        description: Sets whether to enable JetStream support for this endpoint.
        type: boolean
        default: false
      jetstreamName:
        title: Jetstream Stream Name
        description: Sets the name of the JetStream stream to use.
        type: string
      jetstreamAsync:
        title: Jetstream Async Enabled
        description: Sets whether to operate JetStream requests asynchronously.
        type: boolean
        default: true
  types:
    out:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:nats"
  - "camel:kamelet"
  template:
    from:
      uri: "nats:{{topic}}"
      parameters:
        servers: "{{servers}}"
        jetstreamEnabled: "{{?jetstreamEnabled}}"
        jetstreamName: "{{?jetstreamName}}"
        jetstreamAsync: "{{?jetstreamAsync}}"
      steps:
      - marshal:
          json: {}
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: nominatim-geocode-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 114280 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Geospatial"
    camel.apache.org/kamelet.namespace: "Geo"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Nominatim GeoCode Action"
    description: Find locations on Earth by name and address.
    required:
      - serverUrl
    type: object
    properties:
      serverUrl:
        title: "Server URL"
        description: "Url of the Nominatim server."
        example: "https://nominatim.openstreetmap.org"
        type: string
  types:
    in:
      mediaType: text/plain
    out:
      mediaType: application/json
      schema:
        type: object
        required: ["place_id"]
        properties:
          place_id:
            type: numeric
          licence:
            type: string
          osm_type:
            type: string
          osm_id:
            type: numeric
          boundingbox:
            type: array
          lat:
            type: numeric
          lon:
            type: numeric
          display_name:
            type: string
          place_rank:
            type: numeric
          category:
            type: string
          address:
            type: object
  dependencies:
    - "camel:core"
    - "camel:jackson"
    - "camel:geocoder"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - setHeader:
          name: CamelGeoCoderAddress
          simple: "${body}"
      - to: 
          uri: "geocoder:address:toOverride"
          parameters:
            type: "NOMINATIM"
            serverUrl: "RAW({{serverUrl}})"
      - marshal:
          json: {}



---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: ogcapi-features-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgd2lkdGg9IjIxMDAiCiAgIGhlaWdodD0iMjEwMCIKICAgdmlld0JveD0iMCAwIDIxMDAgMjEwMCIKICAgdmVyc2lvbj0iMS4xIgogICB4bWw6c3BhY2U9InByZXNlcnZlIgogICBzdHlsZT0iY2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjIiCiAgIGlkPSJzdmcxMTEwIgogICBzb2RpcG9kaTpkb2NuYW1lPSJPcGVuX0dlb3NwYXRpYWxfQ29uc29ydGl1bV9sb2dvLnN2ZyIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMS4xLjIgKDBhMDBjZjUzMzksIDIwMjItMDItMDQpIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnNlcmlmPSJodHRwOi8vd3d3LnNlcmlmLmNvbS8iPjxkZWZzCiAgIGlkPSJkZWZzMTExNCIgLz48c29kaXBvZGk6bmFtZWR2aWV3CiAgIGlkPSJuYW1lZHZpZXcxMTEyIgogICBwYWdlY29sb3I9IiNmZmZmZmYiCiAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICBib3JkZXJvcGFjaXR5PSIxLjAiCiAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCiAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCiAgIGlua3NjYXBlOnBhZ2VjaGVja2VyYm9hcmQ9IjAiCiAgIHNob3dncmlkPSJmYWxzZSIKICAgaW5rc2NhcGU6em9vbT0iMC4xMjgzNzUiCiAgIGlua3NjYXBlOmN4PSIxNDkxLjcyMzUiCiAgIGlua3NjYXBlOmN5PSIxNDA5LjkzMTgiCiAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTkyMCIKICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iOTgzIgogICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKICAgaW5rc2NhcGU6d2luZG93LXk9IjAiCiAgIGlua3NjYXBlOndpbmRvdy1tYXhpbWl6ZWQ9IjEiCiAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9Ik9HQy0yRC1Mb2NrdXAtdy0tVHJhZGVtYXJrIiAvPgogICAgPGcKICAgaWQ9Ik9HQy0yRC1Mb2NrdXAtdy0tVHJhZGVtYXJrIgogICBzZXJpZjppZD0iT0dDIDJEIExvY2t1cCB3LyBUcmFkZW1hcmsiCiAgIHRyYW5zZm9ybT0ibWF0cml4KDIwLjA2NTEsMCwwLDIwLjA2NTEsLTE0MzUuMDksLTEwMjQuMTQpIj4KICAgICAgICAKICAgICAgICA8ZwogICBpZD0iQ3ViZSIKICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTM1LjkyNzA1NiwtNDkuNDQ2NTI0KSI+CiAgICAgICAgICAgIDxnCiAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE1Ni4yMTcsMTYxLjU2OSkiCiAgIGlkPSJnMTA5OCI+CiAgICAgICAgICAgICAgICA8cGF0aAogICBkPSJNIDAsMTQuNjUzIDAuMDAxLDQzLjk4MyAtNDIuMzEyLDE5LjU1NCAtNDIuMzEzLC0yOS4zMyAwLC00LjkwMSB2IDkuNzc2IGwgLTguNDQ2LC00Ljg3NCAtNC4yMzMsLTIuNDQ1IC0yMS4xNjcsLTEyLjIyMSB2IDI5LjMzIGwgMjUuNCwxNC42NjYgdiAtOS43NzcgbCAtMTIuNywtNy4zMzMgMC4wMDEsLTQuODg4IGggLTAuMDAxIFYgMi40NDUgWiIKICAgc3R5bGU9ImZpbGw6IzAwYjFmZjtmaWxsLXJ1bGU6bm9uemVybyIKICAgaWQ9InBhdGgxMDk2IiAvPgogICAgICAgICAgICA8L2c+CiAgICAgICAgICAgIDxnCiAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MC40NTUsMTEwLjI2MSkiCiAgIGlkPSJnMTEwMiI+CiAgICAgICAgICAgICAgICA8cGF0aAogICBkPSJNIDAsMjkuMzMgLTI1LjQwMywxNC42NjUgMCwtMC4wMDEgMjUuMzk5LDE0LjY2NSAyMS4xNjcsMTcuMTA5IFogTSAtMC4wMDEsLTkuNzc3IC00Mi4zMzYsMTQuNjY1IC0wLjAwMSwzOS4xMDcgNDIuMzMzLDE0LjY2NSBaIgogICBzdHlsZT0iZmlsbDojMDBiMWZmO2ZpbGwtcnVsZTpub256ZXJvIgogICBpZD0icGF0aDExMDAiIC8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICAgICAgPGcKICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTgxLjY2LDE4MS4yMzkpIgogICBpZD0iZzExMDYiPgogICAgICAgICAgICAgICAgPHBhdGgKICAgZD0ibSAwLC0yNC42ODggOC40NjgsLTQuODg4IDguNDY2LC00Ljg4OSAxMGUtNCw5Ljc3NyA4LjQ0NCwtNC44NzUgdiAtMTkuNDQ0IGwgLTQyLjMxMiwyNC40MjkgdiA5LjY2NiBoIDAuMDAxIGwgLTAuMDAxLDIuOTE4IDAuMDAxLDM2LjE5IC0wLjAyMiwtMC4wMTMgdiAwLjEzNiBMIDI1LjM3OSwtMC4xMjMgdiAtMTkuNjY1IGwgLTguNDQ0LDQuODc3IHYgOS43NzYgTCAtOC40NjYsOS41MyAtOC40NjUsLTE5Ljc5OSBaIgogICBzdHlsZT0iZmlsbDojMDBiMWZmO2ZpbGwtcnVsZTpub256ZXJvIgogICBpZD0icGF0aDExMDQiIC8+CiAgICAgICAgICAgIDwvZz4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPgo="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Geospatial"
    camel.apache.org/kamelet.namespace: "Geo"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "OGC Api Feature Get Item Action"
    description: Returns the items of the collection provided of an OGC API Features server.
    required:
      - url
      - collection
    type: object
    properties:
      url:
        title: URL
        description: The URL to fetch for data
        type: string
        example: "https://emotional.byteroad.net"
        pattern: "^(http|https)://.*"
      collection:
        title: "Collection"
        description: "Name of the collection we want to extract items from."
        type: string
      bbox:
        title: "Bounding Box"
        description: "Bounding Box of the items we want to retrieve."
        example: "160.6,-55.95,-170,-25.89"
        default: "-180,-90,180,90"
        type: string
      limit:
        title: "Limit"
        description: "Maximum number of items to retrieve. Must be a number between 1 and 10 000."
        type: integer
        default: 10
      split:
        title: "Split by Feature"
        description: "When true, instead of returning the full geojson, split the message into each feature."
        type: boolean
        default: false
      query:
        title: "Query"
        description: "Separated list by `&` of properties we want to query."
        example: "property1=1&property2=dos"
        default: ""
        type: string
  types:
    in:
      mediaType: text/plain
    out:
      mediaType: application/json
  dependencies:
    - "camel:core"
    - "camel:http"
    - "camel:kamelet"
    - "camel:jsonpath"
    - "camel:jackson"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - setHeader:
          name: "Accept"
          constant: "application/geo+json"
      - setHeader:
          name: "CamelHttpQuery"
          simple: "limit={{limit}}&bbox={{bbox}}&{{?query}}&${body}"
      - setBody:
          simple: ""
      - to: 
          uri: "{{url}}/collections/{{collection}}/items"
      - removeHeader:
          name: "Accept"
      - removeHeader:
          name: "CamelHttpQuery"
      - convertBodyTo:
          type: "java.lang.String"
      - choice:
          when:
          - simple: "{{split}}"
            steps:
            - split:
                jsonpath: "$.features[*]"
                steps:
                  - marshal:
                      json: {}
                  - to: "kamelet:sink"
          otherwise:
            steps:
            - to: "kamelet:sink"



---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: opensearch-index-sink
  labels:
    camel.apache.org/kamelet.type: "sink"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.group: "OpenSearch"
    camel.apache.org/kamelet.namespace: "Search"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 8868 characters]"
spec:
  definition:
    title: "OpenSearch Index Sink"
    description: Stores JSON-formatted data into Opensearch.
    required:
      - clusterName
      - hostAddresses
    type: object
    properties:
      user:
        title: Username
        description: The username to connect to OpenSearch.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to connect to OpenSearch.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      enableSSL:
        title: Enable SSL
        description: Specifies to connect by using SSL.
        type: boolean
        default: false
      hostAddresses:
        title: Host Addresses
        description: A comma-separated list of remote transport addresses in `ip:port format`.
        type: string
        example: quickstart-es-http:9200
      clusterName:
        title: OpenSearch Cluster Name
        description: The name of the OpenSearch cluster.
        type: string
        example: quickstart
      indexName:
        title: Index in OpenSearch
        description: The name of the OpenSearch index.
        type: string
        example: data
      certificate:
        title: Certificate
        description: The Certificate for accessing the OpenSearch cluster. You must encode this value in base64.
        type: string
  types:
    out:
      mediaType: text/plain
    in:
      mediaType: application/json
  dependencies:
    - "camel:core"
    - "camel:jackson"
    - "camel:kamelet"
    - "camel:opensearch"
    - "camel:gson"
    - "camel:bean"
  template:
    beans:
      - name: local-opensearch
        type: "#class:org.apache.camel.component.opensearch.OpensearchComponent"
        properties:
            user: "{{?user}}"
            password: "{{?password}}"
    from:
      uri: kamelet:source
      steps:
      - choice:
          when:
          - simple: "${header[indexId]}"
            steps:
            - setHeader:
                name: "indexId"
                simple: "${header[indexId]}"
          - simple: "${header[ce-indexid]}"
            steps:
            - setHeader:
                name: "indexId"
                simple: "${header[ce-indexid]}"
      - choice:
          when:
          - simple: "${header[indexName]}"
            steps:
            - setHeader:
                name: "indexName"
                simple: "${header[indexName]}"
          - simple: "${header[ce-indexname]}"
            steps:
            - setHeader:
                name: "indexName"
                simple: "${header[ce-indexname]}"
      - unmarshal:
          json: {}
      - to:
          uri: "{{local-opensearch}}:{{clusterName}}"
          parameters:
            operation: "INDEX"
            hostAddresses: "{{hostAddresses}}"
            enableSSL: "{{enableSSL}}"
            indexName: "{{?indexName}}"
            certificatePath: "base64:{{?certificate}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: opensearch-search-source
  labels:
    camel.apache.org/kamelet.type: "source"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.group: "OpenSearch"
    camel.apache.org/kamelet.namespace: "Search"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 8868 characters]"
spec:
  definition:
    title: "OpenSearch Search Source"
    description: Search data on OpenSearch.
    required:
      - query
      - clusterName
      - indexName
      - hostAddresses
    type: object
    properties:
      period:
        title: Period
        description: The time interval between two searches
        type: integer
        default: 1000
      query:
        title: Query
        description: The query we want to use to search on OpenSearch.
        type: string
      user:
        title: Username
        description: Username to connect to OpenSearch.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: Password to connect to OpenSearch.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      enableSSL:
        title: Enable SSL
        description: Do we want to connect using SSL?
        type: boolean
        default: false
      hostAddresses:
        title: Host Addresses
        description: Comma separated list with ip:port formatted remote transport addresses to use.
        type: string
      indexName:
        title: Index in OpenSearch
        description: The name of the index to act against.
        type: string
      clusterName:
        title: OpenSearch Cluster Name
        description: The name of the cluster.
        type: string
      certificate:
        title: Certificate
        description: The Certificate for accessing the Opensearch cluster. You must encode this value in base64.
        type: string
  types:
    out:
      mediaType: application/json
  dependencies:
      - "camel:core"
      - "camel:kamelet"
      - "camel:timer"
      - "camel:opensearch"
      - "camel:gson"
  template:
    beans:
      - name: local-opensearch
        type: "#class:org.apache.camel.component.opensearch.OpensearchComponent"
        properties:
            user: "{{?user}}"
            password: "{{?password}}"
    from:
      uri: timer:tick
      parameters:
        period: "{{period}}"
      steps:
        - setBody:
            constant: "{{query?nested=false}}"
        - to:
            uri: "{{local-opensearch}}:{{clusterName}}"
            parameters:
              operation: "SEARCH"
              indexName: "{{indexName}}"
              hostAddresses: "{{hostAddresses}}"
              enableSSL: "{{enableSSL}}"
              certificatePath: "base64:{{?certificate}}"
        - marshal:
            json:
              library: Gson
        - to: kamelet:sink
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: oracle-database-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MTIgNTEyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnPgoJPHBhdGggZD0iTTI1NiwzMUMxMzEuNywzMSwzMSw2Mi41LDMxLDEwMS4zdjU2LjJjMCwzOC44LDEwMC43LDcwLjMsMjI1LDcwLjNzMjI1LTMxLjUsMjI1LTcwLjN2LTU2LjJDNDgxLDYyLjUsMzgwLjMsMzEsMjU2LDMxeiIvPgoJPHBhdGggZD0iTTI1NiwyNzAuMWMtMTI0LjMsMC0yMjUtMzEuNS0yMjUtNzAuM3Y4NC40YzAsMzguOCwxMDAuNyw3MC4zLDIyNSw3MC4zczIyNS0zMS41LDIyNS03MC4zdi04NC40CgkJQzQ4MSwyMzguNiwzODAuMywyNzAuMSwyNTYsMjcwLjF6Ii8+Cgk8cGF0aCBkPSJNMjU2LDM5Ni42Yy0xMjQuMywwLTIyNS0zMS41LTIyNS03MC4zdjg0LjRjMCwzOC44LDEwMC43LDcwLjMsMjI1LDcwLjNzMjI1LTMxLjUsMjI1LTcwLjN2LTg0LjQKCQlDNDgxLDM2NS4yLDM4MC4zLDM5Ni42LDI1NiwzOTYuNnoiLz4KPC9nPgo8L3N2Zz4K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "SQL"
    camel.apache.org/kamelet.namespace: "Database"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Oracle Database Sink"
    description: Send data to an Oracle Database. This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters.
    required:
      - serverName
      - username
      - password
      - query
      - databaseName
    type: object
    properties:
      serverName:
        title: Server Name
        description: The server name for the data source.
        type: string
        example: localhost
      serverPort:
        title: Server Port
        description: The server port for the data source.
        type: string
        default: 1521
      username:
        title: Username
        description: The username to access a secured Oracle Database.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access a secured Oracle Database.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      query:
        title: Query
        description: The query to execute against the Oracle Database.
        type: string
        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
      databaseName:
        title: Database Name
        description: The name of the Oracle Database.
        type: string
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:sql"
  - "mvn:org.apache.commons:commons-dbcp2:2.13.0"
  template:
    beans:
      - name: local-sql-oracle-sink
        type: "#class:org.apache.camel.component.sql.SqlComponent"
        properties:
          autowiredEnabled: "false"
      - name: dsBean
        type: "#class:org.apache.commons.dbcp2.BasicDataSource"
        properties:
          username: '{{username}}'
          password: '{{password}}'
          url: 'jdbc:oracle:thin:@{{serverName}}:{{serverPort}}/{{databaseName}}'
          driverClassName: 'oracle.jdbc.driver.OracleDriver'
    from:
      uri: "kamelet:source"
      steps:
      - unmarshal:
          json: 
            library: Jackson
      - to: 
          uri: "{{local-sql-oracle-sink}}:{{query}}"
          parameters:
            dataSource: "#bean:{{dsBean}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: oracle-database-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MTIgNTEyOyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnPgoJPHBhdGggZD0iTTI1NiwzMUMxMzEuNywzMSwzMSw2Mi41LDMxLDEwMS4zdjU2LjJjMCwzOC44LDEwMC43LDcwLjMsMjI1LDcwLjNzMjI1LTMxLjUsMjI1LTcwLjN2LTU2LjJDNDgxLDYyLjUsMzgwLjMsMzEsMjU2LDMxeiIvPgoJPHBhdGggZD0iTTI1NiwyNzAuMWMtMTI0LjMsMC0yMjUtMzEuNS0yMjUtNzAuM3Y4NC40YzAsMzguOCwxMDAuNyw3MC4zLDIyNSw3MC4zczIyNS0zMS41LDIyNS03MC4zdi04NC40CgkJQzQ4MSwyMzguNiwzODAuMywyNzAuMSwyNTYsMjcwLjF6Ii8+Cgk8cGF0aCBkPSJNMjU2LDM5Ni42Yy0xMjQuMywwLTIyNS0zMS41LTIyNS03MC4zdjg0LjRjMCwzOC44LDEwMC43LDcwLjMsMjI1LDcwLjNzMjI1LTMxLjUsMjI1LTcwLjN2LTg0LjQKCQlDNDgxLDM2NS4yLDM4MC4zLDM5Ni42LDI1NiwzOTYuNnoiLz4KPC9nPgo8L3N2Zz4K"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "SQL"
    camel.apache.org/kamelet.namespace: "Database"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Oracle Database Source"
    description: Query data from an Oracle Database.
    required:
      - serverName
      - username
      - password
      - query
      - databaseName
    type: object
    properties:
      serverName:
        title: Server Name
        description: The server name for the data source.
        type: string
        example: localhost
      serverPort:
        title: Server Port
        description: The server port for the data source.
        type: string
        default: 1521
      username:
        title: Username
        description: The username to access a secured Oracle Database.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access a secured Oracle Database.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      query:
        title: Query
        description: The query to execute against the Oracle Database.
        type: string
        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
      databaseName:
        title: Database Name
        description: The name of the Oracle Database.
        type: string
      consumedQuery:
        title: Consumed Query
        description: A query to run on a tuple consumed.
        type: string
        example: 'DELETE FROM accounts where user_id = :#user_id'
  types:
    out:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:sql"
  - "mvn:org.apache.commons:commons-dbcp2:2.13.0"
  template:
    beans:
      - name: local-sql-oracle-source
        type: "#class:org.apache.camel.component.sql.SqlComponent"
        properties:
          autowiredEnabled: "false"
      - name: dsBean
        type: "#class:org.apache.commons.dbcp2.BasicDataSource"
        properties:
          username: '{{username}}'
          password: '{{password}}'
          url: 'jdbc:oracle:thin:@{{serverName}}:{{serverPort}}/{{databaseName}}'
          driverClassName: 'oracle.jdbc.driver.OracleDriver'
    from:
      uri: "{{local-sql-oracle-source}}:{{query}}"
      parameters:
        dataSource: "#bean:{{dsBean}}"
        onConsume: "{{?consumedQuery}}"
      steps:
      - marshal:
          json: 
            library: Jackson
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: pdf-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 6012 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "PDF"
    camel.apache.org/kamelet.namespace: "Transformation"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "PDF Action"
    description: Create a PDF.
    required:
      - font
      - fontSize
      - pageSize
    type: object
    properties:
      font:
        title: Font
        description: The font to use while generating the PDF. One of Courier, Courier-Bold, Courier-Oblique, Courier-BoldOblique, Helvetica, Helvetica-Bold, Helvetica-Oblique, Helvetica-BoldOblique, Times-Roman, Times-Bold, Times-Italic, Times-BoldItalic, Symbol, ZapfDingbats
        type: string
        default: Helvetica
      fontSize:
        title: Font Size
        description: The Font size to use while generating the PDF
        type: string
        default: 14.0
      pageSize:
        title: Page Size
        description: The Page size to use while generating the PDF. One of LETTER, LEGAL, A0, A1, A2, A3, A4, A5, A6
        type: string
        default: A4
  dependencies:
  - "camel:pdf"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "pdf://create"
          parameters:
            font: "{{font}}"
            fontSize: "{{fontSize}}"
            pageSize: "{{pageSize}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: postgresql-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 8032 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "SQL"
    camel.apache.org/kamelet.namespace: "Database"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "PostgreSQL Sink"
    description: Send data to a PostgreSQL Database. This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters.
    required:
      - serverName
      - username
      - password
      - query
      - databaseName
    type: object
    properties:
      serverName:
        title: Server Name
        description: The server name for the data source.
        type: string
        example: localhost
      serverPort:
        title: Server Port
        description: The server port for the data source.
        type: string
        default: 5432
      username:
        title: Username
        description: The username to access a secured PostgreSQL Database.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access a secured PostgreSQL Database.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      query:
        title: Query
        description: The query to execute against the PostgreSQL Database.
        type: string
        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
      databaseName:
        title: Database Name
        description: The name of the PostgreSQL Database.
        type: string
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:sql"
  - "mvn:org.postgresql:postgresql:42.7.7"
  - "mvn:org.apache.commons:commons-dbcp2:2.13.0"
  template:
    beans:
      - name: local-sql-postgres-sink
        type: "#class:org.apache.camel.component.sql.SqlComponent"
        properties:
          autowiredEnabled: "false"
      - name: dsBean
        type: "#class:org.apache.commons.dbcp2.BasicDataSource"
        properties:
          username: '{{username}}'
          password: '{{password}}'
          url: 'jdbc:postgresql://{{serverName}}:{{serverPort}}/{{databaseName}}'
          driverClassName: 'org.postgresql.Driver'
    from:
      uri: "kamelet:source"
      steps:
      - unmarshal:
          json: 
            library: Jackson
      - to: 
          uri: "{{local-sql-postgres-sink}}:{{query}}"
          parameters:
            dataSource: "#bean:{{dsBean}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: postgresql-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 8032 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "SQL"
    camel.apache.org/kamelet.namespace: "Database"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "PostgreSQL Source"
    description: Query data from a PostgreSQL Database.
    required:
      - serverName
      - username
      - password
      - query
      - databaseName
    type: object
    properties:
      serverName:
        title: Server Name
        description: The server name for the data source.
        type: string
        example: localhost
      serverPort:
        title: Server Port
        description: The server port for the data source.
        type: string
        default: 5432
      username:
        title: Username
        description: The username to access a secured PostgreSQL Database.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access a secured PostgreSQL Database.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      query:
        title: Query
        description: The query to execute against the PostgreSQL Database.
        type: string
        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
      databaseName:
        title: Database Name
        description: The name of the PostgreSQL Database.
        type: string
      consumedQuery:
        title: Consumed Query
        description: A query to run on a tuple consumed.
        type: string
        example: 'DELETE FROM accounts where user_id = :#user_id'
      delay:
        title: Delay
        description: The number of milliseconds before the next poll
        type: integer
        default: 500
  types:
    out:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:sql"
  - "mvn:org.postgresql:postgresql:42.7.7"
  - "mvn:org.apache.commons:commons-dbcp2:2.13.0"
  template:
    beans:
      - name: local-sql-postgres-source
        type: "#class:org.apache.camel.component.sql.SqlComponent"
        properties:
          autowiredEnabled: "false"
      - name: dsBean
        type: "#class:org.apache.commons.dbcp2.BasicDataSource"
        properties:
          username: '{{username}}'
          password: '{{password}}'
          url: 'jdbc:postgresql://{{serverName}}:{{serverPort}}/{{databaseName}}'
          driverClassName: 'org.postgresql.Driver'
    from:
      uri: "{{local-sql-postgres-source}}:{{query}}"
      parameters:
        dataSource: "#bean:{{dsBean}}"
        onConsume: "{{?consumedQuery}}"
        delay: "{{delay}}"
      steps:
      - marshal:
          json: 
            library: Jackson
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: pqc-kem-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MjAiCmhlaWdodD0iNDIwIiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiPgo8cGF0aCBzdHJva2Utd2lkdGg9IjI2IgpkPSJNMjA5LDE1YTE5NSwxOTUgMCAxLDAgMiwweiIvPgo8cGF0aCBzdHJva2Utd2lkdGg9IjE4IgpkPSJtMjEwLDE1djM5MG0xOTUtMTk1SDE1TTU5LDkwYTI2MCwyNjAgMCAwLDAgMzAyLDAgbTAsMjQwIGEyNjAsMjYwIDAgMCwwLTMwMiwwTTE5NSwyMGEyNTAsMjUwIDAgMCwwIDAsMzgyIG0zMCwwIGEyNTAsMjUwIDAgMCwwIDAtMzgyIi8+Cjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "PQC"
    camel.apache.org/kamelet.namespace: "PQC"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "PQC Key Encapsulation/Decapsulation Action"
    description: Encapsulate or Decapsulate a secret Key with a PQC KEM algorithm.
    required:
    - keyEncapsulationAlgorithm
    - operation
    - symmetricKeyAlgorithm
    type: object
    properties:
      keyEncapsulationAlgorithm:
        title: PQC Key Encapsulation Algorithm
        description: The PQC Key Encapsulation Algorithm to be used.
        type: string
        enum: ["MLKEM","BIKE","HQC","CMCE","SABER","FRODO","NTRU","NTRULPRime"]
      operation:
        title: PQC KEM Operation
        description: The PQC KEM Operation to be performed.
        type: string
        enum: ["generateSecretKeyEncapsulation","extractSecretKeyEncapsulation","extractSecretKeyFromEncapsulation"]
      symmetricKeyAlgorithm:
        title: Symmetric Key Algorithm
        description: The Symmetric Key Algorithm to be used in KEM operations.
        type: string
        enum: ["AES","RC2","RC5","ARIA","CAMELLIA","CAST5","CAST6","CHACHA7539","DSTU7624","GOST28147","GOST3412_2015","GRAIN128","HC128","HC256","SALSA20","SEED","SM4","DESEDE"]
  dependencies:
  - "camel:http"
  - "camel:kamelet"
  - "camel:core"
  template:
    from:
      uri: kamelet:source
      steps:
      - to:
          uri: "pqc:kem"
          parameters:
            keyEncapsulationAlgorithm: "{{keyEncapsulationAlgorithm}}"
            operation: "{{operation}}"
            symmetricKeyAlgorithm: "{{symmetricKeyAlgorithm}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: pqc-signature-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MjAiCmhlaWdodD0iNDIwIiBzdHJva2U9IiMwMDAiIGZpbGw9Im5vbmUiPgo8cGF0aCBzdHJva2Utd2lkdGg9IjI2IgpkPSJNMjA5LDE1YTE5NSwxOTUgMCAxLDAgMiwweiIvPgo8cGF0aCBzdHJva2Utd2lkdGg9IjE4IgpkPSJtMjEwLDE1djM5MG0xOTUtMTk1SDE1TTU5LDkwYTI2MCwyNjAgMCAwLDAgMzAyLDAgbTAsMjQwIGEyNjAsMjYwIDAgMCwwLTMwMiwwTTE5NSwyMGEyNTAsMjUwIDAgMCwwIDAsMzgyIG0zMCwwIGEyNTAsMjUwIDAgMCwwIDAtMzgyIi8+Cjwvc3ZnPg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "PQC"
    camel.apache.org/kamelet.namespace: "PQC"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "PQC Signature Action"
    description: Sign or verify a payload with a PQC algorithm.
    required:
    - signatureAlgorithm
    - operation
    type: object
    properties:
      signatureAlgorithm:
        title: PQC Signature Algorithm
        description: The PQC Signature Algorithm to be used.
        type: string
        enum: [MLDSA","SLHDSA","LMS","XMSS","FALCON","PICNIC"]
      operation:
        title: PQC Signature Operation
        description: The PQC Signature Operation to be performed.
        type: string
        enum: ["sign","verify"]
  dependencies:
  - "camel:http"
  - "camel:kamelet"
  - "camel:core"
  template:
    from:
      uri: kamelet:source
      steps:
      - to:
          uri: "pqc:sign"
          parameters:
            signatureAlgorithm: "{{signatureAlgorithm}}"
            operation: "{{operation}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: predicate-filter-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
spec:
  definition:
    title: "Predicate Filter Action"
    description: "Filter based on a JSONPath Expression. Since this is a filter, the expression is a negation. This means that if the `foo` field of the example is equal to `John`, the message goes ahead. Otherwise it is filtered out."
    required:
      - expression
    properties:
      expression:
        title: Expression 
        description: The JSONPath Expression to evaluate, without the external parenthesis. Since this is a filter, the expression is a negation. This means that if the `foo` field of the example is equal to `John`, the message goes ahead. Otherwise it is filtered out.
        type: string
        example: '@.foo =~ /.*John/'
    type: object
  dependencies:
  - "camel:core"
  - "camel:kamelet"
  - "camel:jsonpath"
  template:
    from:
      uri: kamelet:source
      steps:
      - filter:
          jsonpath: "$[?(!({{expression}}))]"
          steps:
            - stop: {}
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: protobuf-deserialize-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Protobuf Deserialize Action"
    description: "Deserialize payload to Protobuf."
    type: object
    properties:
      schema:
        title: Schema
        description: The Protobuf schema to use during serialization (as single-line)
        type: string
        example: 'message Person { required string first = 1; required string last = 2; }'
  dependencies:
  - "camel:kamelet"
  - "camel:core"
  - "camel:jackson-protobuf"
  template:
    beans:
      - name: schemaResolver
        type: "#class:org.apache.camel.component.jackson.protobuf.transform.ProtobufSchemaResolver"
        properties:
          schema: "{{schema:}}"
    from:
      uri: kamelet:source
      steps:
      - unmarshal:
          protobuf:
            library: Jackson
            unmarshalType: com.fasterxml.jackson.databind.JsonNode
            schemaResolver: "#bean:{{schemaResolver}}"
      - removeHeader:
          name: "Content-Type"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: protobuf-serialize-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Protobuf Serialize Action"
    description: "Serialize payload to Protobuf."
    type: object
    properties:
      schema:
        title: Schema
        description: The Protobuf schema to use during serialization (as single-line)
        type: string
        example: 'message Person { required string first = 1; required string last = 2; }'
  dependencies:
  - "camel:kamelet"
  - "camel:core"
  - "camel:jackson-protobuf"
  template:
    beans:
      - name: schemaResolver
        type: "#class:org.apache.camel.component.jackson.protobuf.transform.ProtobufSchemaResolver"
        properties:
          schema: "{{schema:}}"
    from:
      uri: kamelet:source
      steps:
      - marshal:
          protobuf:
            library: Jackson
            unmarshalType: com.fasterxml.jackson.databind.JsonNode
            schemaResolver: "#bean:{{schemaResolver}}"
      - setHeader:
          name: "Content-Type"
          constant: "application/protobuf"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: pulsar-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 5640 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Pulsar"
    camel.apache.org/kamelet.namespace: "Messaging"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  dependencies:
    - "camel:pulsar"
    - "camel:kamelet"
    - "camel:core"
  definition:
    title: "Pulsar Sink"
    description: "Send documents to Pulsar."
    required:
      - topicType
      - topic
      - namespaceName
      - tenant
      - serviceUrl
    properties:
      topic:
        title: Topic Name
        description: The topic name or regexp.
        type: string
      tenant:
        title: Tenant Name
        description: The Tenant Name.
        type: string
      topicType:
        title: Topic Type
        description: "The topic type."
        type: string 
        enum: ["persistent", "non-persistent"]
      namespaceName:
        title: Pulsar Namespace Name
        description: The Pulsar Namespace Name.
        type: string
      serviceUrl:
        title: Service URL
        description: The Pulsar Service URL to point while creating the client from URI.
        type: string        
      authenticationClass:
        title: Authentication Class
        description: The Authentication FQCN to be used while creating the client from URI.
        type: string
      authenticationParams:
        title: Authentication Params
        description: The Authentication Parameters to be used while creating the client from URI.
        type: string
      batchingEnabled:
        title: Enable Batching
        description: Control whether automatic batching of messages is enabled for the producer.
        type: boolean
        default: true
      batchingMaxMessages:
        title: Batching Maximum Messages
        description: "The maximum size to batch messages."
        type: integer
        default: 1000
      batchingMaxPublishDelayMicros:
        title: Batching Maximum Publish Delay in Microsecond
        description: "Used if `batchingEnabled` is `true`. Sets the maximum time period within which the messages sent are batched."
        type: integer
        default: 1000
      blockIfQueueFull:
        title: Block If Queue Full
        description: "Whether to block the producing thread if pending messages queue is full or to throw a ProducerQueueIsFullError."
        type: boolean
        default: false
      compressionType:
        title: Compression Type
        description: "Compression type to use."
        type: string
        default: "NONE"
        enum: ["NONE", "LZ4", "ZLIB", "ZSTD", "SNAPPY"]
      initialSequenceId:
        title: Initial SequenceId
        description: "The first message published will have a sequence Id of initialSequenceId 1."
        type: integer
        default: -1
      lazyStartProducer:
        title: Number Of Consumer Threads
        description: "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel’s routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing."
        type: boolean
        default: false
      maxPendingMessages:
        title: Maximum Pending Messages
        description: "Size of the pending massages queue. When the queue is full, by default, any further sends will fail unless blockIfQueueFull=true."
        type: integer
        default: 1000
      maxPendingMessagesAcrossPartitions:
        title: Maximum Pending Messages Across Partitions
        description: "The maximum number of pending messages for partitioned topics. The `maxPendingMessages` value is reduced if (number of partitions `maxPendingMessages`) exceeds this value. Partitioned topics have a pending message queue for each partition."
        type: integer
        default: 50000
      messageRoutingMode:
        title: Message Routing Mode
        description: "Message Routing Mode to use."
        type: string
        default: "RoundRobinPartition"
        enum: ["SinglePartition", "RoundRobinPartition", "CustomPartition"]
      producerName:
        title: Producer Name
        description: "Name of the producer. If unset, lets Pulsar select a unique identifier."
        type: string
      sendTimeoutMs:
        title: Send Timeout in Milliseconds
        description: "Send timeout in milliseconds."
        type: integer
        default: 30000
    type: object
  template:
    from:
      uri: kamelet:source
      steps:
        - to:
            uri: pulsar:{{topicType}}/{{tenant}}/{{namespaceName}}/{{topic}}
            parameters:
              serviceUrl: "{{serviceUrl}}"
              authenticationClass: "{{?authenticationClass}}"
              authenticationParams: "{{?authenticationParams}}"
              batchingEnabled: "{{?batchingEnabled}}"
              batchingMaxMessages: "{{?batchingMaxMessages}}"
              batchingMaxPublishDelayMicros: "{{?batchingMaxPublishDelayMicros}}"
              blockIfQueueFull: "{{?blockIfQueueFull}}"
              compressionType: "{{?compressionType}}"
              initialSequenceId: "{{?initialSequenceId}}"
              lazyStartProducer: "{{?lazyStartProducer}}"
              maxPendingMessages: "{{?maxPendingMessages}}"
              maxPendingMessagesAcrossPartitions: "{{?maxPendingMessagesAcrossPartitions}}"
              messageRoutingMode: "{{?messageRoutingMode}}"
              producerName: "{{?producerName}}"
              sendTimeoutMs: "{{?sendTimeoutMs}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: pulsar-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 5640 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Pulsar"
    camel.apache.org/kamelet.namespace: "Messaging"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  dependencies:
    - "camel:pulsar"
    - "camel:kamelet"
    - "camel:core"
  definition:
    title: "Pulsar Source"
    description: "Receive data from Pulsar topics."
    required:
      - topicType
      - topic
      - namespaceName
      - tenant
      - serviceUrl
    properties:
      topic:
        title: Topic Name
        description: The topic name or regexp
        type: string
      tenant:
        title: Tenant Name
        description: The Tenant Name
        type: string
      topicType:
        title: Topic Type
        description: "The topic type."
        type: string
        enum: ["persistent", "non-persistent"]
      namespaceName:
        title: Pulsar Namespace Name
        description: The Pulsar Namespace Name
        type: string
      serviceUrl:
        title: Service URL
        description: The Pulsar Service URL to point while creating the client from URI.
        type: string        
      authenticationClass:
        title: Authentication Class
        description: The Authentication FQCN to be used while creating the client from URI.
        type: string
      authenticationParams:
        title: Authentication Params
        description: The Authentication Parameters to be used while creating the client from URI.
        type: string
      consumerNamePrefix:
        title: Consumer Name Prefix
        description: Prefix to add to consumer names when a SHARED or FAILOVER subscription is used
        type: string
        default: cons
      consumerQueueSize:
        title: Consumer Queue Size
        description: Size of the consumer queue
        type: integer
        default: 10
      deadLetterTopic:
        title: Dead Letter Topic
        description: "Name of the topic where the messages which fail `maxRedeliverCount` times are sent. Note: if not set, default topic name is topicName-subscriptionName-DLQ."
        type: integer
      maxRedeliverCount:
        title: Maximum Redelivery Count
        description: "Maximum number of times that a message is redelivered before being sent to the dead letter queue. If this value is not set, no Dead Letter Policy is created."
        type: integer
      negativeAckRedeliveryDelayMicros:
        title: Negative Ack Redelivery Delay in Microseconds
        description: "Set the negative acknowledgement delay."
        type: integer
        default: 60000000
      messageListener:
        title: Message Listener
        description: "Whether to use the messageListener interface, or to receive messages using a separate thread pool."
        type: boolean
        default: true
      numberOfConsumers:
        title: Number Of Consumers
        description: "Number of consumers."
        type: integer
        default: 1        
      numberOfConsumerThreads:
        title: Number Of Consumer Threads
        description: "Number of threads to receive and handle messages when using a separate thread pool."
        type: integer
        default: 1
      readCompacted:
        title: Read Compacted
        description: "Enable compacted topic reading."
        type: boolean
        default: false
      subscriptionInitialPosition:
        title: Subscription Initial Position
        description: "Control the initial position in the topic of a newly created subscription. Default is latest message."
        type: string
        default: LATEST
        enum: ["EARLIEST", "LATEST"]
      subscriptionName:
        title: Subscription Name
        description: "Name of the subscription to use."
        type: string
        default: subs
      subscriptionTopicsMode:
        title: Subscription Topics Mode
        description: "Determines to which topics this consumer should be subscribed to - Persistent, Non-Persistent, or both. Only used with pattern subscriptions."
        type: string
        default: PersistentOnly
        enum: ["PersistentOnly", "NonPersistentOnly", "AllTopics"]
      subscriptionType:
        title: Subscription Type
        description: "Type of the subscription."
        type: string
        default: EXCLUSIVE
        enum: ["EXCLUSIVE", "SHARED", "FAILOVER", "KEY_SHARED"]
      topicsPattern:
        title: Topic Pattern
        description: "Whether the topic is a pattern (regular expression) that allows the consumer to subscribe to all matching topics in the namespace."
        type: boolean
        default: false
    type: object
  template:
    from:
      uri: pulsar:{{topicType}}/{{tenant}}/{{namespaceName}}/{{topic}}
      parameters:
        serviceUrl: "{{serviceUrl}}"
        authenticationClass: "{{?authenticationClass}}"
        authenticationParams: "{{?authenticationParams}}"
        consumerNamePrefix: "{{?consumerNamePrefix}}"
        consumerQueueSize: "{{?consumerQueueSize}}"
        deadLetterTopic: "{{?deadLetterTopic}}"
        maxRedeliverCount: "{{?maxRedeliverCount}}"
        negativeAckRedeliveryDelayMicros: "{{?negativeAckRedeliveryDelayMicros}}"
        messageListener: "{{?messageListener}}"
        numberOfConsumers: "{{?numberOfConsumers}}"   
        numberOfConsumerThreads: "{{?numberOfConsumerThreads}}"
        readCompacted: "{{?readCompacted}}"
        subscriptionInitialPosition: "{{?subscriptionInitialPosition}}"
        subscriptionName: "{{?subscriptionName}}"
        subscriptionTopicsMode: "{{?subscriptionTopicsMode}}"
        subscriptionType: "{{?subscriptionType}}"
        topicsPattern: "{{?topicsPattern}}"
      steps:
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: redis-sink
  labels:
    camel.apache.org/kamelet.type: "sink"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Redis"
    camel.apache.org/kamelet.namespace: "Cache"
    camel.apache.org/kamelet.icon: data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUwMCIgaGVpZ2h0PSIyMTQ4IiB2aWV3Qm94PSIwIDAgMjU2IDIyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij48cGF0aCBkPSJNMjQ1Ljk3IDE2OC45NDNjLTEzLjY2MiA3LjEyMS04NC40MzQgMzYuMjItOTkuNTAxIDQ0LjA3NS0xNS4wNjcgNy44NTYtMjMuNDM3IDcuNzgtMzUuMzQgMi4wOS0xMS45MDItNS42OS04Ny4yMTYtMzYuMTEyLTEwMC43ODMtNDIuNTk3QzMuNTY2IDE2OS4yNzEgMCAxNjYuNTM1IDAgMTYzLjk1MXYtMjUuODc2czk4LjA1LTIxLjM0NSAxMTMuODc5LTI3LjAyNGMxNS44MjgtNS42NzkgMjEuMzItNS44ODQgMzQuNzktLjk1IDEzLjQ3MiA0LjkzNiA5NC4wMTggMTkuNDY4IDEwNy4zMzEgMjQuMzQ0bC0uMDA2IDI1LjUxYy4wMDIgMi41NTgtMy4wNyA1LjM2NC0xMC4wMjQgOC45ODgiIGZpbGw9IiM5MTI2MjYiLz48cGF0aCBkPSJNMjQ1Ljk2NSAxNDMuMjJjLTEzLjY2MSA3LjExOC04NC40MzEgMzYuMjE4LTk5LjQ5OCA0NC4wNzItMTUuMDY2IDcuODU3LTIzLjQzNiA3Ljc4LTM1LjMzOCAyLjA5LTExLjkwMy01LjY4Ni04Ny4yMTQtMzYuMTEzLTEwMC43OC00Mi41OTQtMTMuNTY2LTYuNDg1LTEzLjg1LTEwLjk0OC0uNTI0LTE2LjE2NiAxMy4zMjYtNS4yMiA4OC4yMjQtMzQuNjA1IDEwNC4wNTUtNDAuMjg0IDE1LjgyOC01LjY3NyAyMS4zMTktNS44ODQgMzQuNzg5LS45NDggMTMuNDcxIDQuOTM0IDgzLjgxOSAzMi45MzUgOTcuMTMgMzcuODEgMTMuMzE2IDQuODgxIDEzLjgyNyA4LjkuMTY2IDE2LjAyIiBmaWxsPSIjQzYzMDJCIi8+PHBhdGggZD0iTTI0NS45NyAxMjcuMDc0Yy0xMy42NjIgNy4xMjItODQuNDM0IDM2LjIyLTk5LjUwMSA0NC4wNzgtMTUuMDY3IDcuODUzLTIzLjQzNyA3Ljc3Ny0zNS4zNCAyLjA4Ny0xMS45MDMtNS42ODctODcuMjE2LTM2LjExMi0xMDAuNzgzLTQyLjU5N0MzLjU2NiAxMjcuNDAyIDAgMTI0LjY3IDAgMTIyLjA4NVY5Ni4yMDZzOTguMDUtMjEuMzQ0IDExMy44NzktMjcuMDIzYzE1LjgyOC01LjY3OSAyMS4zMi01Ljg4NSAzNC43OS0uOTVDMTYyLjE0MiA3My4xNjggMjQyLjY4OCA4Ny42OTcgMjU2IDkyLjU3NGwtLjAwNiAyNS41MTNjLjAwMiAyLjU1Ny0zLjA3IDUuMzYzLTEwLjAyNCA4Ljk4NyIgZmlsbD0iIzkxMjYyNiIvPjxwYXRoIGQ9Ik0yNDUuOTY1IDEwMS4zNTFjLTEzLjY2MSA3LjEyLTg0LjQzMSAzNi4yMTgtOTkuNDk4IDQ0LjA3NS0xNS4wNjYgNy44NTQtMjMuNDM2IDcuNzc3LTM1LjMzOCAyLjA4Ny0xMS45MDMtNS42ODYtODcuMjE0LTM2LjExMi0xMDAuNzgtNDIuNTk0LTEzLjU2Ni02LjQ4My0xMy44NS0xMC45NDctLjUyNC0xNi4xNjdDMjMuMTUxIDgzLjUzNSA5OC4wNSA1NC4xNDggMTEzLjg4IDQ4LjQ3YzE1LjgyOC01LjY3OCAyMS4zMTktNS44ODQgMzQuNzg5LS45NDkgMTMuNDcxIDQuOTM0IDgzLjgxOSAzMi45MzMgOTcuMTMgMzcuODEgMTMuMzE2IDQuODggMTMuODI3IDguOS4xNjYgMTYuMDIiIGZpbGw9IiNDNjMwMkIiLz48cGF0aCBkPSJNMjQ1Ljk3IDgzLjY1M2MtMTMuNjYyIDcuMTItODQuNDM0IDM2LjIyLTk5LjUwMSA0NC4wNzgtMTUuMDY3IDcuODU0LTIzLjQzNyA3Ljc3Ny0zNS4zNCAyLjA4Ny0xMS45MDMtNS42ODctODcuMjE2LTM2LjExMy0xMDAuNzgzLTQyLjU5NUMzLjU2NiA4My45OCAwIDgxLjI0NyAwIDc4LjY2NXYtMjUuODhzOTguMDUtMjEuMzQzIDExMy44NzktMjcuMDIxYzE1LjgyOC01LjY4IDIxLjMyLTUuODg0IDM0Ljc5LS45NUMxNjIuMTQyIDI5Ljc0OSAyNDIuNjg4IDQ0LjI3OCAyNTYgNDkuMTU1bC0uMDA2IDI1LjUxMmMuMDAyIDIuNTU1LTMuMDcgNS4zNjEtMTAuMDI0IDguOTg2IiBmaWxsPSIjOTEyNjI2Ii8+PHBhdGggZD0iTTI0NS45NjUgNTcuOTNjLTEzLjY2MSA3LjEyLTg0LjQzMSAzNi4yMi05OS40OTggNDQuMDc0LTE1LjA2NiA3Ljg1NC0yMy40MzYgNy43NzctMzUuMzM4IDIuMDlDOTkuMjI3IDk4LjQwNCAyMy45MTUgNjcuOTggMTAuMzUgNjEuNDk3LTMuMjE3IDU1LjAxNS0zLjUgNTAuNTUgOS44MjUgNDUuMzMxIDIzLjE1MSA0MC4xMTMgOTguMDUgMTAuNzMgMTEzLjg4IDUuMDVjMTUuODI4LTUuNjc5IDIxLjMxOS01Ljg4MyAzNC43ODktLjk0OCAxMy40NzEgNC45MzUgODMuODE5IDMyLjkzNCA5Ny4xMyAzNy44MTEgMTMuMzE2IDQuODc2IDEzLjgyNyA4Ljg5Ny4xNjYgMTYuMDE3IiBmaWxsPSIjQzYzMDJCIi8+PHBhdGggZD0iTTE1OS4yODMgMzIuNzU3bC0yMi4wMSAyLjI4NS00LjkyNyAxMS44NTYtNy45NTgtMTMuMjMtMjUuNDE1LTIuMjg0IDE4Ljk2NC02LjgzOS01LjY5LTEwLjQ5OCAxNy43NTUgNi45NDQgMTYuNzM4LTUuNDgtNC41MjQgMTAuODU1IDE3LjA2NyA2LjM5MU0xMzEuMDMyIDkwLjI3NUw4OS45NTUgNzMuMjM4bDU4Ljg2LTkuMDM1LTE3Ljc4MyAyNi4wNzJNNzQuMDgyIDM5LjM0N2MxNy4zNzUgMCAzMS40NiA1LjQ2IDMxLjQ2IDEyLjE5NCAwIDYuNzM2LTE0LjA4NSAxMi4xOTUtMzEuNDYgMTIuMTk1cy0zMS40Ni01LjQ2LTMxLjQ2LTEyLjE5NWMwLTYuNzM0IDE0LjA4NS0xMi4xOTQgMzEuNDYtMTIuMTk0IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTE4NS4yOTUgMzUuOTk4bDM0LjgzNiAxMy43NjYtMzQuODA2IDEzLjc1My0uMDMtMjcuNTIiIGZpbGw9IiM2MjFCMUMiLz48cGF0aCBkPSJNMTQ2Ljc1NSA1MS4yNDNsMzguNTQtMTUuMjQ1LjAzIDI3LjUxOS0zLjc3OSAxLjQ3OC0zNC43OTEtMTMuNzUyIiBmaWxsPSIjOUEyOTI4Ii8+PC9zdmc+
spec:
  definition:
    title: "Redis Sink"
    description: "Write object to a Redis cache."
    required:
      - redisHost
      - redisPort
      - command
    type: object
    properties:
      redisHost:
        title: Redis Host
        description: The host where Redis server is running
        type: string
      redisPort:
        title: Redis Port
        description: The port where Redis server is running
        type: integer
      command:
        title: Command
        description: Redis Command 
        type: string
        default: GET
      channels:
        title: Channels
        description: Redis Channels
        type: string
        default: one
      serializer:
        title: Serializer
        description: RedisSerializer fully qualified name implementation 
        type: string
        default: org.springframework.data.redis.serializer.StringRedisSerializer
  dependencies:
    - "camel:kamelet"
    - "camel:core"
    - "camel:spring-redis"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[key]}"
            steps:
            - setHeader:
                name: CamelRedis.Key
                simple: "${header[key]}"
          - simple: "${header[ce-key]}"
            steps:
            - setHeader:
                name: CamelRedis.Key
                simple: "${header[ce-key]}"
      - choice:
          when:
          - simple: "${header[value]}"
            steps:
            - setHeader:
                name: CamelRedis.Value
                simple: "${header[value]}"
          - simple: "${header[ce-value]}"
            steps:
            - setHeader:
                name: CamelRedis.Value
                simple: "${header[ce-value]}"
      - choice:
          when:
          - simple: "${header[message]}"
            steps:
            - setHeader:
                name: CamelRedis.Message
                simple: "${header[message]}"
          - simple: "${header[ce-message]}"
            steps:
            - setHeader:
                name: CamelRedis.Message
                simple: "${header[ce-message]}"
      - choice:
          when:
          - simple: "${header[channel]}"
            steps:
            - setHeader:
                name: CamelRedis.Channel
                simple: "${header[channel]}"
          - simple: "${header[ce-channel]}"
            steps:
            - setHeader:
                name: CamelRedis.Channel
                simple: "${header[ce-channell]}"
      - setHeader:
          name: CamelRedis.Message
          simple: "${body}"
      - setHeader:
          name: CamelRedis.Value
          simple: "${body}"
      - to:
          uri: "spring-redis:{{redisHost}}:{{redisPort}}"
          parameters:
            command: "{{command}}"
            channels: "{{channels}}"
            serializer: "#class:{{serializer}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: redis-source
  labels:
    camel.apache.org/kamelet.type: "source"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Redis"
    camel.apache.org/kamelet.namespace: "Cache"
    camel.apache.org/kamelet.icon: data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjUwMCIgaGVpZ2h0PSIyMTQ4IiB2aWV3Qm94PSIwIDAgMjU2IDIyMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij48cGF0aCBkPSJNMjQ1Ljk3IDE2OC45NDNjLTEzLjY2MiA3LjEyMS04NC40MzQgMzYuMjItOTkuNTAxIDQ0LjA3NS0xNS4wNjcgNy44NTYtMjMuNDM3IDcuNzgtMzUuMzQgMi4wOS0xMS45MDItNS42OS04Ny4yMTYtMzYuMTEyLTEwMC43ODMtNDIuNTk3QzMuNTY2IDE2OS4yNzEgMCAxNjYuNTM1IDAgMTYzLjk1MXYtMjUuODc2czk4LjA1LTIxLjM0NSAxMTMuODc5LTI3LjAyNGMxNS44MjgtNS42NzkgMjEuMzItNS44ODQgMzQuNzktLjk1IDEzLjQ3MiA0LjkzNiA5NC4wMTggMTkuNDY4IDEwNy4zMzEgMjQuMzQ0bC0uMDA2IDI1LjUxYy4wMDIgMi41NTgtMy4wNyA1LjM2NC0xMC4wMjQgOC45ODgiIGZpbGw9IiM5MTI2MjYiLz48cGF0aCBkPSJNMjQ1Ljk2NSAxNDMuMjJjLTEzLjY2MSA3LjExOC04NC40MzEgMzYuMjE4LTk5LjQ5OCA0NC4wNzItMTUuMDY2IDcuODU3LTIzLjQzNiA3Ljc4LTM1LjMzOCAyLjA5LTExLjkwMy01LjY4Ni04Ny4yMTQtMzYuMTEzLTEwMC43OC00Mi41OTQtMTMuNTY2LTYuNDg1LTEzLjg1LTEwLjk0OC0uNTI0LTE2LjE2NiAxMy4zMjYtNS4yMiA4OC4yMjQtMzQuNjA1IDEwNC4wNTUtNDAuMjg0IDE1LjgyOC01LjY3NyAyMS4zMTktNS44ODQgMzQuNzg5LS45NDggMTMuNDcxIDQuOTM0IDgzLjgxOSAzMi45MzUgOTcuMTMgMzcuODEgMTMuMzE2IDQuODgxIDEzLjgyNyA4LjkuMTY2IDE2LjAyIiBmaWxsPSIjQzYzMDJCIi8+PHBhdGggZD0iTTI0NS45NyAxMjcuMDc0Yy0xMy42NjIgNy4xMjItODQuNDM0IDM2LjIyLTk5LjUwMSA0NC4wNzgtMTUuMDY3IDcuODUzLTIzLjQzNyA3Ljc3Ny0zNS4zNCAyLjA4Ny0xMS45MDMtNS42ODctODcuMjE2LTM2LjExMi0xMDAuNzgzLTQyLjU5N0MzLjU2NiAxMjcuNDAyIDAgMTI0LjY3IDAgMTIyLjA4NVY5Ni4yMDZzOTguMDUtMjEuMzQ0IDExMy44NzktMjcuMDIzYzE1LjgyOC01LjY3OSAyMS4zMi01Ljg4NSAzNC43OS0uOTVDMTYyLjE0MiA3My4xNjggMjQyLjY4OCA4Ny42OTcgMjU2IDkyLjU3NGwtLjAwNiAyNS41MTNjLjAwMiAyLjU1Ny0zLjA3IDUuMzYzLTEwLjAyNCA4Ljk4NyIgZmlsbD0iIzkxMjYyNiIvPjxwYXRoIGQ9Ik0yNDUuOTY1IDEwMS4zNTFjLTEzLjY2MSA3LjEyLTg0LjQzMSAzNi4yMTgtOTkuNDk4IDQ0LjA3NS0xNS4wNjYgNy44NTQtMjMuNDM2IDcuNzc3LTM1LjMzOCAyLjA4Ny0xMS45MDMtNS42ODYtODcuMjE0LTM2LjExMi0xMDAuNzgtNDIuNTk0LTEzLjU2Ni02LjQ4My0xMy44NS0xMC45NDctLjUyNC0xNi4xNjdDMjMuMTUxIDgzLjUzNSA5OC4wNSA1NC4xNDggMTEzLjg4IDQ4LjQ3YzE1LjgyOC01LjY3OCAyMS4zMTktNS44ODQgMzQuNzg5LS45NDkgMTMuNDcxIDQuOTM0IDgzLjgxOSAzMi45MzMgOTcuMTMgMzcuODEgMTMuMzE2IDQuODggMTMuODI3IDguOS4xNjYgMTYuMDIiIGZpbGw9IiNDNjMwMkIiLz48cGF0aCBkPSJNMjQ1Ljk3IDgzLjY1M2MtMTMuNjYyIDcuMTItODQuNDM0IDM2LjIyLTk5LjUwMSA0NC4wNzgtMTUuMDY3IDcuODU0LTIzLjQzNyA3Ljc3Ny0zNS4zNCAyLjA4Ny0xMS45MDMtNS42ODctODcuMjE2LTM2LjExMy0xMDAuNzgzLTQyLjU5NUMzLjU2NiA4My45OCAwIDgxLjI0NyAwIDc4LjY2NXYtMjUuODhzOTguMDUtMjEuMzQzIDExMy44NzktMjcuMDIxYzE1LjgyOC01LjY4IDIxLjMyLTUuODg0IDM0Ljc5LS45NUMxNjIuMTQyIDI5Ljc0OSAyNDIuNjg4IDQ0LjI3OCAyNTYgNDkuMTU1bC0uMDA2IDI1LjUxMmMuMDAyIDIuNTU1LTMuMDcgNS4zNjEtMTAuMDI0IDguOTg2IiBmaWxsPSIjOTEyNjI2Ii8+PHBhdGggZD0iTTI0NS45NjUgNTcuOTNjLTEzLjY2MSA3LjEyLTg0LjQzMSAzNi4yMi05OS40OTggNDQuMDc0LTE1LjA2NiA3Ljg1NC0yMy40MzYgNy43NzctMzUuMzM4IDIuMDlDOTkuMjI3IDk4LjQwNCAyMy45MTUgNjcuOTggMTAuMzUgNjEuNDk3LTMuMjE3IDU1LjAxNS0zLjUgNTAuNTUgOS44MjUgNDUuMzMxIDIzLjE1MSA0MC4xMTMgOTguMDUgMTAuNzMgMTEzLjg4IDUuMDVjMTUuODI4LTUuNjc5IDIxLjMxOS01Ljg4MyAzNC43ODktLjk0OCAxMy40NzEgNC45MzUgODMuODE5IDMyLjkzNCA5Ny4xMyAzNy44MTEgMTMuMzE2IDQuODc2IDEzLjgyNyA4Ljg5Ny4xNjYgMTYuMDE3IiBmaWxsPSIjQzYzMDJCIi8+PHBhdGggZD0iTTE1OS4yODMgMzIuNzU3bC0yMi4wMSAyLjI4NS00LjkyNyAxMS44NTYtNy45NTgtMTMuMjMtMjUuNDE1LTIuMjg0IDE4Ljk2NC02LjgzOS01LjY5LTEwLjQ5OCAxNy43NTUgNi45NDQgMTYuNzM4LTUuNDgtNC41MjQgMTAuODU1IDE3LjA2NyA2LjM5MU0xMzEuMDMyIDkwLjI3NUw4OS45NTUgNzMuMjM4bDU4Ljg2LTkuMDM1LTE3Ljc4MyAyNi4wNzJNNzQuMDgyIDM5LjM0N2MxNy4zNzUgMCAzMS40NiA1LjQ2IDMxLjQ2IDEyLjE5NCAwIDYuNzM2LTE0LjA4NSAxMi4xOTUtMzEuNDYgMTIuMTk1cy0zMS40Ni01LjQ2LTMxLjQ2LTEyLjE5NWMwLTYuNzM0IDE0LjA4NS0xMi4xOTQgMzEuNDYtMTIuMTk0IiBmaWxsPSIjRkZGIi8+PHBhdGggZD0iTTE4NS4yOTUgMzUuOTk4bDM0LjgzNiAxMy43NjYtMzQuODA2IDEzLjc1My0uMDMtMjcuNTIiIGZpbGw9IiM2MjFCMUMiLz48cGF0aCBkPSJNMTQ2Ljc1NSA1MS4yNDNsMzguNTQtMTUuMjQ1LjAzIDI3LjUxOS0zLjc3OSAxLjQ3OC0zNC43OTEtMTMuNzUyIiBmaWxsPSIjOUEyOTI4Ii8+PC9zdmc+
spec:
  definition:
    title: "Redis Source"
    description: "Get Events from a Redis cache."
    required:
      - redisHost
      - redisPort
      - channels
    type: object
    properties:
      redisHost:
        title: Redis Host
        description: The host where Redis server is running
        type: string
      redisPort:
        title: Redis Port
        description: The port where Redis server is running
        type: integer
      command:
        title: Command
        description: Redis Command 
        type: string
        default: SUBSCRIBE
      channels:
        title: Channels
        description: Redis Channels 
        type: string
        default: one
      serializer:
        title: Serializer
        description: RedisSerializer fully qualified name implementation 
        type: string
        default: org.springframework.data.redis.serializer.StringRedisSerializer
  dependencies:
    - "camel:kamelet"
    - "camel:core"
    - "camel:spring-redis"
  template:
    from:
      uri: "spring-redis:{{redisHost}}:{{redisPort}}"
      parameters:
        command: "{{command}}"
        channels: "{{channels}}"
        serializer: "#class:{{serializer}}"
      steps:
      - to: kamelet:sink
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: regex-router-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Kafka"
spec:
  definition:
    title: "Regex Router Action"
    description: "Update the destination using the configured regular expression and replacement string."
    required:
      - regex
      - replacement
    properties:
      regex:
        title: Regex
        description: Regular Expression for destination
        type: string
      replacement:
        title: Replacement
        description: Replacement when matching
        type: string
    type: object
  dependencies:
  - "camel:kamelet"
  - "camel:core"
  - "camel:kafka"
  template:
    from:
      uri: kamelet:source
      steps:
      - setProperty:
          name: "regex"
          constant: "{{regex}}"
      - setProperty:
          name: "replacement"
          constant: "{{replacement}}"
      - bean: "org.apache.camel.component.kafka.transform.RegexRouter"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: replace-field-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
spec:
  definition:
    title: "Replace Field Action"
    description: Replace field with a different key in the message in transit.
    required:
      - renames
    properties:
      enabled:
        title: Enabled
        description: Comma separated list of fields to be enabled
        type: string
        default: "all"
      disabled:
        title: Disabled
        description: Comma separated list of fields to be disabled
        type: string
        default: "none"
      renames:
        title: Renames
        description: Comma separated list of field with new value to be renamed
        type: string
        example: "foo:bar,c1:c2"
    type: object
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:core"
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:kafka"
  template:
    from:
      uri: kamelet:source
      steps:
      - choice:
          when:
          - simple: "${header[Content-Type]} == 'application/json'"
            steps:
            - setProperty:
                name: deserialized
                constant: "true"
            - unmarshal:
                json:
                  library: Jackson
                  unmarshalType: com.fasterxml.jackson.databind.JsonNode
      - setProperty:
          name: "enabled"
          constant: "{{enabled}}"
      - setProperty:
          name: "disabled"
          constant: "{{disabled}}"
      - setProperty:
          name: "renames"
          constant: "{{renames}}"
      - bean: "org.apache.camel.component.kafka.transform.ReplaceField"
      - choice:
          when:
          - simple: "${exchangeProperty[deserialized]} == 'true'"
            steps:
            - marshal:
                json:
                  library: Jackson
                  unmarshalType: com.fasterxml.jackson.databind.JsonNode
            - setHeader:
                name: "Content-Type"
                constant: "application/json"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: resolve-pojo-schema-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Resolve Schema Action"
    description: "Resolves schema from given mime type and payload. Sets the resolved schema, the schema type and its content class as properties for later reference."
    type: object
    properties:
      mimeType:
        title: Mime Type
        description: The mime type to determine the schema resolver implementation that should perform the operation.
        type: string
        default: "application/json"
        example: "application/json"
      schema:
        title: Schema
        description: Optional schema content (as single-line, using JSON format).
        type: string
      contentClass:
        title: Content Class
        description: Type information of the content object. Fully qualified class name.
        type: string
        example: "org.apache.camel.content.Foo"
      targetMimeType:
        title: Target Mime Type
        description: Additional mime type information used to determine the schema resolver. Usually only used in combination with mime type "application/x-java-object"
        type: string
        example: "application/json"
  dependencies:
    - "camel:kamelet"
    - "camel:core"
    - "camel:jackson-avro"
    - "camel:jackson-protobuf"
  template:
    beans:
      - name: schemaResolver
        type: "#class:org.apache.camel.component.kamelet.utils.format.schema.DelegatingSchemaResolver"
        properties:
          mimeType: '{{mimeType}}'
          schema: '{{schema:}}'
          contentClass: '{{contentClass:}}'
          targetMimeType: '{{targetMimeType:}}'
    from:
      uri: "kamelet:source"
      steps:
        - process:
            ref: "{{schemaResolver}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: rest-openapi-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/png;base64,[encoded data, 12960 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "HTTP"
    camel.apache.org/kamelet.namespace: "HTTP"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "REST OpenAPI Sink"
    description: Load an OpenAPI specification from a URI and call an operation on a HTTP service. The request that is generated respects the rules given in the OpenAPI specification (for example, path parameters and Content-Type).
    required:
    - specification
    - operation
    type: object
    properties:
      specification:
        title: Specification URI
        description: The URI to the OpenApi specification file.
        type: string
        example: "https://api.example.com/openapi.json"
        pattern: "^(http|https|file|classpath|ref|bean)://.*"
      operation:
        title: Operation ID
        description: The operation to call.
        type: string
  dependencies:
  - "camel:rest-openapi"
  - "camel:http"
  - "camel:kamelet"
  - "camel:core"
  template:
    from:
      uri: kamelet:source
      steps:
      - to: "rest-openapi:{{specification}}#{{operation}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: salesforce-composite-upsert-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 10488 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Salesforce"
    camel.apache.org/kamelet.namespace: "Salesforce"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Salesforce composite upsert Sink"
    description: Upsert Composite List of sObjects in Salesforce.
     
    required:
      - sObjectName
      - sObjectIdName
      - clientId
      - clientSecret
      - userName
      - password
    type: object
    properties:
      sObjectName:       
        title: Object Name
        description: The type of the Salesforce object. Required if using a key-value pair.
        type: string
        example: Contact
      sObjectIdName:
        title: Object Id Name
        description: The Field Name of the External ID of the Salesforce object. Required if using a key-value pair.
        type: string
      loginUrl:
        title: Login URL
        description: The Salesforce instance login URL.
        type: string
        default: https://login.salesforce.com
      clientId:
        title: Consumer Key
        description: The Salesforce application consumer key.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      clientSecret:
        title: Consumer Secret
        description: The Salesforce application consumer secret.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      userName:
        title: Username
        description: The Salesforce username.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The Salesforce user password.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:core"
  - "camel:jsonpath"
  - "camel:jackson"
  - "camel:salesforce"
  - "camel:kamelet"
  template:
    beans:
      - name: salesforce
        type: "#class:org.apache.camel.component.salesforce.SalesforceComponent"
        properties:
          sObjectName: "{{sObjectName}}"
          sObjectIdName: "{{sObjectIdName}}"
          clientId: "{{clientId}}"
          clientSecret: "{{clientSecret}}"
          userName: "{{userName}}"
          password: "{{password}}"
          loginUrl: "{{loginUrl}}"
    from:
      uri: kamelet:source
      steps:
        - transform:
            jsonpath: "$['records']"
        - to:
            uri: "{{salesforce}}:compositeUpsertSObjectCollections"
            parameters:
              sObjectName: "{{sObjectName}}"
              sObjectIdName: "{{sObjectIdName}}"
              rawPayload: "true"
              allOrNone: "false"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: salesforce-create-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 10488 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Salesforce"
    camel.apache.org/kamelet.namespace: "Salesforce"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Salesforce Create Sink"
    description: Create an object in Salesforce.
    required:
      - clientId
      - clientSecret
      - userName
      - password
    type: object
    properties:
      sObjectName:
        title: Object Name
        description: The type of the object.
        type: string
        example: Contact
      loginUrl:
        title: Login URL
        description: The Salesforce instance login URL.
        type: string
        default: https://login.salesforce.com
      clientId:
        title: Consumer Key
        description: The Salesforce application consumer key.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      clientSecret:
        title: Consumer Secret
        description: The Salesforce application consumer secret.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      userName:
        title: Username
        description: The Salesforce username.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The Salesforce user password.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:salesforce"
  - "camel:kamelet"
  template:
    beans:
      - name: local-salesforce
        type: "#class:org.apache.camel.component.salesforce.SalesforceComponent"
        properties:
          clientId: "{{clientId}}"
          clientSecret: "{{clientSecret}}"
          userName: "{{userName}}"
          password: "{{password}}"
          loginUrl: "{{loginUrl}}"
    from:
      uri: kamelet:source
      steps:
        - to:
            uri: "{{local-salesforce}}:createSObject"
            parameters:
              sObjectName: "{{sObjectName}}"
              rawPayload: "true"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: salesforce-delete-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 10488 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Salesforce"
    camel.apache.org/kamelet.namespace: "Salesforce"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Salesforce Delete Sink"
    description: Remove an object from Salesforce.
    required:
      - clientId
      - clientSecret
      - userName
      - password
    type: object
    properties:
      loginUrl:
        title: Login URL
        description: The Salesforce instance login URL.
        type: string
        default: https://login.salesforce.com
      clientId:
        title: Consumer Key
        description: The Salesforce application consumer key.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      clientSecret:
        title: Consumer Secret
        description: The Salesforce application consumer secret.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      userName:
        title: Username
        description: The Salesforce username.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The Salesforce user password.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  types:
    in:
      mediaType: application/json
      schema:
        type: object
        required: ["sObjectId", "sObjectName"]
        properties:
          sObjectId:
            type: string
          sObjectName:
            type: string
  dependencies:
  - "camel:salesforce"
  - "camel:kamelet"
  - "camel:core"
  - "camel:jsonpath"
  template:
    beans:
      - name: local-delete-salesforce
        type: "#class:org.apache.camel.component.salesforce.SalesforceComponent"
        properties:
          clientId: "{{clientId}}"
          clientSecret: "{{clientSecret}}"
          userName: "{{userName}}"
          password: "{{password}}"
          loginUrl: "{{loginUrl}}"
    from:
      uri: kamelet:source
      steps:
        - setHeader:
            name: sObjectId
            jsonpath: "$['sObjectId']"
        - setHeader:
            name: sObjectName
            jsonpath: "$['sObjectName']"
        - setBody:
            simple: "${null}"
        - to:
            uri: "{{local-delete-salesforce}}:deleteSObject"
        - removeHeader:
            name: sObjectId
        - removeHeader:
            name: sObjectName
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: salesforce-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 10488 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Salesforce"
    camel.apache.org/kamelet.namespace: "Salesforce"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Salesforce Source"
    description: Receive updates from Salesforce.
    required:
      - query
      - topicName
      - clientId
      - clientSecret
      - userName
      - password
    type: object
    properties:
      query:
        title: Query
        description: The query to execute on Salesforce.
        type: string
        example: SELECT Id, Name, Email, Phone FROM Contact
      topicName:
        title: Topic Name
        description: The name of the topic or channel.
        type: string
        example: ContactTopic
      loginUrl:
        title: Login URL
        description: The Salesforce instance login URL.
        type: string
        default: https://login.salesforce.com
      notifyForFields:
        title: Notify For Fields
        description: Notify for fields.
        type: string
        default: ALL
        enum: [ "ALL", "REFERENCED", "SELECT", "WHERE"]
      clientId:
        title: Consumer Key
        description: The Salesforce application consumer key.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      clientSecret:
        title: Consumer Secret
        description: The Salesforce application consumer secret.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      userName:
        title: Username
        description: The Salesforce username.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The Salesforce user password.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      notifyForOperationCreate:
        title: Notify Operation Create
        description: Notify for create operation.
        type: boolean
        default: true
      notifyForOperationUpdate:
        title: Notify Operation Update
        description: Notify for update operation.
        type: boolean
        default: false
      notifyForOperationDelete:
        title: Notify Operation Delete
        description: Notify for delete operation.
        type: boolean
        default: false
      notifyForOperationUndelete:
        title: Notify Operation Undelete
        description: Notify for undelete operation.
        type: boolean
        default: false
      operation:
        title: Operation
        description: The operation to use
        type: string
        default: subscribe
      rawPayload:
        title: Raw Payload
        description: Use raw payload String for request and response (either JSON or XML depending on format), instead of DTOs, false by default.
        type: boolean
        default: false
      replayId:
        title: Replay Id
        description: The replayId value to use when subscribing to the Streaming API.
        type: long
  types:
    out:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:salesforce"
  - "camel:kamelet"
  template:
    beans:
      - name: local-salesforce
        type: "#class:org.apache.camel.component.salesforce.SalesforceComponent"
        properties:
          clientId: "{{clientId}}"
          clientSecret: "{{clientSecret}}"
          userName: "{{userName}}"
          password: "{{password}}"
          loginUrl: "{{loginUrl}}"
    from:
      uri: "{{local-salesforce}}:{{operation}}:{{topicName}}"
      parameters:
        notifyForFields: "{{notifyForFields}}"
        updateTopic: "true"
        notifyForOperationCreate: "{{notifyForOperationCreate}}"
        notifyForOperationUpdate: "{{notifyForOperationUpdate}}"
        notifyForOperationDelete: "{{notifyForOperationDelete}}"
        notifyForOperationUndelete: "{{notifyForOperationUndelete}}"
        sObjectQuery: "{{query}}"
        rawPayload: "{{rawPayload}}"
        replayId: "{{?replayId}}"
      steps:
      - marshal:
          json: {}
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: salesforce-update-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 10488 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Salesforce"
    camel.apache.org/kamelet.namespace: "Salesforce"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Salesforce Update Sink"
    description: Update an object in Salesforce.

    required:
      - clientId
      - clientSecret
      - userName
      - password
    type: object
    properties:
      loginUrl:
        title: Login URL
        description: The Salesforce instance login URL.
        type: string
        default: https://login.salesforce.com
      clientId:
        title: Consumer Key
        description: The Salesforce application consumer key.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      clientSecret:
        title: Consumer Secret
        description: The Salesforce application consumer secret.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      userName:
        title: Username
        description: The Salesforce username.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The Salesforce user password.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:core"
  - "camel:jsonpath"
  - "camel:jackson"
  - "camel:salesforce"
  - "camel:kamelet"
  template:
    beans:
      - name: local-salesforce
        type: "#class:org.apache.camel.component.salesforce.SalesforceComponent"
        properties:
          clientId: "{{clientId}}"
          clientSecret: "{{clientSecret}}"
          userName: "{{userName}}"
          password: "{{password}}"
          loginUrl: "{{loginUrl}}"
    from:
      uri: kamelet:source
      steps:
        - setHeader:
            name: sObjectId
            jsonpath: "$.sObjectId"
        - setHeader:
            name: sObjectName
            jsonpath: "$.sObjectName"
        - transform:
            jsonpath: "$.payload"
        - marshal:
            json: {}
        - to:
            uri: "{{local-salesforce}}:updateSObject"
            parameters:
              rawPayload: "true"
        - removeHeader:
            name: sObjectId
        - removeHeader:
            name: sObjectName
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: scp-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 7188 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "SCP"
    camel.apache.org/kamelet.namespace: "File"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "SCP Sink"
    description: Send file to an FTP Server through Secure Copy Protocol
    required:
      - serverName
      - serverPort
    type: object
    properties:
      serverName:
        title: Hostname
        description: The hostname of the FTP server
        type: string
      serverPort:
        title: Port
        description: The port of the FTP server
        type: string
      username:
        title: Username
        description: Username for accessing FTP Server
        type: string
      password:
        title: Password
        description: Password for accessing FTP Server
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      privateKeyFile:
        title: Private Key File
        description: Set the private key file so that the SFTP endpoint can do private key verification.
        type: string
      privateKeyPassphrase:
        title: Private Key Passphrase
        description: Set the private key file passphrase so that the SFTP endpoint can do private key verification.
        type: string
      strictHostKeyChecking:
        title: Strict Host Checking
        description: Sets whether to use strict host key checking.
        type: string
        default: no
      useUserKnownHostsFile:
        title: Use User Known Hosts File
        description: If knownHostFile has not been explicit configured then use the host file from System.getProperty(user.home)/.ssh/known_hosts.
        type: boolean
        default: true
  dependencies:
    - "camel:core"
    - "camel:jsch"
    - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - to:
          uri: "scp:{{serverName}}:{{serverPort}}"
          parameters:
            username: "{{?username}}"
            password: "{{?password}}"
            privateKeyFile: "{{?privateKeyFile}}"
            privateKeyPassphrase: "{{?privateKeyPassphrase}}"
            strictHostKeyChecking: "{{?strictHostKeyChecking}}"
            useUserKnownHostsFile: "{{?useUserKnownHostsFile}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: set-body-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
spec:
  definition:
    title: "Set Body Action"
    description: Sets a simple language parsed value as the new message body in transit.
    required:
      - value
    properties:
      value:
        title: Value
        description: The value to set as new body
        type: string
    type: object
  dependencies:
  - "camel:core"
  - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - setBody:
          simple: "{{value}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: set-kafka-key-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Kafka"
spec:
  definition:
    title: "Set Kafka Key Action"
    description: Set Kafka Key based on a specific incoming header value from the message body.
    required:
      - headerName
    properties:
      headerName:
        title: Field
        description: The name of the header to set as Kafka Key
        type: string
      forceHeaderDeletion:
        title: Force Header Deletion
        description: If true, it will remove the header with name headerName from the Exchange after setting it as Kafka Key
        type: boolean
        default: false
    type: object
  dependencies:
  - "camel:kamelet"
  - "camel:core"
  template:
    from:
      uri: kamelet:source
      steps:
      - setHeader:
          name: kafka.KEY
          simple: "${header.{{headerName}}}"
      - choice:
          precondition: true
          when:
            - simple: '${properties:forceHeaderDeletion:true}'
              steps:
              - removeHeader:
                  name: "{{headerName}}" 
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: sftp-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 7188 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "FTP"
    camel.apache.org/kamelet.namespace: "File"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "SFTP Sink"
    description: Send data to an SFTP Server.
    required:
      - connectionHost
      - connectionPort
      - directoryName
    type: object
    properties:
      connectionHost:
        title: Connection Host
        description: The hostname of the FTP server.
        type: string
      connectionPort:
        title: Connection Port
        description: The port of the FTP server.
        type: string
        default: 22
      username:
        title: Username
        description: The username to access the FTP server.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access the FTP server.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      directoryName:
        title: Directory Name
        description: The starting directory.
        type: string
      passiveMode:
        title: Passive Mode
        description: Specifies to use passive mode connection.
        type: boolean
        default: false
      fileExist:
        title: File Existence
        description: How to behave in case of file already existent.
        type: string
        default: Override
        enum: ["Override", "Append", "Fail", "Ignore"]
      binary:
        title: Binary
        description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false).
        type: boolean
        default: false
      privateKeyFile:
        title: Private Key File
        description: Set the private key file so that the SFTP endpoint can do private key verification.
        type: string
      privateKeyPassphrase:
        title: Private Key Passphrase
        description: Set the private key file passphrase so that the SFTP endpoint can do private key verification.
        type: string
      privateKeyUri:
        title: Private Key URI
        description: Set the private key file (loaded from classpath by default) so that the SFTP endpoint can do private key verification.
        type: string
        pattern: "^(http|https|file|classpath|ref|bean)://.*"
      strictHostKeyChecking:
        title: Strict Host Checking
        description: Sets whether to use strict host key checking.
        type: string
        default: no
      useUserKnownHostsFile:
        title: Use User Known Hosts File
        description: If knownHostFile has not been explicit configured then use the host file from System.getProperty(user.home)/.ssh/known_hosts.
        type: boolean
        default: true
      autoCreate:
        title: Autocreate Missing Directories
        description: Automatically create the directory the files should be written to.
        type: boolean
        default: true
  dependencies:
    - "camel:ftp"
    - "camel:core"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[file]}"
            steps:
            - setHeader:
                name: CamelFileName
                simple: "${header[file]}"
          - simple: "${header[ce-file]}"
            steps:
            - setHeader:
                name: CamelFileName
                simple: "${header[ce-file]}"
      - to:
          uri: "sftp:{{connectionHost}}:{{connectionPort}}/{{directoryName}}"
          parameters:
            username: "{{?username}}"
            password: "{{?password}}"
            privateKeyFile: "{{?privateKeyFile}}"
            privateKeyPassphrase: "{{?privateKeyPassphrase}}"
            privateKeyUri: "{{?privateKeyUri}}"
            strictHostKeyChecking: "{{?strictHostKeyChecking}}"
            useUserKnownHostsFile: "{{?useUserKnownHostsFile}}"
            passiveMode: "{{passiveMode}}"
            fileExist: "{{fileExist}}"
            binary: "{{binary}}"
            autoCreate: "{{autoCreate}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: sftp-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 7188 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "FTP"
    camel.apache.org/kamelet.namespace: "File"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "SFTP Source"
    description: Receive data from an SFTP server.
    required:
      - connectionHost
      - connectionPort
      - directoryName
    type: object
    properties:
      connectionHost:
        title: Connection Host
        description: The hostname of the SFTP server.
        type: string
      connectionPort:
        title: Connection Port
        description: The port of the FTP server.
        type: string
        default: 22
      username:
        title: Username
        description: The username to access the SFTP server.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access the SFTP server.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      directoryName:
        title: Directory Name
        description: The starting directory.
        type: string
      passiveMode:
        title: Passive Mode
        description: Sets the passive mode connection.
        type: boolean
        default: false
      recursive:
        title: Recursive
        description: If a directory, look for files in all sub-directories as well.
        type: boolean
        default: false
      idempotent:
        title: Idempotency
        description: Skip already-processed files.
        type: boolean
        default: true
      ignoreFileNotFoundOrPermissionError:
        title: Ignore File Not Found Or Permission Error
        description: Whether to ignore when (trying to list files in directories or when downloading a file), which does not exist or due to permission error. By default when a directory or file does not exists or insufficient permission, then an exception is thrown. Setting this option to true allows to ignore that instead.
        type: boolean
        default: false
      binary:
        title: Binary
        description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false).
        type: boolean
        default: false
      privateKeyFile:
        title: Private Key File
        description: Set the private key file so that the SFTP endpoint can do private key verification.
        type: string
      privateKeyPassphrase:
        title: Private Key Passphrase
        description: Set the private key file passphrase so that the SFTP endpoint can do private key verification.
        type: string
      privateKeyUri:
        title: Private Key URI
        description: Set the private key file (loaded from classpath by default) so that the SFTP endpoint can do private key verification.
        type: string
        pattern: "^(http|https|file|classpath|ref|bean)://.*"
      strictHostKeyChecking:
        title: Strict Host Checking
        description: Sets whether to use strict host key checking.
        type: string
        default: no
      useUserKnownHostsFile:
        title: Use User Known Hosts File
        description: If knownHostFile has not been explicit configured then use the host file from System.getProperty(user.home)/.ssh/known_hosts.
        type: boolean
        default: true
      autoCreate:
        title: Autocreate Missing Directories
        description: Automatically create starting directory.
        type: boolean
        default: true
      delete:
        title: Delete
        description: If true, the file is deleted after it is processed successfully.
        type: boolean
        default: false
  dependencies:
    - "camel:ftp"
    - "camel:core"
    - "camel:kamelet"
  template:
    from:
      uri: "sftp:{{connectionHost}}:{{connectionPort}}/{{directoryName}}"
      parameters:
        username: "{{?username}}"
        password: "{{?password}}"
        privateKeyFile: "{{?privateKeyFile}}"
        privateKeyPassphrase: "{{?privateKeyPassphrase}}"
        privateKeyUri: "{{?privateKeyUri}}"
        strictHostKeyChecking: "{{?strictHostKeyChecking}}"
        useUserKnownHostsFile: "{{?useUserKnownHostsFile}}"
        passiveMode: "{{passiveMode}}"
        recursive: "{{recursive}}"
        idempotent: "{{idempotent}}"
        ignoreFileNotFoundOrPermissionError: "{{ignoreFileNotFoundOrPermissionError}}"
        binary: "{{binary}}"
        autoCreate: "{{autoCreate}}"
        delete: "{{delete}}"
      steps:
      - setBody:
          simple: "${body.getBody()}"
      - setHeader:
          name: file
          simple: "${header[CamelFileName]}"
      - setHeader:
          name: ce-file
          simple: "${header[CamelFileName]}"
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: simple-filter-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "EIP"
spec:
  definition:
    title: "Simple Filter Action"
    description: "Filter based on simple expression."
    required:
      - expression
    properties:
      expression:
        title: Simple Expression
        description: A simple expression to apply on the exchange to filter out some exchange
        type: string
    type: object
  dependencies:
  - "camel:core"
  - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - filter:
          simple: "{{expression}}"
          steps:
            - stop: {}
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: slack-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTI7IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMyNUQzNjY7fQoJLnN0MXtmaWxsOiNGRkZGRkY7fQoJLnN0MntmaWxsOiNGRjAwMDA7fQoJLnN0M3tmaWxsOiMzRDVBOTg7fQoJLnN0NHtmaWxsOnVybCgjU1ZHSURfMV8pO30KCS5zdDV7ZmlsbDp1cmwoI1NWR0lEXzJfKTt9Cgkuc3Q2e2ZpbGw6IzU1QURFRTt9Cgkuc3Q3e2ZpbGw6IzFFOTZDODt9Cgkuc3Q4e2ZpbGw6I0E5QzlERDt9Cgkuc3Q5e2ZpbGw6I0M4REFFQTt9Cgkuc3QxMHtmaWxsOm5vbmU7fQoJLnN0MTF7ZmlsbDojNDc4N0YzO30KCS5zdDEye2ZpbGw6I0RDNDgzQzt9Cgkuc3QxM3tmaWxsOiNGRkNFNDM7fQoJLnN0MTR7ZmlsbDojMTQ5RjVDO30KCS5zdDE1e2ZpbGw6I0NFMUU1Qjt9Cgkuc3QxNntmaWxsOiM3MkM1Q0Q7fQoJLnN0MTd7ZmlsbDojREZBMjJGO30KCS5zdDE4e2ZpbGw6IzNDQjE4Nzt9Cgkuc3QxOXtmaWxsOiMyNDhDNzM7fQoJLnN0MjB7ZmlsbDojMzkyNTM4O30KCS5zdDIxe2ZpbGw6I0JCMjQyQTt9Cgkuc3QyMntmaWxsOm5vbmU7c3Ryb2tlOiMzQ0IxODc7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fQoJLnN0MjN7ZmlsbDojMDA5QTU3O30KCS5zdDI0e2ZpbGw6I0ZDQ0QzNzt9Cgkuc3QyNXtmaWxsOiMyNzcxRjA7fQo8L3N0eWxlPjxnPjxwYXRoIGNsYXNzPSJzdDE1IiBkPSJNNTAxLjgsMjc0TDUwMS44LDI3NGMtNy42LTIzLjMtMzIuNi0zNi4xLTU2LTI4LjVMOTYuMiwzNTkuMWMtMjMuMyw3LjYtMzYuMSwzMi42LTI4LjUsNTZsMCwwICAgYzcuNiwyMy4zLDMyLjYsMzYuMSw1NiwyOC41bDM0OS42LTExMy42QzQ5Ni42LDMyMi40LDUwOS40LDI5Ny4zLDUwMS44LDI3NHoiLz48cGF0aCBjbGFzcz0ic3QxNiIgZD0iTTQ0My41LDk3LjdsLTAuMi0wLjVjLTcuNi0yMy4zLTMyLjYtMzYuMS01Ni0yOC41TDM4LjcsMTgyLjFjLTIzLjMsNy42LTM2LjEsMzIuNi0yOC41LDU2bDAuMiwwLjUgICBjNy42LDIzLjMsMzIuNiwzNi4xLDU2LDI4LjVsMzQ4LjYtMTEzLjNDNDM4LjMsMTQ2LjEsNDUxLDEyMS4xLDQ0My41LDk3Ljd6Ii8+PHBhdGggY2xhc3M9InN0MTciIGQ9Ik00NDMuNiwzODguM0wzMjkuOSwzOC43Yy03LjYtMjMuMy0zMi42LTM2LjEtNTYtMjguNXYwYy0yMy4zLDcuNi0zNi4xLDMyLjYtMjguNSw1NmwxMTMuNiwzNDkuNiAgIGM3LjYsMjMuMywzMi42LDM2LjEsNTYsMjguNWgwQzQzOC40LDQzNi43LDQ1MS4yLDQxMS42LDQ0My42LDM4OC4zeiIvPjxwYXRoIGNsYXNzPSJzdDE4IiBkPSJNMjY3LDQ0NS43TDE1My43LDk3LjFjLTcuNi0yMy4zLTMyLjYtMzYuMS01Ni0yOC41bC0wLjUsMC4yYy0yMy4zLDcuNi0zNi4xLDMyLjYtMjguNSw1NmwxMTMuMywzNDguNiAgIGM3LjYsMjMuMywzMi42LDM2LjEsNTYsMjguNWwwLjUtMC4yQzI2MS45LDQ5NC4xLDI3NC42LDQ2OSwyNjcsNDQ1Ljd6Ii8+PHJlY3QgY2xhc3M9InN0MTkiIGhlaWdodD0iODkuNCIgdHJhbnNmb3JtPSJtYXRyaXgoLTAuOTUxIDAuMzA5MSAtMC4zMDkxIC0wLjk1MSAzMzEuOTg5NiAzNDAuMjQ1KSIgd2lkdGg9Ijg5LjQiIHg9Ijk0LjQiIHk9IjE1MS43Ii8+PHJlY3QgY2xhc3M9InN0MjAiIGhlaWdodD0iODguOCIgdHJhbnNmb3JtPSJtYXRyaXgoMC45NTEgLTAuMzA5MSAwLjMwOTEgMC45NTEgLTEwNS43NDk4IDc5LjAzMDEpIiB3aWR0aD0iODkuNCIgeD0iMTUxLjgiIHk9IjMyOC44Ii8+PHJlY3QgY2xhc3M9InN0MjEiIGhlaWdodD0iODguOCIgdHJhbnNmb3JtPSJtYXRyaXgoMC45NTEgLTAuMzA5MSAwLjMwOTEgMC45NTEgLTc5LjMyNSAxMzAuODY4OSkiIHdpZHRoPSI4OC44IiB4PSIzMjguOSIgeT0iMjcxLjMiLz48L2c+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Slack"
    camel.apache.org/kamelet.namespace: "Social"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Slack Sink"
    description: Send messages to a Slack channel.
    required:
      - channel
      - webhookUrl
    type: object
    properties:
      channel:
        title: Channel
        description: The Slack channel to send messages to.
        type: string
        example: "#myroom"
      webhookUrl:
        title: Webhook URL
        description: The webhook URL used by the Slack channel to handle incoming messages.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      iconEmoji:
        title: Icon Emoji
        description: Use a Slack emoji as an avatar.
        type: string
      iconUrl:
        title: Icon URL
        description: The avatar to use when sending a message to a channel or user.
        type: string
      username:
        title: Username
        description: The username for the bot when it sends messages to a channel or user.
        type: string
  types:
    out:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:slack"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "slack:{{channel}}"
          parameters:
            webhookUrl: "{{webhookUrl}}"
            iconEmoji: "{{?iconEmoji}}"
            iconUrl: "{{?iconUrl}}"
            username: "{{?username}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: slack-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgaWQ9IkxheWVyXzEiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDUxMiA1MTI7IiB2ZXJzaW9uPSIxLjEiIHZpZXdCb3g9IjAgMCA1MTIgNTEyIiB4bWw6c3BhY2U9InByZXNlcnZlIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLnN0MHtmaWxsOiMyNUQzNjY7fQoJLnN0MXtmaWxsOiNGRkZGRkY7fQoJLnN0MntmaWxsOiNGRjAwMDA7fQoJLnN0M3tmaWxsOiMzRDVBOTg7fQoJLnN0NHtmaWxsOnVybCgjU1ZHSURfMV8pO30KCS5zdDV7ZmlsbDp1cmwoI1NWR0lEXzJfKTt9Cgkuc3Q2e2ZpbGw6IzU1QURFRTt9Cgkuc3Q3e2ZpbGw6IzFFOTZDODt9Cgkuc3Q4e2ZpbGw6I0E5QzlERDt9Cgkuc3Q5e2ZpbGw6I0M4REFFQTt9Cgkuc3QxMHtmaWxsOm5vbmU7fQoJLnN0MTF7ZmlsbDojNDc4N0YzO30KCS5zdDEye2ZpbGw6I0RDNDgzQzt9Cgkuc3QxM3tmaWxsOiNGRkNFNDM7fQoJLnN0MTR7ZmlsbDojMTQ5RjVDO30KCS5zdDE1e2ZpbGw6I0NFMUU1Qjt9Cgkuc3QxNntmaWxsOiM3MkM1Q0Q7fQoJLnN0MTd7ZmlsbDojREZBMjJGO30KCS5zdDE4e2ZpbGw6IzNDQjE4Nzt9Cgkuc3QxOXtmaWxsOiMyNDhDNzM7fQoJLnN0MjB7ZmlsbDojMzkyNTM4O30KCS5zdDIxe2ZpbGw6I0JCMjQyQTt9Cgkuc3QyMntmaWxsOm5vbmU7c3Ryb2tlOiMzQ0IxODc7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fQoJLnN0MjN7ZmlsbDojMDA5QTU3O30KCS5zdDI0e2ZpbGw6I0ZDQ0QzNzt9Cgkuc3QyNXtmaWxsOiMyNzcxRjA7fQo8L3N0eWxlPjxnPjxwYXRoIGNsYXNzPSJzdDE1IiBkPSJNNTAxLjgsMjc0TDUwMS44LDI3NGMtNy42LTIzLjMtMzIuNi0zNi4xLTU2LTI4LjVMOTYuMiwzNTkuMWMtMjMuMyw3LjYtMzYuMSwzMi42LTI4LjUsNTZsMCwwICAgYzcuNiwyMy4zLDMyLjYsMzYuMSw1NiwyOC41bDM0OS42LTExMy42QzQ5Ni42LDMyMi40LDUwOS40LDI5Ny4zLDUwMS44LDI3NHoiLz48cGF0aCBjbGFzcz0ic3QxNiIgZD0iTTQ0My41LDk3LjdsLTAuMi0wLjVjLTcuNi0yMy4zLTMyLjYtMzYuMS01Ni0yOC41TDM4LjcsMTgyLjFjLTIzLjMsNy42LTM2LjEsMzIuNi0yOC41LDU2bDAuMiwwLjUgICBjNy42LDIzLjMsMzIuNiwzNi4xLDU2LDI4LjVsMzQ4LjYtMTEzLjNDNDM4LjMsMTQ2LjEsNDUxLDEyMS4xLDQ0My41LDk3Ljd6Ii8+PHBhdGggY2xhc3M9InN0MTciIGQ9Ik00NDMuNiwzODguM0wzMjkuOSwzOC43Yy03LjYtMjMuMy0zMi42LTM2LjEtNTYtMjguNXYwYy0yMy4zLDcuNi0zNi4xLDMyLjYtMjguNSw1NmwxMTMuNiwzNDkuNiAgIGM3LjYsMjMuMywzMi42LDM2LjEsNTYsMjguNWgwQzQzOC40LDQzNi43LDQ1MS4yLDQxMS42LDQ0My42LDM4OC4zeiIvPjxwYXRoIGNsYXNzPSJzdDE4IiBkPSJNMjY3LDQ0NS43TDE1My43LDk3LjFjLTcuNi0yMy4zLTMyLjYtMzYuMS01Ni0yOC41bC0wLjUsMC4yYy0yMy4zLDcuNi0zNi4xLDMyLjYtMjguNSw1NmwxMTMuMywzNDguNiAgIGM3LjYsMjMuMywzMi42LDM2LjEsNTYsMjguNWwwLjUtMC4yQzI2MS45LDQ5NC4xLDI3NC42LDQ2OSwyNjcsNDQ1Ljd6Ii8+PHJlY3QgY2xhc3M9InN0MTkiIGhlaWdodD0iODkuNCIgdHJhbnNmb3JtPSJtYXRyaXgoLTAuOTUxIDAuMzA5MSAtMC4zMDkxIC0wLjk1MSAzMzEuOTg5NiAzNDAuMjQ1KSIgd2lkdGg9Ijg5LjQiIHg9Ijk0LjQiIHk9IjE1MS43Ii8+PHJlY3QgY2xhc3M9InN0MjAiIGhlaWdodD0iODguOCIgdHJhbnNmb3JtPSJtYXRyaXgoMC45NTEgLTAuMzA5MSAwLjMwOTEgMC45NTEgLTEwNS43NDk4IDc5LjAzMDEpIiB3aWR0aD0iODkuNCIgeD0iMTUxLjgiIHk9IjMyOC44Ii8+PHJlY3QgY2xhc3M9InN0MjEiIGhlaWdodD0iODguOCIgdHJhbnNmb3JtPSJtYXRyaXgoMC45NTEgLTAuMzA5MSAwLjMwOTEgMC45NTEgLTc5LjMyNSAxMzAuODY4OSkiIHdpZHRoPSI4OC44IiB4PSIzMjguOSIgeT0iMjcxLjMiLz48L2c+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Slack"
    camel.apache.org/kamelet.namespace: "Social"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Slack Source"
    description: Receive messages from a Slack channel.
    required:
      - channel
      - token
    type: object
    properties:
      serverUrl:
        title: Server URL
        description: The Slack API server endpoint URL.
        type: string
        default: "https://slack.com"
        example: "https://slack.com"
      channel:
        title: Channel
        description: The Slack channel to receive messages from.
        type: string
        example: "#myroom"
      token:
        title: Token
        description: "The Bot User OAuth Access Token to access Slack. A Slack app that has the following permissions is required: `channels:history`, `groups:history`, `im:history`, `mpim:history`, `channels:read`, `groups:read`, `im:read`, and `mpim:read`."
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      delay:
        title: Delay
        description: The delay between polls. If no unit provided, milliseconds is the default.
        type: string
        default: "60000"
        example: "60s or 6000 or 1m"
      naturalOrder:
        title: Natural Order
        description: Create exchanges in natural order (oldest to newest) or not.
        type: boolean
        default: false
  dataTypes:
    out:
      default: json
      headers:
      types:
        json:
          format: "application-json"
          description: Json mapping of a Slack API Message
          mediaType: application/json
        cloudevents:
          format: "slack:application-cloudevents"
          description: Output data type represents Slack channel messages as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange with respective data from the Slack message and its derived object.
          headers:
            CamelCloudEventID:
              title: CloudEvent ID
              description: The Camel exchange id set as event id
              type: string
            CamelCloudEventType:
              title: CloudEvent Type
              description: The event type
              default: "org.apache.camel.event.slack.consume"
              type: string
            CamelCloudEventSource:
              title: CloudEvent Source
              description: The event source. By default, the Slack App Id with prefix "slack.".
              type: string
            CamelCloudEventSubject:
              title: CloudEvent Subject
              description: The event subject. The Slack Channel name.
              type: string
            CamelCloudEventTime:
              title: CloudEvent Time
              description: The exchange creation timestamp as event time.
              type: string
  types:
    out:
      mediaType: application/json
  dependencies:
  - "camel:gson"
  - "camel:slack"
  - "camel:kamelet"
  template:
    from:
      uri: "slack:{{channel}}"
      parameters:
        serverUrl: "{{serverUrl}}"
        token: "{{token}}"
        delay: "{{delay}}"
        naturalOrder: "{{naturalOrder}}"
      steps:
      - marshal:
          json:
            library: "Gson"
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: snowflake-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 5144 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "SQL"
    camel.apache.org/kamelet.namespace: "Database"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Snowflake Sink"
    description: Send data to a Snowflake Database. This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters.
    required:
      - instanceUrl
      - username
      - password
      - query
    type: object
    properties:
      instanceUrl:
        title: Instance URL
        description: The Instance url
        type: string
        example: instance.snowflakecomputing.com
      username:
        title: Username
        description: The username to access a secured Snowflake Database.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access a secured Snowflake Database.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      query:
        title: Query
        description: The query to execute against the Snowflake Database.
        type: string
        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
      databaseName:
        title: Database Name
        description: The name of the Snowflake Database.
        type: string
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:sql"
  - "mvn:net.snowflake:snowflake-jdbc:3.24.2"
  - "mvn:org.apache.commons:commons-dbcp2:2.13.0"
  template:
    beans:
      - name: local-sql-snowflake-sink
        type: "#class:org.apache.camel.component.sql.SqlComponent"
        properties:
          autowiredEnabled: "false"
      - name: dsBean
        type: "#class:net.snowflake.client.jdbc.SnowflakeBasicDataSource"
        properties:
          user: '{{username}}'
          password: '{{password}}'
          url: 'jdbc:snowflake://{{instanceUrl}}'
          databaseName: '{{?databaseName}}'
    from:
      uri: "kamelet:source"
      steps:
      - unmarshal:
          json: 
            library: Jackson
      - to: 
          uri: "{{local-sql-snowflake-sink}}:{{query}}"
          parameters:
            dataSource: "#bean:{{dsBean}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: snowflake-source
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 5144 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "SQL"
    camel.apache.org/kamelet.namespace: "Database"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Snowflake Source"
    description: Query data from a Snowflake Database.
    required:
      - instanceUrl
      - username
      - password
      - query
    type: object
    properties:
      instanceUrl:
        title: Instance URL
        description: The Instance url
        type: string
        example: instance.snowflakecomputing.com
      username:
        title: Username
        description: The username to access a secured Snowflake Database.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access a secured Snowflake Database.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      query:
        title: Query
        description: The query to execute against the Snowflake Database.
        type: string
        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
      databaseName:
        title: Database Name
        description: The name of the Snowflake Database.
        type: string
      consumedQuery:
        title: Consumed Query
        description: A query to run on a tuple consumed.
        type: string
        example: 'DELETE FROM accounts where user_id = :#user_id'
      delay:
        title: Delay
        description: The number of milliseconds before the next poll
        type: integer
        default: 500
  types:
    out:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:sql"
  - "mvn:net.snowflake:snowflake-jdbc:3.24.2"
  - "mvn:org.apache.commons:commons-dbcp2:2.13.0"
  template:
    beans:
      - name: local-sql-snowflake-source
        type: "#class:org.apache.camel.component.sql.SqlComponent"
        properties:
          autowiredEnabled: "false"
      - name: dsBean
        type: "#class:net.snowflake.client.jdbc.SnowflakeBasicDataSource"
        properties:
          user: '{{username}}'
          password: '{{password}}'
          url: 'jdbc:snowflake://{{instanceUrl}}'
          databaseName: '{{?databaseName}}'
    from:
      uri: "{{local-sql-snowflake-source}}:{{query}}"
      parameters:
        dataSource: "#bean:{{dsBean}}"
        onConsume: "{{?consumedQuery}}"
        delay: "{{delay}}"
      steps:
      - marshal:
          json: 
            library: Jackson
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: solr-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 5296 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Solr"
    camel.apache.org/kamelet.namespace: "Search"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Solr Sink"
    description: Send documents to Solr Collection.
    required:
      - servers
      - collection
    type: object
    properties:
      collection:
        title: Collection
        description: Solr Collection name
        type: string
      servers:
        title: Servers
        description: Comma separated list of Solr Servers and ports
        type: string
      autocommit:
        title: Autocommit 
        description: If autocommit should be enabled or not
        type: boolean
        default: false
      username:
        title: Username
        description: Username to connect to Solr.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: Password to connect to Solr.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:solr"
  - "camel:core"
  - "camel:jackson"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - setHeader:
          name: "CamelSolrOperation"
          constant: "INSERT"
      - setHeader:
          name: "CamelSolrCollection"
          constant: "{{collection}}"
      - unmarshal:
          json:
            library: Jackson
      - removeHeader:
          name: "content-type"
      - to:
          uri: "solr:{{servers}}/solr/"
          parameters:
            autocommit: "{{autocommit}}"
            username: "{{?username}}"
            password: "{{?password}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: solr-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 5296 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Solr"
    camel.apache.org/kamelet.namespace: "Search"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Solr Source"
    description: Query for documents to Solr Collection.
    required:
      - period
      - servers
      - collection
      - query
    type: object
    properties:
      period:
        title: Period between Polls
        description: The interval between fetches to the Solr collection
        type: integer
        default: 10000
      collection:
        title: Collection
        description: Solr Collection name
        type: string
      servers:
        title: Servers
        description: Comma separated list of Solr Servers and ports
        type: string
      query:
        title: Query
        description: The query to submit to Solr
        type: string
      username:
        title: Username
        description: Username to connect to Solr.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: Password to connect to Solr.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:solr"
  - "camel:core"
  - "camel:timer"
  - "camel:jackson"
  - "camel:kamelet"
  template:
    from:
      uri: "timer:solr-stream"
      parameters:
        period: "{{period}}"
      steps:
      - setHeader:
          name: "CamelSolrOperation"
          constant: "QUERY"
      - setHeader:
          name: "CamelSolrQueryString"
          constant: "{{query}}"
      - setHeader:
          name: "CamelSolrCollection"
          constant: "{{collection}}"
      - removeHeader:
          name: "content-type"
      - to:
          uri: "solr:{{servers}}/solr/"
          parameters:
            username: "{{?username}}"
            password: "{{?password}}"
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: splunk-hec-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+U3BsdW5rIGljb248L3RpdGxlPjxwYXRoIGQ9Ik0yMy4zNDggMTEuOTExbC0yLjI0MS0xLjA5MXYtLjY1TDI0IDExLjYyMXYuNTkzbC0yLjg5MyAxLjQzOHYtLjYzNnptLTUuMzk3IDEuODQxaC0uOTYxdi01LjMxaC45NjF2My4xMTZoLjEwMmwxLjI4LTEuNDgxLjcyMy4zMS0xLjIzIDEuMzE2IDEuNDUzIDEuODA5LS44ODguMzExLTEuNDQtMS45OTZ6bS0yLjU3Ny0uMDAydi0yLjA2OGEyLjY4NSAyLjY4NSAwIDAgMC0uMDI2LS40Mi43OTEuNzkxIDAgMCAwLS4wOS0uMjZjLS4xMTMtLjIwMi0uMzA4LS4zMDQtLjU5LS4zMDRhLjg4OC44ODggMCAwIDAtLjQ2MS4xMTMuNjczLjY3MyAwIDAgMC0uMjg2LjMzIDEuMDEyIDEuMDEyIDAgMCAwLS4wNy4yNjNjLS4wMTIuMTMtLjAxOS4yNjItLjAxNy4zOTV2MS45NWgtLjk2MXYtMy42MTRoLjk2MWwuMDAyLjQ4NWMuMTg1LS4yLjM3My0uMzQ4LjU2Ni0uNDM3LjE5Mi0uMDg5LjQxOC0uMTM0LjY3My0uMTM0LjI4NiAwIC41MjcuMDU4LjcyMS4xNzdhMS4wMTYgMS4wMTYgMCAwIDEgLjQ3NS42NjUgMS45NzIgMS45NzIgMCAwIDEgLjA1NC40NDhjLjAwMi4xLjAwNC4yMi4wMDQuMzU4djIuMDUzem0tNC4xMTUuMDAybC0uMDAyLS40ODVhMS43ODMgMS43ODMgMCAwIDEtLjU2NS40MzcgMS41OTcgMS41OTcgMCAwIDEtLjY3NC4xMzVjLS4yODUgMC0uNTI0LS4wNTctLjcyLS4xN2EuOTcyLjk3MiAwIDAgMS0uNDI1LS41MDQuNzUuNzUgMCAwIDEtLjA1NC0uMTY3IDEuOTE4IDEuOTE4IDAgMCAxLS4wMzMtLjE5OSAyLjAzMyAyLjAzMyAwIDAgMS0uMDE3LS4yNTggMTUuNTE2IDE1LjUxNiAwIDAgMS0uMDA1LS4zNTVWMTAuMTNoLjk1NnYyLjA3Yy0uMDAzLjE0MS4wMDYuMjgyLjAyNi40Mi4wMTUuMDkyLjA0NS4xOC4wOS4yNi4xMTMuMjA0LjMwOC4zMDYuNTkuMzA2LjM2IDAgLjYwNi0uMTUuNzQtLjQ0OS4wMzUtLjA4Mi4wNi0uMTY4LjA3NC0uMjU3LjAxNy0uMTM0LjAyNC0uMjY5LjAyMi0uNDAzdi0xLjk1aC45NTV2My42MjR6TTcuMTg0IDguNDRoLjk1NXY1LjMxaC0uOTU1ek01Ljc1OSAxMS45YzAtLjM5Ni0uMDgtLjcwOC0uMjQtLjkzN2EuNzU5Ljc1OSAwIDAgMC0uNjU3LS4zNDUuODA0LjgwNCAwIDAgMC0uNjkzLjM2NmMtLjE3MS4yNDUtLjI1Ni41NzQtLjI1My45OSAwIC40MDUuMDg0LjcyMy4yNS45NTdhLjc5Ni43OTYgMCAwIDAgLjY5LjM0Ny42ODUuNjg1IDAgMCAwIC40MzMtLjEzNS45ODUuOTg1IDAgMCAwIC4yNzctLjM0Yy4wNzEtLjE0LjEyMS0uMjkyLjE0Ny0uNDQ4LjAzLS4xNTEuMDQzLS4zLjA0Ni0uNDU1bTEuMDEtLjAzNmMuMDAzLjI2Ni0uMDQuNTMyLS4xMjkuNzg2LS4wODIuMjMtLjIwNC40NDEtLjM2NC42MjYtLjMxLjM2MS0uNzY0LjU2Ny0xLjI0LjU2M2ExLjY3IDEuNjcgMCAwIDEtLjMxMy0uMDI4IDEuMDQxIDEuMDQxIDAgMCAxLS4yNzUtLjA5OCAxLjMzIDEuMzMgMCAwIDEtLjI1Ny0uMTc4IDIuMzc5IDIuMzc5IDAgMCAxLS4yNjUtLjI2OHYyLjI5M2gtLjkyOXYtNS40MjVoLjkzbC4wMDQuNTI5Yy4xNjktLjIxMi4zNTMtLjM2OC41NS0uNDY4LjE5Ny0uMS40MjYtLjE1LjY4OC0uMTQ3YTEuNTA5IDEuNTA5IDAgMCAxIDEuMTU2LjUwN2MuMTQ4LjE2Ni4yNTkuMzYxLjMzLjU3MS4wOC4yMzYuMTIuNDg1LjExNS43MzdtLTQuMjEuODlhLjk0Ni45NDYgMCAwIDEtLjEwMi40NDEgMS4wMDcgMS4wMDcgMCAwIDEtLjI4Mi4zNDVjLS4xMy4xLS4yNzUuMTczLS40My4yMmExLjggMS44IDAgMCAxLS41NDYuMDggMS45ODUgMS45ODUgMCAwIDEtLjYzNy0uMDk3IDEuOTY0IDEuOTY0IDAgMCAxLS41NjMtLjMybC4zMTItLjUwNWMuMTUuMTI2LjI4NC4yMTcuNDA1LjI3NS4xMTUuMDU3LjI0LjA4Ny4zNjguMDg3YS41NTcuNTU3IDAgMCAwIC4zNzMtLjEyLjM5Ni4zOTYgMCAwIDAgLjE0LS4zMjIuNDc1LjQ3NSAwIDAgMC0uMTItLjMxOCAxLjMwNiAxLjMwNiAwIDAgMC0uMTg3LS4xNzMgOS4yMzEgOS4yMzEgMCAwIDAtLjMwOC0uMjMyIDYuNzg3IDYuNzg3IDAgMCAxLS4yODEtLjIxIDIuMTEgMi4xMSAwIDAgMS0uMjUyLS4yMzIgMS4wMzkgMS4wMzkgMCAwIDEtLjE4LS4yNzUuODI2LjgyNiAwIDAgMS0uMDY5LS4zNDcuODkzLjg5MyAwIDAgMSAuMDk0LS40MDkuOTM1LjkzNSAwIDAgMSAuMjU1LS4zMTQgMS4yMiAxLjIyIDAgMCAxIC4zOS0uMjAzYy4xNi0uMDUuMzI3LS4wNzQuNDk0LS4wNzIuMTg0IDAgLjM2OC4wMjYuNTQ1LjA3Ni4xNzQuMDUuMzM4LjEyMy40ODguMjE5bC0uMjgyLjQ1NGExLjA1IDEuMDUgMCAwIDAtLjYwOC0uMjAxLjUwNC41MDQgMCAwIDAtLjMyMy4xMDIuMzA3LjMwNyAwIDAgMC0uMTI2LjI1M2MwIC4wOTguMDQxLjE5My4xMTMuMjYuMDc0LjA3OC4yMDMuMTg2LjM4NS4zMjUuMTg1LjEzNi4zMzYuMjUzLjQ1Ny4zNTUuMTA0LjA4NS4yMDIuMTgyLjI4Ni4yODYuMDY1LjA4LjExNS4xNzMuMTQ1LjI3M2EuODA4LjgwOCAwIDAgMSAuMDQ2LjI5OVoiLz48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "SPLUNK"
    camel.apache.org/kamelet.namespace: "Monitoring"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Splunk HEC Sink"
    description: The Splunk HEC sink allows to send data to Splunk using the https://docs.splunk.com/Documentation/Splunk/latest/Data/UsetheHTTPEventCollector[HTTP Event Collector].

    required:
      - splunkUrl
      - token
    type: object
    properties:
      splunkUrl:
        title: Splunk URL
        description: The URL of your Splunk server. No need to set the protocol prefix.
        type: string
        example: my_server.splunkcloud.com:8088
      token:
        title: Token
        description: The Token of the HEC. Note it is not the user's authentication token.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      hostPayload:
        title: Host of the Event
        description: The host field set in the data sent to Splunk, it is not related to the Splunk URL or the connection to Splunk server.
        type: string
      bodyOnly:
        title: Body Only
        description: Send to Splunk only data contained in the body.
        type: boolean
        default: false
      headersOnly:
        title: Headers Only
        description: Send to Splunk only data contained in the headers.
        type: boolean
        default: false
      index:
        title: Index
        description: Splunk index to write to.
        type: string
      source:
        title: Source
        description: The source named field of the data.
        type: string
      sourceType:
        title: Source Type
        description: The source named field of the data.
        type: string
      skipTlsVerify:
        title: Skip TLS Verification
        description: Skip TLS verification.
        type: boolean
        default: false
      https:
        title: Secure
        description: Use a secure HTTPS connection.
        type: boolean
        default: true
      time:
        title: Time
        description: Time this event occurred. By default, the time is when this event hits the Splunk server.
        type: string
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:core"
  - "camel:splunk-hec"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "splunk-hec:{{splunkUrl}}"
          parameters:
            host: "{{?hostPayload}}"
            token: "{{token}}"
            bodyOnly: "{{?bodyOnly}}"
            headersOnly: "{{?headersOnly}}"
            index: "{{?index}}"
            source: "{{?source}}"
            sourceType: "{{?sourceType}}"
            skipTlsVerify: "{{?skipTlsVerify}}"
            https: "{{?https}}"
            time: "{{?time}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: splunk-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+U3BsdW5rIGljb248L3RpdGxlPjxwYXRoIGQ9Ik0yMy4zNDggMTEuOTExbC0yLjI0MS0xLjA5MXYtLjY1TDI0IDExLjYyMXYuNTkzbC0yLjg5MyAxLjQzOHYtLjYzNnptLTUuMzk3IDEuODQxaC0uOTYxdi01LjMxaC45NjF2My4xMTZoLjEwMmwxLjI4LTEuNDgxLjcyMy4zMS0xLjIzIDEuMzE2IDEuNDUzIDEuODA5LS44ODguMzExLTEuNDQtMS45OTZ6bS0yLjU3Ny0uMDAydi0yLjA2OGEyLjY4NSAyLjY4NSAwIDAgMC0uMDI2LS40Mi43OTEuNzkxIDAgMCAwLS4wOS0uMjZjLS4xMTMtLjIwMi0uMzA4LS4zMDQtLjU5LS4zMDRhLjg4OC44ODggMCAwIDAtLjQ2MS4xMTMuNjczLjY3MyAwIDAgMC0uMjg2LjMzIDEuMDEyIDEuMDEyIDAgMCAwLS4wNy4yNjNjLS4wMTIuMTMtLjAxOS4yNjItLjAxNy4zOTV2MS45NWgtLjk2MXYtMy42MTRoLjk2MWwuMDAyLjQ4NWMuMTg1LS4yLjM3My0uMzQ4LjU2Ni0uNDM3LjE5Mi0uMDg5LjQxOC0uMTM0LjY3My0uMTM0LjI4NiAwIC41MjcuMDU4LjcyMS4xNzdhMS4wMTYgMS4wMTYgMCAwIDEgLjQ3NS42NjUgMS45NzIgMS45NzIgMCAwIDEgLjA1NC40NDhjLjAwMi4xLjAwNC4yMi4wMDQuMzU4djIuMDUzem0tNC4xMTUuMDAybC0uMDAyLS40ODVhMS43ODMgMS43ODMgMCAwIDEtLjU2NS40MzcgMS41OTcgMS41OTcgMCAwIDEtLjY3NC4xMzVjLS4yODUgMC0uNTI0LS4wNTctLjcyLS4xN2EuOTcyLjk3MiAwIDAgMS0uNDI1LS41MDQuNzUuNzUgMCAwIDEtLjA1NC0uMTY3IDEuOTE4IDEuOTE4IDAgMCAxLS4wMzMtLjE5OSAyLjAzMyAyLjAzMyAwIDAgMS0uMDE3LS4yNTggMTUuNTE2IDE1LjUxNiAwIDAgMS0uMDA1LS4zNTVWMTAuMTNoLjk1NnYyLjA3Yy0uMDAzLjE0MS4wMDYuMjgyLjAyNi40Mi4wMTUuMDkyLjA0NS4xOC4wOS4yNi4xMTMuMjA0LjMwOC4zMDYuNTkuMzA2LjM2IDAgLjYwNi0uMTUuNzQtLjQ0OS4wMzUtLjA4Mi4wNi0uMTY4LjA3NC0uMjU3LjAxNy0uMTM0LjAyNC0uMjY5LjAyMi0uNDAzdi0xLjk1aC45NTV2My42MjR6TTcuMTg0IDguNDRoLjk1NXY1LjMxaC0uOTU1ek01Ljc1OSAxMS45YzAtLjM5Ni0uMDgtLjcwOC0uMjQtLjkzN2EuNzU5Ljc1OSAwIDAgMC0uNjU3LS4zNDUuODA0LjgwNCAwIDAgMC0uNjkzLjM2NmMtLjE3MS4yNDUtLjI1Ni41NzQtLjI1My45OSAwIC40MDUuMDg0LjcyMy4yNS45NTdhLjc5Ni43OTYgMCAwIDAgLjY5LjM0Ny42ODUuNjg1IDAgMCAwIC40MzMtLjEzNS45ODUuOTg1IDAgMCAwIC4yNzctLjM0Yy4wNzEtLjE0LjEyMS0uMjkyLjE0Ny0uNDQ4LjAzLS4xNTEuMDQzLS4zLjA0Ni0uNDU1bTEuMDEtLjAzNmMuMDAzLjI2Ni0uMDQuNTMyLS4xMjkuNzg2LS4wODIuMjMtLjIwNC40NDEtLjM2NC42MjYtLjMxLjM2MS0uNzY0LjU2Ny0xLjI0LjU2M2ExLjY3IDEuNjcgMCAwIDEtLjMxMy0uMDI4IDEuMDQxIDEuMDQxIDAgMCAxLS4yNzUtLjA5OCAxLjMzIDEuMzMgMCAwIDEtLjI1Ny0uMTc4IDIuMzc5IDIuMzc5IDAgMCAxLS4yNjUtLjI2OHYyLjI5M2gtLjkyOXYtNS40MjVoLjkzbC4wMDQuNTI5Yy4xNjktLjIxMi4zNTMtLjM2OC41NS0uNDY4LjE5Ny0uMS40MjYtLjE1LjY4OC0uMTQ3YTEuNTA5IDEuNTA5IDAgMCAxIDEuMTU2LjUwN2MuMTQ4LjE2Ni4yNTkuMzYxLjMzLjU3MS4wOC4yMzYuMTIuNDg1LjExNS43MzdtLTQuMjEuODlhLjk0Ni45NDYgMCAwIDEtLjEwMi40NDEgMS4wMDcgMS4wMDcgMCAwIDEtLjI4Mi4zNDVjLS4xMy4xLS4yNzUuMTczLS40My4yMmExLjggMS44IDAgMCAxLS41NDYuMDggMS45ODUgMS45ODUgMCAwIDEtLjYzNy0uMDk3IDEuOTY0IDEuOTY0IDAgMCAxLS41NjMtLjMybC4zMTItLjUwNWMuMTUuMTI2LjI4NC4yMTcuNDA1LjI3NS4xMTUuMDU3LjI0LjA4Ny4zNjguMDg3YS41NTcuNTU3IDAgMCAwIC4zNzMtLjEyLjM5Ni4zOTYgMCAwIDAgLjE0LS4zMjIuNDc1LjQ3NSAwIDAgMC0uMTItLjMxOCAxLjMwNiAxLjMwNiAwIDAgMC0uMTg3LS4xNzMgOS4yMzEgOS4yMzEgMCAwIDAtLjMwOC0uMjMyIDYuNzg3IDYuNzg3IDAgMCAxLS4yODEtLjIxIDIuMTEgMi4xMSAwIDAgMS0uMjUyLS4yMzIgMS4wMzkgMS4wMzkgMCAwIDEtLjE4LS4yNzUuODI2LjgyNiAwIDAgMS0uMDY5LS4zNDcuODkzLjg5MyAwIDAgMSAuMDk0LS40MDkuOTM1LjkzNSAwIDAgMSAuMjU1LS4zMTQgMS4yMiAxLjIyIDAgMCAxIC4zOS0uMjAzYy4xNi0uMDUuMzI3LS4wNzQuNDk0LS4wNzIuMTg0IDAgLjM2OC4wMjYuNTQ1LjA3Ni4xNzQuMDUuMzM4LjEyMy40ODguMjE5bC0uMjgyLjQ1NGExLjA1IDEuMDUgMCAwIDAtLjYwOC0uMjAxLjUwNC41MDQgMCAwIDAtLjMyMy4xMDIuMzA3LjMwNyAwIDAgMC0uMTI2LjI1M2MwIC4wOTguMDQxLjE5My4xMTMuMjYuMDc0LjA3OC4yMDMuMTg2LjM4NS4zMjUuMTg1LjEzNi4zMzYuMjUzLjQ1Ny4zNTUuMTA0LjA4NS4yMDIuMTgyLjI4Ni4yODYuMDY1LjA4LjExNS4xNzMuMTQ1LjI3M2EuODA4LjgwOCAwIDAgMSAuMDQ2LjI5OVoiLz48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "SPLUNK"
    camel.apache.org/kamelet.namespace: "Monitoring"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Splunk Sink"
    description: Send data to Splunk either by using "submit" or "stream" mode.

    required:
      - serverHostname
      - username
      - password
    type: object
    properties:
      serverHostname:
        title: Splunk Server Address
        description: The address of your Splunk server.
        type: string
        example: my_server_splunk.com
      serverPort:
        title: Splunk Server Port
        description: The address of your Splunk server.
        type: integer
        default: 8089
      username:
        title: Username
        description: The username to authenticate to Splunk Server.
        type: string
      password:
        title: Password
        description: The password to authenticate to Splunk Server.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      index:
        title: Index
        description: Splunk index to write to.
        type: string
      protocol:
        title: Protocol
        description: Connection Protocol to Splunk server.
        type: string
        default: https
        enum: ["http", "https"]
      source:
        title: Source
        description: The source named field of the data.
        type: string
      sourceType:
        title: Source Type
        description: The source named field of the data.
        type: string
      app:
        title: Splunk App
        description: The app name in Splunk.
        type: string
      connectionTimeout:
        title: Connection Timeout
        description: Timeout in milliseconds when connecting to Splunk server
        type: integer
        default: 5000
      mode:
        title: Mode
        description: The mode to publish events to Splunk.
        type: string
        default: stream
        enum: ["submit", "stream"]
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:core"
  - "camel:splunk"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "splunk:{{mode}}"
          parameters:
            host: "{{serverHostname}}"
            port: "{{serverPort}}"
            username: "{{username}}"
            password: "{{password}}"
            source: "{{?source}}"
            sourceType: "{{?sourceType}}"
            scheme: "{{?protocol}}"
            index: "{{?index}}"
            app: "{{?app}}"
            connectionTimeout: "{{?connectionTimeout}}"
            raw: true
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: splunk-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjRweCIgaGVpZ2h0PSIyNHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48dGl0bGU+U3BsdW5rIGljb248L3RpdGxlPjxwYXRoIGQ9Ik0yMy4zNDggMTEuOTExbC0yLjI0MS0xLjA5MXYtLjY1TDI0IDExLjYyMXYuNTkzbC0yLjg5MyAxLjQzOHYtLjYzNnptLTUuMzk3IDEuODQxaC0uOTYxdi01LjMxaC45NjF2My4xMTZoLjEwMmwxLjI4LTEuNDgxLjcyMy4zMS0xLjIzIDEuMzE2IDEuNDUzIDEuODA5LS44ODguMzExLTEuNDQtMS45OTZ6bS0yLjU3Ny0uMDAydi0yLjA2OGEyLjY4NSAyLjY4NSAwIDAgMC0uMDI2LS40Mi43OTEuNzkxIDAgMCAwLS4wOS0uMjZjLS4xMTMtLjIwMi0uMzA4LS4zMDQtLjU5LS4zMDRhLjg4OC44ODggMCAwIDAtLjQ2MS4xMTMuNjczLjY3MyAwIDAgMC0uMjg2LjMzIDEuMDEyIDEuMDEyIDAgMCAwLS4wNy4yNjNjLS4wMTIuMTMtLjAxOS4yNjItLjAxNy4zOTV2MS45NWgtLjk2MXYtMy42MTRoLjk2MWwuMDAyLjQ4NWMuMTg1LS4yLjM3My0uMzQ4LjU2Ni0uNDM3LjE5Mi0uMDg5LjQxOC0uMTM0LjY3My0uMTM0LjI4NiAwIC41MjcuMDU4LjcyMS4xNzdhMS4wMTYgMS4wMTYgMCAwIDEgLjQ3NS42NjUgMS45NzIgMS45NzIgMCAwIDEgLjA1NC40NDhjLjAwMi4xLjAwNC4yMi4wMDQuMzU4djIuMDUzem0tNC4xMTUuMDAybC0uMDAyLS40ODVhMS43ODMgMS43ODMgMCAwIDEtLjU2NS40MzcgMS41OTcgMS41OTcgMCAwIDEtLjY3NC4xMzVjLS4yODUgMC0uNTI0LS4wNTctLjcyLS4xN2EuOTcyLjk3MiAwIDAgMS0uNDI1LS41MDQuNzUuNzUgMCAwIDEtLjA1NC0uMTY3IDEuOTE4IDEuOTE4IDAgMCAxLS4wMzMtLjE5OSAyLjAzMyAyLjAzMyAwIDAgMS0uMDE3LS4yNTggMTUuNTE2IDE1LjUxNiAwIDAgMS0uMDA1LS4zNTVWMTAuMTNoLjk1NnYyLjA3Yy0uMDAzLjE0MS4wMDYuMjgyLjAyNi40Mi4wMTUuMDkyLjA0NS4xOC4wOS4yNi4xMTMuMjA0LjMwOC4zMDYuNTkuMzA2LjM2IDAgLjYwNi0uMTUuNzQtLjQ0OS4wMzUtLjA4Mi4wNi0uMTY4LjA3NC0uMjU3LjAxNy0uMTM0LjAyNC0uMjY5LjAyMi0uNDAzdi0xLjk1aC45NTV2My42MjR6TTcuMTg0IDguNDRoLjk1NXY1LjMxaC0uOTU1ek01Ljc1OSAxMS45YzAtLjM5Ni0uMDgtLjcwOC0uMjQtLjkzN2EuNzU5Ljc1OSAwIDAgMC0uNjU3LS4zNDUuODA0LjgwNCAwIDAgMC0uNjkzLjM2NmMtLjE3MS4yNDUtLjI1Ni41NzQtLjI1My45OSAwIC40MDUuMDg0LjcyMy4yNS45NTdhLjc5Ni43OTYgMCAwIDAgLjY5LjM0Ny42ODUuNjg1IDAgMCAwIC40MzMtLjEzNS45ODUuOTg1IDAgMCAwIC4yNzctLjM0Yy4wNzEtLjE0LjEyMS0uMjkyLjE0Ny0uNDQ4LjAzLS4xNTEuMDQzLS4zLjA0Ni0uNDU1bTEuMDEtLjAzNmMuMDAzLjI2Ni0uMDQuNTMyLS4xMjkuNzg2LS4wODIuMjMtLjIwNC40NDEtLjM2NC42MjYtLjMxLjM2MS0uNzY0LjU2Ny0xLjI0LjU2M2ExLjY3IDEuNjcgMCAwIDEtLjMxMy0uMDI4IDEuMDQxIDEuMDQxIDAgMCAxLS4yNzUtLjA5OCAxLjMzIDEuMzMgMCAwIDEtLjI1Ny0uMTc4IDIuMzc5IDIuMzc5IDAgMCAxLS4yNjUtLjI2OHYyLjI5M2gtLjkyOXYtNS40MjVoLjkzbC4wMDQuNTI5Yy4xNjktLjIxMi4zNTMtLjM2OC41NS0uNDY4LjE5Ny0uMS40MjYtLjE1LjY4OC0uMTQ3YTEuNTA5IDEuNTA5IDAgMCAxIDEuMTU2LjUwN2MuMTQ4LjE2Ni4yNTkuMzYxLjMzLjU3MS4wOC4yMzYuMTIuNDg1LjExNS43MzdtLTQuMjEuODlhLjk0Ni45NDYgMCAwIDEtLjEwMi40NDEgMS4wMDcgMS4wMDcgMCAwIDEtLjI4Mi4zNDVjLS4xMy4xLS4yNzUuMTczLS40My4yMmExLjggMS44IDAgMCAxLS41NDYuMDggMS45ODUgMS45ODUgMCAwIDEtLjYzNy0uMDk3IDEuOTY0IDEuOTY0IDAgMCAxLS41NjMtLjMybC4zMTItLjUwNWMuMTUuMTI2LjI4NC4yMTcuNDA1LjI3NS4xMTUuMDU3LjI0LjA4Ny4zNjguMDg3YS41NTcuNTU3IDAgMCAwIC4zNzMtLjEyLjM5Ni4zOTYgMCAwIDAgLjE0LS4zMjIuNDc1LjQ3NSAwIDAgMC0uMTItLjMxOCAxLjMwNiAxLjMwNiAwIDAgMC0uMTg3LS4xNzMgOS4yMzEgOS4yMzEgMCAwIDAtLjMwOC0uMjMyIDYuNzg3IDYuNzg3IDAgMCAxLS4yODEtLjIxIDIuMTEgMi4xMSAwIDAgMS0uMjUyLS4yMzIgMS4wMzkgMS4wMzkgMCAwIDEtLjE4LS4yNzUuODI2LjgyNiAwIDAgMS0uMDY5LS4zNDcuODkzLjg5MyAwIDAgMSAuMDk0LS40MDkuOTM1LjkzNSAwIDAgMSAuMjU1LS4zMTQgMS4yMiAxLjIyIDAgMCAxIC4zOS0uMjAzYy4xNi0uMDUuMzI3LS4wNzQuNDk0LS4wNzIuMTg0IDAgLjM2OC4wMjYuNTQ1LjA3Ni4xNzQuMDUuMzM4LjEyMy40ODguMjE5bC0uMjgyLjQ1NGExLjA1IDEuMDUgMCAwIDAtLjYwOC0uMjAxLjUwNC41MDQgMCAwIDAtLjMyMy4xMDIuMzA3LjMwNyAwIDAgMC0uMTI2LjI1M2MwIC4wOTguMDQxLjE5My4xMTMuMjYuMDc0LjA3OC4yMDMuMTg2LjM4NS4zMjUuMTg1LjEzNi4zMzYuMjUzLjQ1Ny4zNTUuMTA0LjA4NS4yMDIuMTgyLjI4Ni4yODYuMDY1LjA4LjExNS4xNzMuMTQ1LjI3M2EuODA4LjgwOCAwIDAgMSAuMDQ2LjI5OVoiLz48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "SPLUNK"
    camel.apache.org/kamelet.namespace: "Monitoring"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Splunk Source"
    description: Retrieve data from Splunk and outputs in json format.

    required:
      - serverHostname
      - username
      - password
      - query
      - initEarliestTime
    type: object
    properties:
      serverHostname:
        title: Splunk Server Address
        description: The address of your Splunk server.
        type: string
        example: my_server_splunk.com
      serverPort:
        title: Splunk Server Port
        description: The address of your Splunk server.
        type: integer
        default: 8089
      username:
        title: Username
        description: The username to authenticate to Splunk Server.
        type: string
      password:
        title: Password
        description: The password to authenticate to Splunk Server.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      index:
        title: Index
        description: Splunk index to write to.
        type: string
      protocol:
        title: Protocol
        description: Connection Protocol to Splunk server.
        type: string
        default: https
        enum: ["http", "https"]
      source:
        title: Source
        description: The source named field of the data.
        type: string
      sourceType:
        title: Source Type
        description: The source named field of the data.
        type: string
      app:
        title: Splunk App
        description: The app name in Splunk.
        type: string
      connectionTimeout:
        title: Connection Timeout
        description: Timeout in milliseconds when connecting to Splunk server
        type: integer
      count:
        title: Count
        description: The maximum number of entities to return.
        type: integer
      repeat:
        title: Repeat
        description: The maximum number of fires.
        type: integer
      delay:
        title: Delay
        description: The number of milliseconds before the next poll.
        type: integer
      query:
        title: Query
        description: The Splunk query to run.
        type: string
      earliestTime:
        title: Earliest Time
        description: Earliest time of the search time window.
        type: string
        example: "05/17/22 08:35:46:456"
      initEarliestTime:
        title: Init Earliest Time
        description: Initial start offset of the first search.
        type: string
        example: "05/17/22 08:35:46:456"
      latestTime:
        title: Latest Time
        description: Latest time of the search time window.
        type: string
        example: "05/17/22 08:35:46:456"
  types:
    out:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:core"
  - "camel:splunk"
  - "camel:kamelet"
  - "mvn:com.fasterxml.jackson.datatype:jackson-datatype-joda:2.12.5"
  template:
    from:
      uri: "splunk:normal"
      parameters:
        host: "{{serverHostname}}"
        port: "{{serverPort}}"
        username: "{{username}}"
        password: "{{password}}"
        index: "{{?index}}"
        scheme: "{{?protocol}}"
        source: "{{?source}}"
        sourceType: "{{?sourceType}}"
        app: "{{?app}}"
        connectionTimeout: "{{?connectionTimeout}}"
        count: "{{?count}}"
        repeatCount: "{{?repeat}}"
        delay: "{{?delay}}"
        search: "{{?query}}"
        earliestTime: "{{?earliestTime}}"
        initEarliestTime: "{{initEarliestTime}}"
        latestTime: "{{?latestTime}}"
        raw: true
      steps:
      - marshal:
          json:
            library: Jackson
            moduleClassNames: com.fasterxml.jackson.datatype.joda.JodaModule
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: spring-rabbitmq-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjcxcHgiIGhlaWdodD0iMjcxcHgiIHZpZXdCb3g9Ii03LjUgMCAyNzEgMjcxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj48cGF0aCBkPSJNMjQ1LjQ0IDEwOC4zMDhoLTg1LjA5YTcuNzM4IDcuNzM4IDAgMCAxLTcuNzM1LTcuNzM0di04OC42OEMxNTIuNjE1IDUuMzI3IDE0Ny4yOSAwIDE0MC43MjYgMGgtMzAuMzc1Yy02LjU2OCAwLTExLjg5IDUuMzI3LTExLjg5IDExLjg5NHY4OC4xNDNjMCA0LjU3My0zLjY5NyA4LjI5LTguMjcgOC4zMWwtMjcuODg1LjEzM2MtNC42MTIuMDI1LTguMzU5LTMuNzE3LTguMzUtOC4zMjVsLjE3My04OC4yNDFDNTQuMTQ0IDUuMzM3IDQ4LjgxNyAwIDQyLjI0IDBIMTEuODlDNS4zMjEgMCAwIDUuMzI3IDAgMTEuODk0VjI2MC4yMWMwIDUuODM0IDQuNzI2IDEwLjU2IDEwLjU1NSAxMC41NkgyNDUuNDRjNS44MzQgMCAxMC41Ni00LjcyNiAxMC41Ni0xMC41NlYxMTguODY4YzAtNS44MzQtNC43MjYtMTAuNTYtMTAuNTYtMTAuNTZ6bS0zOS45MDIgOTMuMjMzYzAgNy42NDUtNi4xOTggMTMuODQ0LTEzLjg0MyAxMy44NDRIMTY3LjY5Yy03LjY0NiAwLTEzLjg0NC02LjE5OS0xMy44NDQtMTMuODQ0di0yNC4wMDVjMC03LjY0NiA2LjE5OC0xMy44NDQgMTMuODQ0LTEzLjg0NGgyNC4wMDVjNy42NDUgMCAxMy44NDMgNi4xOTggMTMuODQzIDEzLjg0NHYyNC4wMDV6IiBmaWxsPSIjRjYwIi8+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "RabbitMQ"
    camel.apache.org/kamelet.namespace: "Messaging"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "RabbitMQ Sink"
    description: Send data to a RabbitMQ Broker.
    required:
      - host
      - port
      - exchangeName
    type: object
    properties:
      host:
        title: Server Address
        description: RabbitMQ broker address
        type: string
        example: "localhost"
      port:
        title: Server Port
        description: RabbitMQ broker port
        type: integer
        example: 5672
      routingKey:
        title: Routing Key
        description: The routing key to use when binding a consumer queue to the exchange
        type: string
      username:
        title: Username
        description: The username to access the RabbitMQ server
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access the RabbitMQ server
        type: string
        format: password
        x-descriptors:
        - urn:alm:descriptor:com.tectonic.ui:password
        - urn:camel:group:credentials
      exchangeName:
        title: Exchange name
        description: The exchange name determines the exchange the queue is bound to.
        type: string
      queues:
        title: Queue name
        description: The queue to receive messages from
        type: string
      autoDeclareProducer:
        title: Auto Declare Producer
        description: Specifies whether the producer should auto declare binding between exchange, queue and routing key when starting
        type: boolean
        default: false
      vhost:
        title: Virtual Host
        description: The virtual host
        type: string
        default: "/"
      protocol:
        title:  Protocol
        description: The AMQP protocol to use.
        type: string
        enum: ["amqp", "amqps"]
        default: "amqp"
  dependencies:
    - "camel:spring-rabbitmq"
    - "camel:kamelet"
  template:
    beans:
      - name: connectionFactory
        type: "#class:org.springframework.amqp.rabbit.connection.CachingConnectionFactory"
        properties:
          username: '{{?username}}'
          password: '{{?password}}'
          uri: '{{protocol}}://{{host}}:{{port}}'
          virtualHost: "{{vhost}}"
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "spring-rabbitmq://{{exchangeName}}"
          parameters:
            connectionFactory: "#bean:{{connectionFactory}}"
            routingKey: "{{?routingKey}}"
            queues: "{{?queues}}"
            autoDeclareProducer: "{{autoDeclareProducer}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: spring-rabbitmq-source
  annotations:
    camel.apache.org/kamelet.support.level: "Preview"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjcxcHgiIGhlaWdodD0iMjcxcHgiIHZpZXdCb3g9Ii03LjUgMCAyNzEgMjcxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj48cGF0aCBkPSJNMjQ1LjQ0IDEwOC4zMDhoLTg1LjA5YTcuNzM4IDcuNzM4IDAgMCAxLTcuNzM1LTcuNzM0di04OC42OEMxNTIuNjE1IDUuMzI3IDE0Ny4yOSAwIDE0MC43MjYgMGgtMzAuMzc1Yy02LjU2OCAwLTExLjg5IDUuMzI3LTExLjg5IDExLjg5NHY4OC4xNDNjMCA0LjU3My0zLjY5NyA4LjI5LTguMjcgOC4zMWwtMjcuODg1LjEzM2MtNC42MTIuMDI1LTguMzU5LTMuNzE3LTguMzUtOC4zMjVsLjE3My04OC4yNDFDNTQuMTQ0IDUuMzM3IDQ4LjgxNyAwIDQyLjI0IDBIMTEuODlDNS4zMjEgMCAwIDUuMzI3IDAgMTEuODk0VjI2MC4yMWMwIDUuODM0IDQuNzI2IDEwLjU2IDEwLjU1NSAxMC41NkgyNDUuNDRjNS44MzQgMCAxMC41Ni00LjcyNiAxMC41Ni0xMC41NlYxMTguODY4YzAtNS44MzQtNC43MjYtMTAuNTYtMTAuNTYtMTAuNTZ6bS0zOS45MDIgOTMuMjMzYzAgNy42NDUtNi4xOTggMTMuODQ0LTEzLjg0MyAxMy44NDRIMTY3LjY5Yy03LjY0NiAwLTEzLjg0NC02LjE5OS0xMy44NDQtMTMuODQ0di0yNC4wMDVjMC03LjY0NiA2LjE5OC0xMy44NDQgMTMuODQ0LTEzLjg0NGgyNC4wMDVjNy42NDUgMCAxMy44NDMgNi4xOTggMTMuODQzIDEzLjg0NHYyNC4wMDV6IiBmaWxsPSIjRjYwIi8+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "RabbitMQ"
    camel.apache.org/kamelet.namespace: "Messaging"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "RabbitMQ Source"
    description: Receive data from a RabbitMQ Broker.
    required:
      - host
      - port
      - exchangeName
    type: object
    properties:
      host:
        title: Server Address
        description: RabbitMQ broker address
        type: string
        example: "localhost"
      port:
        title: Server Port
        description: RabbitMQ broker port
        type: integer
        example: 5672
      routingKey:
        title: Routing Key
        description: The routing key to use when binding a consumer queue to the exchange
        type: string
      username:
        title: Username
        description: The username to access the RabbitMQ server
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access the RabbitMQ server
        type: string
        format: password
        x-descriptors:
        - urn:alm:descriptor:com.tectonic.ui:password
        - urn:camel:group:credentials
      exchangeName:
        title: Exchange name
        description: The exchange name determines the exchange the queue is bound to.
        type: string
      queues:
        title: Queue name
        description: The queue to receive messages from
        type: string
      autoDeclare:
        title: Auto Declare
        description: The routing key to use when binding a consumer queue to the exchange
        type: boolean
        default: false
      vhost:
        title: Virtual Host
        description: The virtual host
        type: string
        default: "/"
      protocol:
        title:  Protocol
        description: The AMQP protocol to use.
        type: string
        enum: ["amqp", "amqps"]
        default: "amqp"
  dependencies:
    - "camel:spring-rabbitmq"
    - "camel:kamelet"
  template:
    beans:
      - name: connectionFactory
        type: "#class:org.springframework.amqp.rabbit.connection.CachingConnectionFactory"
        properties:
          username: '{{?username}}'
          password: '{{?password}}'
          uri: '{{protocol}}://{{host}}:{{port}}'
          virtualHost: "{{vhost}}"
    from:
      uri: "spring-rabbitmq://{{exchangeName}}"
      parameters:
        connectionFactory: "#bean:{{connectionFactory}}"
        routingKey: "{{?routingKey}}"
        queues: "{{?queues}}"
        autoDeclare: "{{autoDeclare}}"
      steps:
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: sqlserver-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 5976 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "SQL"
    camel.apache.org/kamelet.namespace: "Database"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Microsoft SQL Server Sink"
    description: Send data to a Microsoft SQL Server Database. This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters.
    required:
      - serverName
      - username
      - password
      - query
      - databaseName
    type: object
    properties:
      serverName:
        title: Server Name
        description: The server name for the data source.
        type: string
        example: localhost
      serverPort:
        title: Server Port
        description: The server port for the data source.
        type: string
        default: 1433
      username:
        title: Username
        description: The username to access a secured SQL Server Database.
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access a secured SQL Server Database.
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      query:
        title: Query
        description: The query to execute against the SQL Server Database.
        type: string
        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
      databaseName:
        title: Database Name
        description: The name of the SQL Server Database.
        type: string
      encrypt:
        title: Encrypt Connection
        description: Encrypt the connection to SQL Server.
        type: boolean
        default: false
      trustServerCertificate:
        title: Trust Server Certificate
        description: Trust Server Certificate
        type: boolean
        default: true
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:sql"
  - "mvn:org.apache.commons:commons-dbcp2:2.13.0"
  template:
    beans:
      - name: local-sqlserver-sink
        type: "#class:org.apache.camel.component.sql.SqlComponent"
        properties:
          autowiredEnabled: "false"
      - name: dsBean
        type: "#class:org.apache.commons.dbcp2.BasicDataSource"
        properties:
          username: '{{username}}'
          password: '{{password}}'
          url: 'jdbc:sqlserver://{{serverName}}:{{serverPort}};databaseName={{databaseName}};encrypt={{encrypt}};trustServerCertificate={{trustServerCertificate}};'
          driverClassName: 'com.microsoft.sqlserver.jdbc.SQLServerDriver'
    from:
      uri: "kamelet:source"
      steps:
      - unmarshal:
          json:
            library: Jackson
      - to:
          uri: "{{local-sqlserver-sink}}:{{query}}"
          parameters:
            dataSource: "#bean:{{dsBean}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: sqlserver-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 5976 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "SQL"
    camel.apache.org/kamelet.namespace: "Database"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Microsoft SQL Server Source"
    description: Query data from a Microsoft SQL Server Database.
    required:
      - serverName
      - username
      - password
      - query
      - databaseName
    type: object
    properties:
      serverName:
        title: Server Name
        description: The server name for the data source.
        type: string
        example: localhost
      serverPort:
        title: Server Port
        description: The server port for the data source.
        type: string
        default: 1433
      username:
        title: Username
        description: The username to access a secured SQL Server Database
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The password to access a secured SQL Server Database
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      query:
        title: Query
        description: The query to execute against the SQL Server Database
        type: string
        example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
      databaseName:
        title: Database Name
        description: The name of the Database.
        type: string
      consumedQuery:
        title: Consumed Query
        description: A query to run on a tuple consumed
        type: string
        example: 'DELETE FROM accounts where user_id = :#user_id'
      encrypt:
        title: Encrypt Connection
        description: Encrypt the connection to SQL Server.
        type: boolean
        default: false
      trustServerCertificate:
        title: Trust Server Certificate
        description: Trust Server Certificate
        type: boolean
        default: true
      delay:
        title: Delay
        description: The number of milliseconds before the next poll
        type: integer
        default: 500
  types:
    in:
      mediaType: application/json
  dependencies:
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:sql"
  - "mvn:org.apache.commons:commons-dbcp2:2.13.0"
  template:
    beans:
      - name: local-sqlserver-source
        type: "#class:org.apache.camel.component.sql.SqlComponent"
        properties:
          autowiredEnabled: "false"
      - name: dsBean
        type: "#class:org.apache.commons.dbcp2.BasicDataSource"
        properties:
          username: '{{username}}'
          password: '{{password}}'
          url: 'jdbc:sqlserver://{{serverName}}:{{serverPort}};databaseName={{databaseName}};encrypt={{encrypt}};trustServerCertificate={{trustServerCertificate}};'
          driverClassName: 'com.microsoft.sqlserver.jdbc.SQLServerDriver'
    from:
      uri: "{{local-sqlserver-source}}:{{query}}"
      parameters:
        dataSource: "#bean:{{dsBean}}"
        onConsume: "{{?consumedQuery}}"
        delay: "{{delay}}"
      steps:
      - marshal:
          json:
            library: Jackson
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: ssh-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 4556 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "SSH"
    camel.apache.org/kamelet.namespace: "File"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "SSH Sink"
    description: Send command through SSH session.
    required:
      - connectionHost
      - connectionPort
      - username
      - password
    type: object
    properties:
      connectionHost:
        title: Connection Host
        description: The SSH Host
        type: string
      connectionPort:
        title: Connection Port
        description: The SSH Port
        type: string
        default: 22
      username:
        title: Username
        description: The SSH username to use
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The SSH password to use
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  types:
    in:
      mediaType: text/plain
    out:
      mediaType: text/plain
  dependencies:
    - "camel:ssh"
    - "camel:gson"
    - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to: 
          uri: "ssh://{{connectionHost}}:{{connectionPort}}"
          parameters:
            username: "{{username}}"
            password: "{{password}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: ssh-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,[encoded data, 4556 characters]"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "SSH"
    camel.apache.org/kamelet.namespace: "File"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "SSH Source"
    description: Receive data from SSH session.
    required:
      - connectionHost
      - connectionPort
      - username
      - password
      - pollCommand
    type: object
    properties:
      connectionHost:
        title: Connection Host
        description: The SSH Host
        type: string
      connectionPort:
        title: Connection Port
        description: The SSH Port
        type: string
        default: 22
      username:
        title: Username
        description: The SSH username to use
        type: string
        x-descriptors:
        - urn:camel:group:credentials
      password:
        title: Password
        description: The SSH password to use
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      delay:
        title: Delay
        description: The number of milliseconds before the next poll
        type: integer
        default: 500
      pollCommand:
        title: Poll Command
        description: The command to run while polling the SSH session
        type: string
        example: date
  dependencies:
    - "camel:ssh"
    - "camel:kamelet"
  template:
    from:
      uri: "ssh://{{connectionHost}}:{{connectionPort}}"
      parameters:
        username: "{{username}}"
        password: "{{password}}"
        delay: "{{delay}}"
        pollCommand: "{{pollCommand}}"
      steps:
      - convertBodyTo:
          type: "java.lang.String"
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: string-template-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "String Template Action"
    description: Apply a String Template.
    required:
      - template
    type: object
    properties:
      template:
        title: Template
        description: The inline template
        type: string
        example: "file:////template.tm"
        pattern: "^(http|https|file|classpath|ref|bean)://.*"
  dependencies:
  - "camel:stringtemplate"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "string-template:"
          parameters:
            resourceUri: "{{template}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: telegram-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNDAgMjQwIj48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImEiIHgxPSIuNjY3IiB4Mj0iLjQxNyIgeTE9Ii4xNjciIHkyPSIuNzUiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzM3YWVlMiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFlOTZjOCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iLjY2IiB4Mj0iLjg1MSIgeTE9Ii40MzciIHkyPSIuODAyIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNlZmY3ZmMiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmYiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48Y2lyY2xlIGN4PSIxMjAiIGN5PSIxMjAiIHI9IjEyMCIgZmlsbD0idXJsKCNhKSIvPjxwYXRoIGZpbGw9IiNjOGRhZWEiIGQ9Ik05OCAxNzVjLTMuODg4IDAtMy4yMjctMS40NjgtNC41NjgtNS4xN0w4MiAxMzIuMjA3IDE3MCA4MCIvPjxwYXRoIGZpbGw9IiNhOWM5ZGQiIGQ9Ik05OCAxNzVjMyAwIDQuMzI1LTEuMzcyIDYtM2wxNi0xNS41NTgtMTkuOTU4LTEyLjAzNSIvPjxwYXRoIGZpbGw9InVybCgjYikiIGQ9Ik0xMDAuMDQgMTQ0LjQxbDQ4LjM2IDM1LjcyOWM1LjUxOSAzLjA0NSA5LjUwMSAxLjQ2OCAxMC44NzYtNS4xMjNsMTkuNjg1LTkyLjc2M2MyLjAxNS04LjA4LTMuMDgtMTEuNzQ2LTguMzYtOS4zNDlsLTExNS41OSA0NC41NzFjLTcuODkgMy4xNjUtNy44NDMgNy41NjctMS40MzggOS41MjhsMjkuNjYzIDkuMjU5IDY4LjY3My00My4zMjVjMy4yNDItMS45NjYgNi4yMTgtLjkxIDMuNzc2IDEuMjU4Ii8+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Telegram"
    camel.apache.org/kamelet.namespace: "Social"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Telegram Sink"
    description: Send a message to a Telegram chat by using your Telegram bot as sender.
    required:
      - authorizationToken
    type: object
    properties:
      authorizationToken:
        title: Token
        description: "The token to access your bot on Telegram. You you can obtain it from the Telegram @botfather."
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      chatId:
        title: Chat ID
        description: The Chat ID to where you want to send messages by default.
        type: string
  types:
    out:
      mediaType: application/json
  dependencies:
    - "camel:core"
    - "camel:jackson"
    - "camel:kamelet"
    - "camel:telegram"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - choice:
          when:
          - simple: "${header[Content-Type]} == 'image/png'"
            steps:
            - convertBodyTo:
                type: "byte[]"
            - setHeader:
                name: CamelTelegramMediaType
                constant: PHOTO_PNG
          - simple: "${header[Content-Type]} == 'image/jpeg'"
            steps:
            - convertBodyTo:
                type: "byte[]"
            - setHeader:
                name: CamelTelegramMediaType
                constant: PHOTO_JPG
          otherwise:
            steps:
            - convertBodyTo:
                type: "java.lang.String"
      - choice:
          when:
          - simple: "${header[text]}"
            steps:
            - setHeader:
                name: CamelTelegramMediaTitleCaption
                simple: "${header[text]}"
          - simple: "${header[ce-text]}"
            steps:
            - setHeader:
                name: CamelTelegramMediaTitleCaption
                simple: "${header[ce-text]}"
      - choice:
          when:
          - simple: "${header[chat-id]}"
            steps:
            - setHeader:
                name: CamelTelegramChatId
                simple: "${header[chat-id]}"
          - simple: "${header[ce-chatid]}"
            steps:
            - setHeader:
                name: CamelTelegramChatId
                simple: "${header[ce-chatid]}"
      - to:
          uri: "telegram:bots"
          parameters:
            authorizationToken: "{{authorizationToken}}"
            chatId: "{{?chatId}}"
      - marshal:
          json: {}
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: telegram-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNDAgMjQwIj48ZGVmcz48bGluZWFyR3JhZGllbnQgaWQ9ImEiIHgxPSIuNjY3IiB4Mj0iLjQxNyIgeTE9Ii4xNjciIHkyPSIuNzUiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzM3YWVlMiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzFlOTZjOCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiB4MT0iLjY2IiB4Mj0iLjg1MSIgeTE9Ii40MzciIHkyPSIuODAyIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNlZmY3ZmMiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmYiLz48L2xpbmVhckdyYWRpZW50PjwvZGVmcz48Y2lyY2xlIGN4PSIxMjAiIGN5PSIxMjAiIHI9IjEyMCIgZmlsbD0idXJsKCNhKSIvPjxwYXRoIGZpbGw9IiNjOGRhZWEiIGQ9Ik05OCAxNzVjLTMuODg4IDAtMy4yMjctMS40NjgtNC41NjgtNS4xN0w4MiAxMzIuMjA3IDE3MCA4MCIvPjxwYXRoIGZpbGw9IiNhOWM5ZGQiIGQ9Ik05OCAxNzVjMyAwIDQuMzI1LTEuMzcyIDYtM2wxNi0xNS41NTgtMTkuOTU4LTEyLjAzNSIvPjxwYXRoIGZpbGw9InVybCgjYikiIGQ9Ik0xMDAuMDQgMTQ0LjQxbDQ4LjM2IDM1LjcyOWM1LjUxOSAzLjA0NSA5LjUwMSAxLjQ2OCAxMC44NzYtNS4xMjNsMTkuNjg1LTkyLjc2M2MyLjAxNS04LjA4LTMuMDgtMTEuNzQ2LTguMzYtOS4zNDlsLTExNS41OSA0NC41NzFjLTcuODkgMy4xNjUtNy44NDMgNy41NjctMS40MzggOS41MjhsMjkuNjYzIDkuMjU5IDY4LjY3My00My4zMjVjMy4yNDItMS45NjYgNi4yMTgtLjkxIDMuNzc2IDEuMjU4Ii8+PC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Telegram"
    camel.apache.org/kamelet.namespace: "Social"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Telegram Source"
    description: Receive all messages that people send to your Telegram bot.

    required:
      - authorizationToken
    type: object
    properties:
      authorizationToken:
        title: Token
        description: "The token to access your bot on Telegram. You can obtain it from the Telegram @botfather."
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  types:
    out:
      mediaType: application/json
  dependencies:
    - "camel:jackson"
    - "camel:kamelet"
    - "camel:telegram"
    - "camel:core"
  template:
    from:
      uri: telegram:bots
      parameters:
        authorizationToken: "{{authorizationToken}}"
      steps:
      - setHeader:
          name: chat-id
          simple: "${header[CamelTelegramChatId]}"
      - setHeader:
          name: ce-chatid
          simple: "${header[CamelTelegramChatId]}"
      - marshal:
          json: {}
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: throttle-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "EIP"
spec:
  definition:
    title: "Throttle Action"
    description: "The Throttle action allows you to ensure that a specific sink does not get overloaded."
    required:
      - messages
    properties:
      messages:
        title: Messages Number
        description: The number of messages to send in the time period set
        type: integer
        example: 10
      timePeriod:
        title: Time Period
        description: Sets the time period during which the maximum request count is valid for, in milliseconds
        type: string
        default: "1000"
    type: object
  dependencies:
    - "camel:core"
    - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - throttle:
          constant: "{{messages}}"
          timePeriodMillis: "{{timePeriod}}"
---

apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: timer-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gU3ZnIFZlY3RvciBJY29ucyA6IGh0dHA6Ly93d3cub25saW5ld2ViZm9udHMuY29tL2ljb24gLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTAwMCAxMDAwIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMDAwIDEwMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPG1ldGFkYXRhPiBTdmcgVmVjdG9yIEljb25zIDogaHR0cDovL3d3dy5vbmxpbmV3ZWJmb250cy5jb20vaWNvbiA8L21ldGFkYXRhPg0KPGc+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsNTExLjAwMDAwMCkgc2NhbGUoMC4xMDAwMDAsLTAuMTAwMDAwKSI+PHBhdGggZD0iTTM4ODguMSw0Nzc0Ljl2LTIzNS4xaDQxMS40aDQxNC4zbC04LjgtMzI5LjFsLTguOC0zMzJsLTExNy41LTguOGMtMjI5LjItMTQuNy02MjAtOTkuOS05MjUuNi0xOTYuOUMyMjU3LjQsMzIyMC42LDExNjcuMiwyMDY1LjgsODAyLjksNjQ5LjZjLTUxMS4zLTE5ODYuMywzODQuOS00MDAyLDIyMDYuNy00OTY1LjhjMzAyLjYtMTYxLjYsNzU4LjEtMzIwLjIsMTE1NC44LTQwNS41YzQyNi4xLTkxLjEsMTI1MS43LTkxLjEsMTY4MC43LDBjMTc2OC45LDM4MiwzMDQ0LjEsMTY1Ny4yLDM0MjYuMSwzNDI2LjFjOTEuMSw0MjYuMSw5MS4xLDEyNTQuNiwwLDE2NzcuOGMtNDIwLjIsMTk0Mi4yLTE5MzYuNCwzMzAyLjYtMzg5MC4zLDM0OTYuNmwtMTk5LjgsMjAuNnYzMjAuM3YzMjAuM2g0MTEuNGg0MTEuNHYyMzUuMVY1MDEwSDQ5NDUuOUgzODg4LjFWNDc3NC45eiBNNTc1My45LDMzNDkuOWM3NzguNy0xNjEuNiwxNDE5LjItNTA4LjMsMTk4My40LTEwNzIuNWM1NjQuMi01NjEuMiw4ODcuNC0xMTU3LjcsMTA2MC43LTE5NDIuMmM5OS45LTQzNy44LDk5LjktMTE0MywzLTE1ODAuOEM4NTYzLTIzMDYuNCw3OTY2LjUtMzE1OC41LDcwNDMuOS0zNzUyYy0zMzUtMjE0LjUtNzg3LjUtMzk2LjctMTI0OC44LTQ5OS41Yy00MzcuOC05Ny0xMTQzLTk3LTE1ODAuOCwyLjljLTc4NC41LDE3My4zLTEzODEsNDk2LjYtMTk0Mi4yLDEwNjAuN2MtNTcwLDU2Ny4xLTkwNy45LDExOTguOC0xMDc4LjQsMTk5OC4xYy03My41LDM0Ni43LTczLjUsMTEyMi40LDAsMTQ2OS4yYzE3MC40LDc5OS4yLDUwOC4zLDE0MzEsMTA3OC40LDE5OThDMjg5NSwyOTAwLjMsMzYzOC40LDMyNzMuNSw0NDkzLjQsMzM5MUM0Nzc4LjQsMzQzMi4xLDU0NzQuOCwzNDA4LjYsNTc1My45LDMzNDkuOXoiLz48cGF0aCBkPSJNNDcxMC44LDEzNzUuM1YyMDUuOUw0NTUyLjIsNjcuOGMtMzE3LjMtMjc5LjEtMzQwLjgtNjc4LjctNTUuOC05OTMuMWMyODcuOS0zMjAuMyw2OTMuNC0zMTcuMywxMDEzLjcsNS45bDE3MC40LDE3MC40aDEwNDMuMWgxMDQzLjFWLTUxNFYtMjc5SDY3MjkuNUg1NjkyLjJsLTQ5LjksMTE0LjZjLTU4LjgsMTMyLjItMjUyLjcsMzE3LjMtMzc2LjEsMzYxLjRsLTg1LjIsMjkuNHYxMTU3Ljd2MTE1Ny43aC0yMzUuMWgtMjM1LjFWMTM3NS4zeiBNNTE2Ni4zLTI5My42YzE0Ni45LTE0NCw0NC4xLTM5Ni43LTE2MS42LTM5Ni43Yy01NS44LDAtMTE3LjUsMjYuNC0xNjEuNiw3My40Yy00Nyw0NC4xLTczLjUsMTA1LjgtNzMuNSwxNjEuNnMyNi40LDExNy41LDczLjUsMTYxLjZjNDQuMSw0NywxMDUuOCw3My41LDE2MS42LDczLjVDNTA2MC41LTIyMC4yLDUxMjIuMi0yNDYuNyw1MTY2LjMtMjkzLjZ6Ii8+PC9nPjwvZz4NCjwvc3ZnPg==
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Timer"
    camel.apache.org/kamelet.namespace: "Scheduling"
  labels:
    camel.apache.org/kamelet.type: "source"
    camel.apache.org/kamelet.verified: "true"
spec:
  definition:
    title: "Timer Source"
    description: Produces periodic messages with a custom payload.
    required:
      - message
    type: object
    properties:
      period:
        title: Period
        description: "The interval (in milliseconds) to wait between producing the next message."
        type: integer
        default: 1000
      message:
        title: Message
        description: The message to generate.
        type: string
        example: hello world
      contentType:
        title: Content Type
        description: The content type of the generated message.
        type: string
        default: text/plain
      repeatCount:
        title: Repeat Count
        description: Specifies a maximum limit of number of fires
        type: integer
  dependencies:
    - "camel:core"
    - "camel:timer"
    - "camel:kamelet"
  template:
    from:
      uri: timer:tick
      parameters:
        period: "{{period}}"
        repeatCount: "{{?repeatCount}}"
      steps:
        - setBody:
            constant: "{{message}}"
        - setHeader:
            name: "Content-Type"
            constant: "{{contentType}}"
        - to: kamelet:sink
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: timestamp-router-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Kafka"
spec:
  definition:
    title: "Timestamp Router Action"
    description: "Update the topic field as a function of the original topic name and the record timestamp."
    properties:
      topicFormat:
        title: Topic Format
        description: Format string which can contain '$[topic]' and '$[timestamp]' as placeholders for the topic and timestamp, respectively.
        type: string
        default: "topic-$[timestamp]"
      timestampFormat:
        title: Timestamp Format
        description: Format string for the timestamp that is compatible with java.text.SimpleDateFormat.
        type: string
        default: "yyyyMMdd"
      timestampHeaderName:
        title: Timestamp Header Name
        description: The name of the header containing a timestamp
        type: string
        default: "kafka.TIMESTAMP"
    type: object
  dependencies:
  - "camel:kamelet"
  - "camel:core"
  - "camel:kafka"
  template:
    from:
      uri: kamelet:source
      steps:
      - setProperty:
          name: "topicFormat"
          constant: "{{topicFormat}}"
      - setProperty:
          name: "timestampFormat"
          constant: "{{timestampFormat}}"
      - setProperty:
          name: "timestampHeaderName"
          constant: "{{timestampHeaderName}}"
      - bean: "org.apache.camel.component.kafka.transform.TimestampRouter"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: topic-name-matches-filter-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Kafka"
spec:
  definition:
    title: "Kafka Topic Name Matches Filter Action"
    description: "Filter based on kafka topic value compared to regex."
    required:
      - regex
    properties:
      regex:
        title: Regex 
        description: The Regex to Evaluate against the Kafka topic name
        type: string
    type: object
  dependencies:
  - "camel:core"
  - "camel:kamelet"
  template:
    from:
      uri: kamelet:source
      steps:
      - filter:
          simple: "${header[kafka.TOPIC]} !regex '{{regex}}'"
          steps:
            - stop: {}
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: twitter-directmessage-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjIwOXB4IiB2aWV3Qm94PSIwIDAgMjU2IDIwOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+CiAgICA8Zz4KICAgICAgICA8cGF0aCBkPSJNMjU2LDI1LjQ1MDAyNTkgQzI0Ni41ODA4NDEsMjkuNjI3MjY3MiAyMzYuNDU4NDUxLDMyLjQ1MDQ4NjggMjI1LjgzNDE1NiwzMy43MjAyMzMzIEMyMzYuNjc4NTAzLDI3LjIxOTgwNTMgMjQ1LjAwNTgzLDE2LjkyNjk5MjkgMjQ4LjkyNzQzNyw0LjY2MzA3Njg1IEMyMzguNzc5NzY1LDEwLjY4MTI2MzMgMjI3LjUzOTMyNSwxNS4wNTIzMzc2IDIxNS41NzU5OSwxNy40MDgyOTggQzIwNS45OTQ4MzUsNy4yMDA2OTcxIDE5Mi4zNDUwNiwwLjgyMiAxNzcuMjM5MTk3LDAuODIyIEMxNDguMjMyNjA1LDAuODIyIDEyNC43MTYwNzYsMjQuMzM3NTkzMSAxMjQuNzE2MDc2LDUzLjM0MjMxMTYgQzEyNC43MTYwNzYsNTcuNDU4Njg3NSAxMjUuMTgxNDYyLDYxLjQ2NzM3ODQgMTI2LjA3NjY1Miw2NS4zMTEyNjQ0IEM4Mi40MjU4Mzg1LDYzLjEyMTA0NTMgNDMuNzI1NzI1Miw0Mi4yMTE0MjkgMTcuODIxMzk4LDEwLjQzNTkyODggQzEzLjMwMDUwMTEsMTguMTkyOTkzOCAxMC43MTA0NDMsMjcuMjE1MTIzNCAxMC43MTA0NDMsMzYuODQwMjg4OSBDMTAuNzEwNDQzLDU1LjA2MTUyNiAxOS45ODM1MjU0LDcxLjEzNzQ5MDcgMzQuMDc2MjEzNSw4MC41NTU3MTM3IEMyNS40NjYwOTYxLDgwLjI4MzIyMzkgMTcuMzY4MTg0Niw3Ny45MjA3MDg4IDEwLjI4NjI1NzcsNzMuOTg2OTI5MiBDMTAuMjgyNTEyMiw3NC4yMDYwNDQ4IDEwLjI4MjUxMjIsNzQuNDI2MDk2NyAxMC4yODI1MTIyLDc0LjY0NzA4NSBDMTAuMjgyNTEyMiwxMDAuMDk0NDUzIDI4LjM4NjcwMDMsMTIxLjMyMjQ0MyA1Mi40MTM1NjMsMTI2LjE0NjczIEM0OC4wMDU5Njk1LDEyNy4zNDcxODQgNDMuMzY2MTUwOSwxMjcuOTg4NjEyIDM4LjU3NTU3MzQsMTI3Ljk4ODYxMiBDMzUuMTkxNDU1NCwxMjcuOTg4NjEyIDMxLjkwMDk3NjYsMTI3LjY1OTkzOCAyOC42OTQ3NzMsMTI3LjA0NjYwMiBDMzUuMzc3Nzk3MywxNDcuOTEzMTQ1IDU0Ljc3NDIwNTMsMTYzLjA5NzY2NSA3Ny43NTY5OTE4LDE2My41MjE4NSBDNTkuNzgyMDI1NywxNzcuNjA3OTgzIDM3LjEzNTQwMzYsMTg2LjAwNDYwNCAxMi41Mjg5MTQ3LDE4Ni4wMDQ2MDQgQzguMjg5ODcxNjEsMTg2LjAwNDYwNCA0LjEwODg4NDc0LDE4NS43NTY0NiAwLDE4NS4yNzE0MDkgQzIzLjI0MzEwMzMsMjAwLjE3MzEzOSA1MC44NTA3MjYxLDIwOC44Njc1MzIgODAuNTEwOTE4NSwyMDguODY3NTMyIEMxNzcuMTE2NTI5LDIwOC44Njc1MzIgMjI5Ljk0Mzk3NywxMjguODM2OTgyIDIyOS45NDM5NzcsNTkuNDMyNjAwMiBDMjI5Ljk0Mzk3Nyw1Ny4xNTUyOTY4IDIyOS44OTM0MTIsNTQuODkwMTY2NCAyMjkuNzkyMjgyLDUyLjYzODE0NTQgQzI0MC4wNTMyNTcsNDUuMjMzMTYzNSAyNDguOTU4MzM4LDM1Ljk4MjU1NDUgMjU2LDI1LjQ1MDAyNTkiIGZpbGw9IiM1NWFjZWUiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Twitter"
    camel.apache.org/kamelet.namespace: "Social"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Twitter Direct Message Source"
    description: Allows to get all direct messages for your Twitter account.
    required:
    - user
    - apiKey
    - apiKeySecret
    - accessToken
    - accessTokenSecret
    type: object
    properties:
      user:
        title: User
        description: The user we want to read the direct messages
        type: string
        example: "ApacheCamel"
      apiKey:
        title: API Key
        description: The API Key from the Twitter application in the developer portal
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      apiKeySecret:
        title: API Key Secret
        description: The API Key Secret from the Twitter application in the developer portal
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      accessToken:
        title: Access Token
        description: The Access Token from the Twitter application in the developer portal
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      accessTokenSecret:
        title: Access Token Secret
        description: The Access Token Secret from the Twitter application in the developer portal
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  types:
    out:
      mediaType: application/json
  dependencies:
    - "camel:jackson"
    - "camel:twitter"
    - "camel:kamelet"
  template:
    from:
      uri: "twitter-directmessage:{{user}}"
      parameters:
        accessToken: "{{accessToken}}"
        accessTokenSecret: "{{accessTokenSecret}}"
        consumerKey: "{{apiKey}}"
        consumerSecret: "{{apiKeySecret}}"
      steps:
      - marshal:
          json: {}
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: twitter-search-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjIwOXB4IiB2aWV3Qm94PSIwIDAgMjU2IDIwOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+CiAgICA8Zz4KICAgICAgICA8cGF0aCBkPSJNMjU2LDI1LjQ1MDAyNTkgQzI0Ni41ODA4NDEsMjkuNjI3MjY3MiAyMzYuNDU4NDUxLDMyLjQ1MDQ4NjggMjI1LjgzNDE1NiwzMy43MjAyMzMzIEMyMzYuNjc4NTAzLDI3LjIxOTgwNTMgMjQ1LjAwNTgzLDE2LjkyNjk5MjkgMjQ4LjkyNzQzNyw0LjY2MzA3Njg1IEMyMzguNzc5NzY1LDEwLjY4MTI2MzMgMjI3LjUzOTMyNSwxNS4wNTIzMzc2IDIxNS41NzU5OSwxNy40MDgyOTggQzIwNS45OTQ4MzUsNy4yMDA2OTcxIDE5Mi4zNDUwNiwwLjgyMiAxNzcuMjM5MTk3LDAuODIyIEMxNDguMjMyNjA1LDAuODIyIDEyNC43MTYwNzYsMjQuMzM3NTkzMSAxMjQuNzE2MDc2LDUzLjM0MjMxMTYgQzEyNC43MTYwNzYsNTcuNDU4Njg3NSAxMjUuMTgxNDYyLDYxLjQ2NzM3ODQgMTI2LjA3NjY1Miw2NS4zMTEyNjQ0IEM4Mi40MjU4Mzg1LDYzLjEyMTA0NTMgNDMuNzI1NzI1Miw0Mi4yMTE0MjkgMTcuODIxMzk4LDEwLjQzNTkyODggQzEzLjMwMDUwMTEsMTguMTkyOTkzOCAxMC43MTA0NDMsMjcuMjE1MTIzNCAxMC43MTA0NDMsMzYuODQwMjg4OSBDMTAuNzEwNDQzLDU1LjA2MTUyNiAxOS45ODM1MjU0LDcxLjEzNzQ5MDcgMzQuMDc2MjEzNSw4MC41NTU3MTM3IEMyNS40NjYwOTYxLDgwLjI4MzIyMzkgMTcuMzY4MTg0Niw3Ny45MjA3MDg4IDEwLjI4NjI1NzcsNzMuOTg2OTI5MiBDMTAuMjgyNTEyMiw3NC4yMDYwNDQ4IDEwLjI4MjUxMjIsNzQuNDI2MDk2NyAxMC4yODI1MTIyLDc0LjY0NzA4NSBDMTAuMjgyNTEyMiwxMDAuMDk0NDUzIDI4LjM4NjcwMDMsMTIxLjMyMjQ0MyA1Mi40MTM1NjMsMTI2LjE0NjczIEM0OC4wMDU5Njk1LDEyNy4zNDcxODQgNDMuMzY2MTUwOSwxMjcuOTg4NjEyIDM4LjU3NTU3MzQsMTI3Ljk4ODYxMiBDMzUuMTkxNDU1NCwxMjcuOTg4NjEyIDMxLjkwMDk3NjYsMTI3LjY1OTkzOCAyOC42OTQ3NzMsMTI3LjA0NjYwMiBDMzUuMzc3Nzk3MywxNDcuOTEzMTQ1IDU0Ljc3NDIwNTMsMTYzLjA5NzY2NSA3Ny43NTY5OTE4LDE2My41MjE4NSBDNTkuNzgyMDI1NywxNzcuNjA3OTgzIDM3LjEzNTQwMzYsMTg2LjAwNDYwNCAxMi41Mjg5MTQ3LDE4Ni4wMDQ2MDQgQzguMjg5ODcxNjEsMTg2LjAwNDYwNCA0LjEwODg4NDc0LDE4NS43NTY0NiAwLDE4NS4yNzE0MDkgQzIzLjI0MzEwMzMsMjAwLjE3MzEzOSA1MC44NTA3MjYxLDIwOC44Njc1MzIgODAuNTEwOTE4NSwyMDguODY3NTMyIEMxNzcuMTE2NTI5LDIwOC44Njc1MzIgMjI5Ljk0Mzk3NywxMjguODM2OTgyIDIyOS45NDM5NzcsNTkuNDMyNjAwMiBDMjI5Ljk0Mzk3Nyw1Ny4xNTUyOTY4IDIyOS44OTM0MTIsNTQuODkwMTY2NCAyMjkuNzkyMjgyLDUyLjYzODE0NTQgQzI0MC4wNTMyNTcsNDUuMjMzMTYzNSAyNDguOTU4MzM4LDM1Ljk4MjU1NDUgMjU2LDI1LjQ1MDAyNTkiIGZpbGw9IiM1NWFjZWUiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Twitter"
    camel.apache.org/kamelet.namespace: "Social"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Twitter Search Source"
    description: Allows to get all tweets on particular keywords from Twitter.
    required:
    - keywords
    - apiKey
    - apiKeySecret
    - accessToken
    - accessTokenSecret
    type: object
    properties:
      keywords:
        title: Keywords
        description: The keywords to use in the Twitter search (Supports Twitter standard operators)
        type: string
        example: "Apache Camel"
      apiKey:
        title: API Key
        description: The API Key from the Twitter application in the developer portal
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      apiKeySecret:
        title: API Key Secret
        description: The API Key Secret from the Twitter application in the developer portal
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      accessToken:
        title: Access Token
        description: The Access Token from the Twitter application in the developer portal
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      accessTokenSecret:
        title: Access Token Secret
        description: The Access Token Secret from the Twitter application in the developer portal
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  types:
    out:
      mediaType: application/json
  dependencies:
    - "camel:jackson"
    - "camel:twitter"
    - "camel:kamelet"
  template:
    from:
      uri: "twitter-search:{{keywords}}"
      parameters:
        accessToken: "{{accessToken}}"
        accessTokenSecret: "{{accessTokenSecret}}"
        consumerKey: "{{apiKey}}"
        consumerSecret: "{{apiKeySecret}}"
      steps:
      - marshal:
          json: {}
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: twitter-timeline-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjIwOXB4IiB2aWV3Qm94PSIwIDAgMjU2IDIwOSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+CiAgICA8Zz4KICAgICAgICA8cGF0aCBkPSJNMjU2LDI1LjQ1MDAyNTkgQzI0Ni41ODA4NDEsMjkuNjI3MjY3MiAyMzYuNDU4NDUxLDMyLjQ1MDQ4NjggMjI1LjgzNDE1NiwzMy43MjAyMzMzIEMyMzYuNjc4NTAzLDI3LjIxOTgwNTMgMjQ1LjAwNTgzLDE2LjkyNjk5MjkgMjQ4LjkyNzQzNyw0LjY2MzA3Njg1IEMyMzguNzc5NzY1LDEwLjY4MTI2MzMgMjI3LjUzOTMyNSwxNS4wNTIzMzc2IDIxNS41NzU5OSwxNy40MDgyOTggQzIwNS45OTQ4MzUsNy4yMDA2OTcxIDE5Mi4zNDUwNiwwLjgyMiAxNzcuMjM5MTk3LDAuODIyIEMxNDguMjMyNjA1LDAuODIyIDEyNC43MTYwNzYsMjQuMzM3NTkzMSAxMjQuNzE2MDc2LDUzLjM0MjMxMTYgQzEyNC43MTYwNzYsNTcuNDU4Njg3NSAxMjUuMTgxNDYyLDYxLjQ2NzM3ODQgMTI2LjA3NjY1Miw2NS4zMTEyNjQ0IEM4Mi40MjU4Mzg1LDYzLjEyMTA0NTMgNDMuNzI1NzI1Miw0Mi4yMTE0MjkgMTcuODIxMzk4LDEwLjQzNTkyODggQzEzLjMwMDUwMTEsMTguMTkyOTkzOCAxMC43MTA0NDMsMjcuMjE1MTIzNCAxMC43MTA0NDMsMzYuODQwMjg4OSBDMTAuNzEwNDQzLDU1LjA2MTUyNiAxOS45ODM1MjU0LDcxLjEzNzQ5MDcgMzQuMDc2MjEzNSw4MC41NTU3MTM3IEMyNS40NjYwOTYxLDgwLjI4MzIyMzkgMTcuMzY4MTg0Niw3Ny45MjA3MDg4IDEwLjI4NjI1NzcsNzMuOTg2OTI5MiBDMTAuMjgyNTEyMiw3NC4yMDYwNDQ4IDEwLjI4MjUxMjIsNzQuNDI2MDk2NyAxMC4yODI1MTIyLDc0LjY0NzA4NSBDMTAuMjgyNTEyMiwxMDAuMDk0NDUzIDI4LjM4NjcwMDMsMTIxLjMyMjQ0MyA1Mi40MTM1NjMsMTI2LjE0NjczIEM0OC4wMDU5Njk1LDEyNy4zNDcxODQgNDMuMzY2MTUwOSwxMjcuOTg4NjEyIDM4LjU3NTU3MzQsMTI3Ljk4ODYxMiBDMzUuMTkxNDU1NCwxMjcuOTg4NjEyIDMxLjkwMDk3NjYsMTI3LjY1OTkzOCAyOC42OTQ3NzMsMTI3LjA0NjYwMiBDMzUuMzc3Nzk3MywxNDcuOTEzMTQ1IDU0Ljc3NDIwNTMsMTYzLjA5NzY2NSA3Ny43NTY5OTE4LDE2My41MjE4NSBDNTkuNzgyMDI1NywxNzcuNjA3OTgzIDM3LjEzNTQwMzYsMTg2LjAwNDYwNCAxMi41Mjg5MTQ3LDE4Ni4wMDQ2MDQgQzguMjg5ODcxNjEsMTg2LjAwNDYwNCA0LjEwODg4NDc0LDE4NS43NTY0NiAwLDE4NS4yNzE0MDkgQzIzLjI0MzEwMzMsMjAwLjE3MzEzOSA1MC44NTA3MjYxLDIwOC44Njc1MzIgODAuNTEwOTE4NSwyMDguODY3NTMyIEMxNzcuMTE2NTI5LDIwOC44Njc1MzIgMjI5Ljk0Mzk3NywxMjguODM2OTgyIDIyOS45NDM5NzcsNTkuNDMyNjAwMiBDMjI5Ljk0Mzk3Nyw1Ny4xNTUyOTY4IDIyOS44OTM0MTIsNTQuODkwMTY2NCAyMjkuNzkyMjgyLDUyLjYzODE0NTQgQzI0MC4wNTMyNTcsNDUuMjMzMTYzNSAyNDguOTU4MzM4LDM1Ljk4MjU1NDUgMjU2LDI1LjQ1MDAyNTkiIGZpbGw9IiM1NWFjZWUiPjwvcGF0aD4KICAgIDwvZz4KPC9zdmc+"
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Twitter"
    camel.apache.org/kamelet.namespace: "Social"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Twitter Timeline Source"
    description: Allows to get tweets from the timeline of a specific user from Twitter.
    required:
    - user
    - apiKey
    - apiKeySecret
    - accessToken
    - accessTokenSecret
    type: object
    properties:
      user:
        title: User
        description: The user we want to read the timeline
        type: string
        example: "ApacheCamel"
      apiKey:
        title: API Key
        description: The API Key from the Twitter application in the developer portal
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      apiKeySecret:
        title: API Key Secret
        description: The API Key Secret from the Twitter application in the developer portal
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      accessToken:
        title: Access Token
        description: The Access Token from the Twitter application in the developer portal
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
      accessTokenSecret:
        title: Access Token Secret
        description: The Access Token Secret from the Twitter application in the developer portal
        type: string
        format: password
        x-descriptors:
        - urn:camel:group:credentials
  types:
    out:
      mediaType: application/json
  dependencies:
    - "camel:jackson"
    - "camel:twitter"
    - "camel:kamelet"
  template:
    from:
      uri: "twitter-timeline:user"
      parameters:
        user: "{{user}}"
        accessToken: "{{accessToken}}"
        accessTokenSecret: "{{accessTokenSecret}}"
        consumerKey: "{{apiKey}}"
        consumerSecret: "{{apiKeySecret}}"
      steps:
      - marshal:
          json: {}
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: value-to-key-action
  labels:
    camel.apache.org/kamelet.type: "action"
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Kafka"
spec:
  definition:
    title: "Value to Key Action"
    description: "Replace the Kafka record key with a new key formed from a fields subset coming from the message body."
    required:
      - fields
    properties:
      fields:
        title: Fields
        description: Comma separated list of fields to be used to form the new key.
        type: string
    type: object
  dependencies:
  - "camel:core"
  - "camel:jackson"
  - "camel:kamelet"
  - "camel:kafka"
  template:
    from:
      uri: kamelet:source
      steps:
      - choice:
          when:
          - simple: "${header[Content-Type]} == 'application/json'"
            steps:
            - setProperty:
                name: deserialized
                constant: "true"
            - unmarshal:
                json:
                  library: Jackson
                  unmarshalType: com.fasterxml.jackson.databind.JsonNode
      - setProperty:
          name: "fields"
          constant: "{{fields}}"
      - bean: "org.apache.camel.component.kafka.transform.ValueToKey"
      - choice:
          when:
          - simple: "${exchangeProperty[deserialized]} == 'true'"
            steps:
            - marshal:
                json:
                  library: Jackson
                  unmarshalType: com.fasterxml.jackson.databind.JsonNode
            - setHeader:
                name: "Content-Type"
                constant: "application/json"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: velocity-template-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "Velocity Template Action"
    description: Apply a Velocity Template.
    required:
      - template
    type: object
    properties:
      template:
        title: Template
        description: The inline template
        type: string
        example: "file:////template.vm"
        pattern: "^(http|https|file|classpath|ref|bean)://.*"
  dependencies:
  - "camel:velocity"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "velocity:"
          parameters:
            resourceUri: "{{template}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: webhook-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ijk0NCAtNzcxIDI1MDAgMjMzNCI+PHBhdGggZD0iTTIxMTEuNCAyMTAuNWMtMTAzLjYgMTc0LjItMjAyLjkgMzQyLjktMzA0LjIgNTEwLjMtMjYgNDMtMzguOSA3OC0xOC4xIDEzMi42IDU3LjQgMTUwLjktMjMuNiAyOTcuOC0xNzUuOCAzMzcuNi0xNDMuNSAzNy42LTI4My40LTU2LjctMzExLjgtMjEwLjQtMjUuMi0xMzYgODAuMy0yNjkuMyAyMzAuMy0yOTAuNiAxMi42LTEuOCAyNS40LTIgNDYuNS0zLjZsMjI4LjEtMzgyLjVjLTE0My41LTE0Mi43LTIyOC45LTMwOS40LTIxMC01MTYgMTMuNC0xNDYuMSA3MC44LTI3Mi4zIDE3NS44LTM3NS44IDIwMS0xOTguMSA1MDcuOC0yMzAuMiA3NDQuNS03OC4xIDIyNy40IDE0Ni4xIDMzMS41IDQzMC42IDI0Mi44IDY3NC4xLTY2LjktMTguMS0xMzQuMy0zNi40LTIwOC40LTU2LjUgMjcuOS0xMzUuNCA3LjMtMjU3LTg0LjEtMzYxLjEtNjAuMy02OC44LTEzNy44LTEwNC44LTIyNS44LTExOC4xLTE3Ni41LTI2LjctMzQ5LjggODYuNy00MDEuMiAyNTkuOS01OC4zIDE5Ni42IDMwIDM1Ny4yIDI3MS40IDQ3OC4yeiIgZmlsbD0iI2M3M2E2MyIvPjxwYXRoIGQ9Ik0yNDA3LjMgNC41YzczIDEyOC44IDE0Ny4xIDI1OS41IDIyMC42IDM4OSAzNzEuMy0xMTQuOSA2NTEuMiA5MC43IDc1MS43IDMxMC43IDEyMS4zIDI2NS44IDM4LjQgNTgwLjYtMTk5LjkgNzQ0LjYtMjQ0LjUgMTY4LjMtNTUzLjggMTM5LjYtNzcwLjQtNzYuNyA1NS4yLTQ2LjIgMTEwLjctOTIuNiAxNzAtMTQyLjIgMjE0IDEzOC42IDQwMS4xIDEzMi4xIDU0MC4xLTMyLjEgMTE4LjUtMTQwIDExNS45LTM0OC44LTYtNDg1LjgtMTQwLjctMTU4LjItMzI5LjItMTYzLTU1Ny0xMS4yLTk0LjUtMTY3LjctMTkwLjYtMzM0LTI4Mi4yLTUwMi44LTMwLjktNTYuOS02NC45LTg5LjktMTM0LjUtMTAyLTExNi4xLTIwLjEtMTkxLjEtMTE5LjktMTk1LjYtMjMxLjYtNC40LTExMC41IDYwLjctMjEwLjQgMTYyLjQtMjQ5LjMgMTAwLjgtMzguNiAyMTkuMS03LjQgMjg2LjkgNzguMyA1NS40IDcwIDczIDE0OC44IDQzLjkgMjM1LjItOC4xIDI0LjEtMTguNiA0Ny40LTMwIDc1Ljl6IiBmaWxsPSIjNGI0YjRiIi8+PHBhdGggZD0iTTI1ODEuOCAxMDU3LjJoLTQ0N2MtNDIuOCAxNzYuMi0xMzUuNCAzMTguNS0yOTQuOCA0MDguOS0xMjQgNzAuMy0yNTcuNSA5NC4yLTM5OS43IDcxLjItMjYxLjgtNDIuMi00NzUuOS0yNzcuOS00OTQuNy01NDMuMy0yMS4zLTMwMC42IDE4NS4zLTU2Ny44IDQ2MC43LTYyNy45IDE5IDY5LjEgMzguMiAxMzguOCA1Ny4yIDIwNy43LTI1Mi43IDEyOC45LTM0MC4yIDI5MS40LTI2OS40IDQ5NC41IDYyLjMgMTc4LjggMjM5LjEgMjc2LjcgNDMxLjEgMjM4LjggMTk2LjEtMzguNyAyOTUtMjAxLjcgMjgyLjktNDYzLjIgMTg1LjkgMCAzNzItMS45IDU1Ny45LjkgNzIuNiAxLjEgMTI4LjYtNi40IDE4My4zLTcwLjQgOTAtMTA1LjMgMjU1LjgtOTUuOCAzNTIuNyAzLjcgOTkuMSAxMDEuNyA5NC40IDI2NS4yLTEwLjUgMzYyLjYtMTAxLjIgOTMuOS0yNjEgODguOS0zNTUuNy0xMi4zLTE5LjUtMjAuOC0zNC44LTQ1LjUtNTQtNzEuMnoiIGZpbGw9IiM0YTRhNGEiLz48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Webhook"
    camel.apache.org/kamelet.namespace: "Cloud"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "Webhook Source"
    description: Creates an HTTP endpoint that can be used as a bridge to forward data to the Kamelet sink.
    type: object
    properties:
      subpath:
        title: Subpath
        description: |
          The subpath where the webhook is registered
        type: string
        default: "webhook"
  dependencies:
    - "camel:platform-http"
    - "camel:kamelet"
  template:
    from:
      uri: "platform-http:///{{subpath}}"
      steps:
      - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: wttrin-source
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBhcmlhLWhpZGRlbj0idHJ1ZSIgZm9jdXNhYmxlPSJmYWxzZSIgZGF0YS1wcmVmaXg9ImZhcyIgZGF0YS1pY29uPSJjbG91ZC1zdW4iIGNsYXNzPSJzdmctaW5saW5lLS1mYSBmYS1jbG91ZC1zdW4iIHJvbGU9ImltZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNjQwIDUxMiI+PHBhdGggZmlsbD0iY3VycmVudENvbG9yIiBkPSJNOTYgMjA4YzAtNjEuODYgNTAuMTQtMTExLjEgMTExLjEtMTExLjFjNTIuNjUgMCA5Ni41IDM2LjQ1IDEwOC41IDg1LjQyQzMzNC43IDE3My4xIDM1NC43IDE2OCAzNzUuMSAxNjhjNC42MDcgMCA5LjE1MiAuMzgwOSAxMy42OCAuODIwM2wyNC4xMy0zNC43NmM1LjE0NS03LjQxNCAuODk2NS0xNy42Ny03Ljk4NC0xOS4yN0wzMTcuMiA5OC43OEwzMDEuMiAxMC4yMUMyOTkuNiAxLjMyNSAyODkuNC0yLjkxOSAyODEuOSAyLjIyNkwyMDggNTMuNTRMMTM0LjEgMi4yMjVDMTI2LjYtMi45MiAxMTYuNCAxLjMyNiAxMTQuOCAxMC4yMUw5OC43OCA5OC43OEwxMC4yMSAxMTQuOEMxLjMyNiAxMTYuNC0yLjkyMiAxMjYuNyAyLjIyMyAxMzQuMWw1MS4zIDczLjk0TDIuMjI0IDI4MS45Yy01LjE0NSA3LjQxNC0uODk3NSAxNy42NyA3Ljk4MyAxOS4yN0w5OC43OCAzMTcuMmwxNi4wMSA4OC41OGMxLjYwNCA4Ljg4MSAxMS44NiAxMy4xMyAxOS4yNyA3Ljk4MmwxMC43MS03LjQzMmMyLjcyNS0zNS4xNSAxOS44NS02Ni41MSA0NS44My04OC4xQzEzNy4xIDMwOS44IDk2IDI2My45IDk2IDIwOHpNMTI4IDIwOGMwIDQ0LjE4IDM1LjgyIDgwIDgwIDgwYzkuNzI5IDAgMTguOTMtMS45OTYgMjcuNTYtNS4xNzZjNy4wMDItMzMuNjUgMjUuNTMtNjIuODUgNTEuNTctODMuNDRDMjgyLjggMTU5LjMgMjQ5LjIgMTI4IDIwOCAxMjhDMTYzLjggMTI4IDEyOCAxNjMuOCAxMjggMjA4ek01NzUuMiAzMjUuNmMuMTI1LTIgLjc0NTMtMy43NDQgLjc0NTMtNS42MTljMC0zNS4zOC0yOC43NS02NC02My4xLTY0Yy0xMi42MiAwLTI0LjI1IDMuNzQ5LTM0LjEzIDkuOTk5Yy0xNy42Mi0zOC44OC01Ni41LTY1LjEtMTAxLjktNjUuMWMtNjEuNzUgMC0xMTIgNTAuMTItMTEyIDExMS4xYzAgMyAuNzUyMiA1Ljc0MyAuODc3MiA4LjYxOGMtNDkuNjMgMy43NS04OC44OCA0NC43NC04OC44OCA5NS4zN0MxNzUuMSA0NjkgMjE4LjEgNTEyIDI3MS4xIDUxMmgyNzJjNTMgMCA5Ni00Mi45OSA5Ni05NS45OUM2MzkuMSAzNzMuOSA2MTIuNyAzMzguNiA1NzUuMiAzMjUuNnoiPjwvcGF0aD48L3N2Zz4="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Weather"
    camel.apache.org/kamelet.namespace: "Dataset"
  labels:
    camel.apache.org/kamelet.type: "source"
spec:
  definition:
    title: "wttr.in Source"
    description: Get weather forecasts from the wttr.in weather forecast service
    type: object
    properties:
      period:
        title: Period
        description: The interval between fetches to the wttr.in service in milliseconds
        type: integer
        default: 60000
      wttrLocation:
        title: Location
        description: The location to get weather forecasts
        type: string
        example: '"paris", "~Eiffel+tower", "Москва", "muc", "@stackoverflow.com", "94107", "-78.46,106.79"'
      wttrLanguage:
        title: Language
        description: The language to use for displaying weather forecasts
        type: string
        example: 'am ar af be bn ca da de el et fr fa hi hu ia id it lt mg nb nl oc pl pt-br ro ru ta tr th uk vi zh-cn zh-tw'
      output:
        title: Output Type
        description: The type of output
        type: string
        example: 'current, weather, full'
        default: current
  types:
    out:
      mediaType: application/json
  dependencies:
    - "camel:core"
    - "camel:http"
    - "camel:jackson"
    - "camel:jsonpath"
    - "camel:kamelet"
    - "camel:timer"
  template:
    from:
      uri: timer:wttr.in
      parameters:
        period: "{{period}}"
      steps:
        - to: "https://wttr.in/{{?wttrLocation}}?format=j1&lang={{?wttrLanguage}}"
        - choice:
            when:
              - simple: "'{{output}}' == 'current'"
                steps:
                  - transform:
                      jsonpath: "$.current_condition[0]"
                  - marshal:
                      json: {}
              - simple: "'{{output}}' == 'weather'"
                steps:
                  - transform:
                      jsonpath: "$.weather"
                  - marshal:
                      json: {}
        - to: "kamelet:sink"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: xj-identity-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "XJ Identity Action"
    description: Apply the XJ Identity Transformation to transform JSON to XML and XML to JSON.
    required:
      - direction
    type: object
    properties:
      direction:
        title: Direction
        description: The transform direction.
        type: string
        enum: ["XML2JSON", "JSON2XML"]
  dependencies:
  - "camel:xj"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "xj:identity"
          parameters:
            transformDirection: "{{direction}}"
---
apiVersion: camel.apache.org/v1
kind: Kamelet
metadata:
  name: xj-template-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.14.2"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgogICB4bWxuczppbmtzY2FwZT0iaHR0cDovL3d3dy5pbmtzY2FwZS5vcmcvbmFtZXNwYWNlcy9pbmtzY2FwZSIKICAgdmlld0JveD0iMCAtMjU2IDE3OTIgMTc5MiIKICAgaWQ9InN2ZzMwMjUiCiAgIHZlcnNpb249IjEuMSIKICAgaW5rc2NhcGU6dmVyc2lvbj0iMC40OC4zLjEgcjk4ODYiCiAgIHdpZHRoPSIxMDAlIgogICBoZWlnaHQ9IjEwMCUiCiAgIHNvZGlwb2RpOmRvY25hbWU9ImNvZ19mb250X2F3ZXNvbWUuc3ZnIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGEzMDM1Ij4KICAgIDxyZGY6UkRGPgogICAgICA8Y2M6V29yawogICAgICAgICByZGY6YWJvdXQ9IiI+CiAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CiAgICAgICAgPGRjOnR5cGUKICAgICAgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZGVmcwogICAgIGlkPSJkZWZzMzAzMyIgLz4KICA8c29kaXBvZGk6bmFtZWR2aWV3CiAgICAgcGFnZWNvbG9yPSIjZmZmZmZmIgogICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgogICAgIGJvcmRlcm9wYWNpdHk9IjEiCiAgICAgb2JqZWN0dG9sZXJhbmNlPSIxMCIKICAgICBncmlkdG9sZXJhbmNlPSIxMCIKICAgICBndWlkZXRvbGVyYW5jZT0iMTAiCiAgICAgaW5rc2NhcGU6cGFnZW9wYWNpdHk9IjAiCiAgICAgaW5rc2NhcGU6cGFnZXNoYWRvdz0iMiIKICAgICBpbmtzY2FwZTp3aW5kb3ctd2lkdGg9IjY0MCIKICAgICBpbmtzY2FwZTp3aW5kb3ctaGVpZ2h0PSI0ODAiCiAgICAgaWQ9Im5hbWVkdmlldzMwMzEiCiAgICAgc2hvd2dyaWQ9ImZhbHNlIgogICAgIGlua3NjYXBlOnpvb209IjAuMTMxNjk2NDMiCiAgICAgaW5rc2NhcGU6Y3g9Ijg5NiIKICAgICBpbmtzY2FwZTpjeT0iODk2IgogICAgIGlua3NjYXBlOndpbmRvdy14PSIwIgogICAgIGlua3NjYXBlOndpbmRvdy15PSIyNSIKICAgICBpbmtzY2FwZTp3aW5kb3ctbWF4aW1pemVkPSIwIgogICAgIGlua3NjYXBlOmN1cnJlbnQtbGF5ZXI9InN2ZzMwMjUiIC8+CiAgPGcKICAgICB0cmFuc2Zvcm09Im1hdHJpeCgxLDAsMCwtMSwxMjEuNDkxNTMsMTI4NS40MjM3KSIKICAgICBpZD0iZzMwMjciPgogICAgPHBhdGgKICAgICAgIGQ9Im0gMTAyNCw2NDAgcSAwLDEwNiAtNzUsMTgxIC03NSw3NSAtMTgxLDc1IC0xMDYsMCAtMTgxLC03NSAtNzUsLTc1IC03NSwtMTgxIDAsLTEwNiA3NSwtMTgxIDc1LC03NSAxODEsLTc1IDEwNiwwIDE4MSw3NSA3NSw3NSA3NSwxODEgeiBtIDUxMiwxMDkgViA1MjcgcSAwLC0xMiAtOCwtMjMgLTgsLTExIC0yMCwtMTMgbCAtMTg1LC0yOCBxIC0xOSwtNTQgLTM5LC05MSAzNSwtNTAgMTA3LC0xMzggMTAsLTEyIDEwLC0yNSAwLC0xMyAtOSwtMjMgLTI3LC0zNyAtOTksLTEwOCAtNzIsLTcxIC05NCwtNzEgLTEyLDAgLTI2LDkgbCAtMTM4LDEwOCBxIC00NCwtMjMgLTkxLC0zOCAtMTYsLTEzNiAtMjksLTE4NiAtNywtMjggLTM2LC0yOCBIIDY1NyBxIC0xNCwwIC0yNC41LDguNSBRIDYyMiwtMTExIDYyMSwtOTggTCA1OTMsODYgcSAtNDksMTYgLTkwLDM3IEwgMzYyLDE2IFEgMzUyLDcgMzM3LDcgMzIzLDcgMzEyLDE4IDE4NiwxMzIgMTQ3LDE4NiBxIC03LDEwIC03LDIzIDAsMTIgOCwyMyAxNSwyMSA1MSw2Ni41IDM2LDQ1LjUgNTQsNzAuNSAtMjcsNTAgLTQxLDk5IEwgMjksNDk1IFEgMTYsNDk3IDgsNTA3LjUgMCw1MTggMCw1MzEgdiAyMjIgcSAwLDEyIDgsMjMgOCwxMSAxOSwxMyBsIDE4NiwyOCBxIDE0LDQ2IDM5LDkyIC00MCw1NyAtMTA3LDEzOCAtMTAsMTIgLTEwLDI0IDAsMTAgOSwyMyAyNiwzNiA5OC41LDEwNy41IDcyLjUsNzEuNSA5NC41LDcxLjUgMTMsMCAyNiwtMTAgbCAxMzgsLTEwNyBxIDQ0LDIzIDkxLDM4IDE2LDEzNiAyOSwxODYgNywyOCAzNiwyOCBoIDIyMiBxIDE0LDAgMjQuNSwtOC41IFEgOTE0LDEzOTEgOTE1LDEzNzggbCAyOCwtMTg0IHEgNDksLTE2IDkwLC0zNyBsIDE0MiwxMDcgcSA5LDkgMjQsOSAxMywwIDI1LC0xMCAxMjksLTExOSAxNjUsLTE3MCA3LC04IDcsLTIyIDAsLTEyIC04LC0yMyAtMTUsLTIxIC01MSwtNjYuNSAtMzYsLTQ1LjUgLTU0LC03MC41IDI2LC01MCA0MSwtOTggbCAxODMsLTI4IHEgMTMsLTIgMjEsLTEyLjUgOCwtMTAuNSA4LC0yMy41IHoiCiAgICAgICBpZD0icGF0aDMwMjkiCiAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIgogICAgICAgc3R5bGU9ImZpbGw6Y3VycmVudENvbG9yIiAvPgogIDwvZz4KPC9zdmc+Cg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Actions"
    camel.apache.org/kamelet.namespace: "Transformation"
  labels:
    camel.apache.org/kamelet.type: "action"
spec:
  definition:
    title: "XJ Template Action"
    description: Apply the XJ Template Transformation to transform JSON to XML and XML to JSON.
    required:
      - direction
      - template
    type: object
    properties:
      direction:
        title: Direction
        description: The transform direction.
        type: string
        enum: ["XML2JSON", "JSON2XML"]
      template:
        title: Template
        description: The inline template to apply a transformation through template.
        type: string
        example: "file:////template.vm"
        pattern: "^(http|https|file|classpath|ref|bean)://.*"
  dependencies:
  - "camel:xj"
  - "camel:kamelet"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "xj:"
          parameters:
            resourceUri: "{{template}}"
            transformDirection: "{{direction}}"
