# ---------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ---------------------------------------------------------------------------
apiVersion: 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.6.0-SNAPSHOT"
    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}}"
