# ---------------------------------------------------------------------------
# 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: aws-translate-action
  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,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.

      Access Key/Secret Key are the basic method for authenticating to the AWS Translate Service. These parameters are optional because the Kamelet provides the 'useDefaultCredentialsProvider'.
      
      When using a default Credentials Provider the Translate client will load the credentials through this provider and won't use the static credential. This is reason for not having the access key and secret key as mandatory parameter for this Kamelet.
    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
  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}}"
