# ---------------------------------------------------------------------------
# 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: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  labels:
    app: "camel-k"
  annotations:
    controller-gen.kubebuilder.io/version: v0.0.0-20200528125929-5c0c6ae3b64b
  creationTimestamp: null
  name: kameletbindings.camel.apache.org
spec:
  additionalPrinterColumns:
  - JSONPath: .status.phase
    description: The Kamelet Binding phase
    name: Phase
    type: string
  group: camel.apache.org
  names:
    categories:
    - kamel
    - camel
    kind: KameletBinding
    listKind: KameletBindingList
    plural: kameletbindings
    shortNames:
    - klb
    singular: kameletbinding
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      description: KameletBinding is the Schema for the kamelets binding API
      properties:
        apiVersion:
          description: 'APIVersion defines the versioned schema of this representation
            of an object. Servers should convert recognized schemas to the latest
            internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources'
          type: string
        kind:
          description: 'Kind is a string value representing the REST resource this
            object represents. Servers may infer this from the endpoint the client
            submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
          type: string
        metadata:
          type: object
        spec:
          description: KameletBindingSpec --
          properties:
            integration:
              description: Integration is an optional integration used to specify
                custom parameters
              properties:
                configuration:
                  items:
                    description: ConfigurationSpec --
                    properties:
                      type:
                        type: string
                      value:
                        type: string
                    required:
                    - type
                    - value
                    type: object
                  type: array
                dependencies:
                  items:
                    type: string
                  type: array
                flows:
                  items:
                    type: object
                  type: array
                kit:
                  type: string
                profile:
                  description: TraitProfile represents lists of traits that are enabled
                    for the specific installation/integration
                  type: string
                replicas:
                  format: int32
                  type: integer
                repositories:
                  items:
                    type: string
                  type: array
                resources:
                  items:
                    description: ResourceSpec --
                    properties:
                      compression:
                        type: boolean
                      content:
                        type: string
                      contentKey:
                        type: string
                      contentRef:
                        type: string
                      mountPath:
                        type: string
                      name:
                        type: string
                      type:
                        description: ResourceType --
                        type: string
                    type: object
                  type: array
                serviceAccountName:
                  type: string
                sources:
                  items:
                    description: SourceSpec --
                    properties:
                      compression:
                        type: boolean
                      content:
                        type: string
                      contentKey:
                        type: string
                      contentRef:
                        type: string
                      interceptors:
                        description: Interceptors are optional identifiers the org.apache.camel.k.RoutesLoader
                          uses to pre/post process sources
                        items:
                          type: string
                        type: array
                      language:
                        description: Language --
                        type: string
                      loader:
                        description: Loader is an optional id of the org.apache.camel.k.RoutesLoader
                          that will interpret this source at runtime
                        type: string
                      name:
                        type: string
                      property-names:
                        description: List of property names defined in the source
                          (e.g. if type is "template")
                        items:
                          type: string
                        type: array
                      type:
                        description: Type defines the kind of source described by
                          this object
                        type: string
                    type: object
                  type: array
                traits:
                  additionalProperties:
                    description: A TraitSpec contains the configuration of a trait
                    properties:
                      configuration:
                        type: object
                    required:
                    - configuration
                    type: object
                  type: object
              type: object
            sink:
              description: Sink is the destination of the integration defined by this
                binding
              properties:
                properties:
                  description: Properties are a key value representation of endpoint
                    properties
                  type: object
                ref:
                  description: Ref can be used to declare a Kubernetes resource as
                    source/sink endpoint
                  properties:
                    apiVersion:
                      description: API version of the referent.
                      type: string
                    fieldPath:
                      description: 'If referring to a piece of an object instead of
                        an entire object, this string should contain a valid JSON/Go
                        field access statement, such as desiredState.manifest.containers[2].
                        For example, if the object reference is to a container within
                        a pod, this would take on a value like: "spec.containers{name}"
                        (where "name" refers to the name of the container that triggered
                        the event) or if no container name is specified "spec.containers[2]"
                        (container with index 2 in this pod). This syntax is chosen
                        only to have some well-defined way of referencing a part of
                        an object. TODO: this design is not final and this field is
                        subject to change in the future.'
                      type: string
                    kind:
                      description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                      type: string
                    name:
                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                      type: string
                    namespace:
                      description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                      type: string
                    resourceVersion:
                      description: 'Specific resourceVersion to which this reference
                        is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                      type: string
                    uid:
                      description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                      type: string
                  type: object
                uri:
                  description: URI can alternatively be used to specify the (Camel)
                    endpoint explicitly
                  type: string
              type: object
            source:
              description: Source is the starting point of the integration defined
                by this binding
              properties:
                properties:
                  description: Properties are a key value representation of endpoint
                    properties
                  type: object
                ref:
                  description: Ref can be used to declare a Kubernetes resource as
                    source/sink endpoint
                  properties:
                    apiVersion:
                      description: API version of the referent.
                      type: string
                    fieldPath:
                      description: 'If referring to a piece of an object instead of
                        an entire object, this string should contain a valid JSON/Go
                        field access statement, such as desiredState.manifest.containers[2].
                        For example, if the object reference is to a container within
                        a pod, this would take on a value like: "spec.containers{name}"
                        (where "name" refers to the name of the container that triggered
                        the event) or if no container name is specified "spec.containers[2]"
                        (container with index 2 in this pod). This syntax is chosen
                        only to have some well-defined way of referencing a part of
                        an object. TODO: this design is not final and this field is
                        subject to change in the future.'
                      type: string
                    kind:
                      description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds'
                      type: string
                    name:
                      description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                      type: string
                    namespace:
                      description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                      type: string
                    resourceVersion:
                      description: 'Specific resourceVersion to which this reference
                        is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency'
                      type: string
                    uid:
                      description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
                      type: string
                  type: object
                uri:
                  description: URI can alternatively be used to specify the (Camel)
                    endpoint explicitly
                  type: string
              type: object
          type: object
        status:
          description: KameletBindingStatus --
          properties:
            conditions:
              description: Conditions --
              items:
                description: KameletBindingCondition describes the state of a resource
                  at a certain point.
                properties:
                  lastTransitionTime:
                    description: Last time the condition transitioned from one status
                      to another.
                    format: date-time
                    type: string
                  lastUpdateTime:
                    description: The last time this condition was updated.
                    format: date-time
                    type: string
                  message:
                    description: A human readable message indicating details about
                      the transition.
                    type: string
                  reason:
                    description: The reason for the condition's last transition.
                    type: string
                  status:
                    description: Status of the condition, one of True, False, Unknown.
                    type: string
                  type:
                    description: Type of kameletBinding condition.
                    type: string
                required:
                - status
                - type
                type: object
              type: array
            phase:
              description: Phase --
              type: string
          type: object
      type: object
  version: v1alpha1
  versions:
  - name: v1alpha1
    served: true
    storage: true
