# ---------------------------------------------------------------------------
# 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: kamelets.camel.apache.org
spec:
  additionalPrinterColumns:
  - JSONPath: .status.phase
    description: The Kamelet phase
    name: Phase
    type: string
  group: camel.apache.org
  names:
    categories:
    - kamel
    - camel
    kind: Kamelet
    listKind: KameletList
    plural: kamelets
    shortNames:
    - kl
    singular: kamelet
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      description: Kamelet is the Schema for the kamelets 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: KameletSpec defines the desired state of Kamelet
          properties:
            authorization:
              description: AuthorizationSpec is TODO (oauth information)
              type: object
            definition:
              description: JSONSchemaProps is a JSON-Schema definition.
              properties:
                $ref:
                  type: string
                $schema:
                  description: JSONSchemaURL represents a schema url.
                  type: string
                additionalItems:
                  type: boolean
                additionalProperties:
                  type: boolean
                allOf:
                  items: {}
                  type: array
                anyOf:
                  items: {}
                  type: array
                default:
                  description: default is a default value for undefined object fields.
                    Defaulting is a beta feature under the CustomResourceDefaulting
                    feature gate. Defaulting requires spec.preserveUnknownFields to
                    be false.
                definitions:
                  additionalProperties: {}
                  description: JSONSchemaDefinitions contains the models explicitly
                    defined in this spec.
                  type: object
                dependencies:
                  additionalProperties:
                    items:
                      type: string
                    type: array
                  description: JSONSchemaDependencies represent a dependencies property.
                  type: object
                description:
                  type: string
                enum:
                  items: {}
                  type: array
                example: {}
                exclusiveMaximum:
                  type: boolean
                exclusiveMinimum:
                  type: boolean
                externalDocs:
                  description: ExternalDocumentation allows referencing an external
                    resource for extended documentation.
                  properties:
                    description:
                      type: string
                    url:
                      type: string
                  type: object
                format:
                  description: "format is an OpenAPI v3 format string. Unknown formats
                    are ignored. The following formats are validated: \n - bsonobjectid:
                    a bson object ID, i.e. a 24 characters hex string - uri: an URI
                    as parsed by Golang net/url.ParseRequestURI - email: an email
                    address as parsed by Golang net/mail.ParseAddress - hostname:
                    a valid representation for an Internet host name, as defined by
                    RFC 1034, section 3.1 [RFC1034]. - ipv4: an IPv4 IP as parsed
                    by Golang net.ParseIP - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
                    - cidr: a CIDR as parsed by Golang net.ParseCIDR - mac: a MAC
                    address as parsed by Golang net.ParseMAC - uuid: an UUID that
                    allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
                    - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
                    - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
                    - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
                    - isbn: an ISBN10 or ISBN13 number string like \"0321751043\"
                    or \"978-0321751041\" - isbn10: an ISBN10 number string like \"0321751043\"
                    - isbn13: an ISBN13 number string like \"978-0321751041\" - creditcard:
                    a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\\\d{3})\\\\d{11})$
                    with any non digit characters mixed in - ssn: a U.S. social security
                    number following the regex ^\\\\d{3}[- ]?\\\\d{2}[- ]?\\\\d{4}$
                    - hexcolor: an hexadecimal color code like \"#FFFFFF: following
                    the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$ - rgbcolor: an RGB
                    color code like rgb like \"rgb(255,255,2559\" - byte: base64 encoded
                    binary data - password: any kind of string - date: a date string
                    like \"2006-01-02\" as defined by full-date in RFC3339 - duration:
                    a duration string like \"22 ns\" as parsed by Golang time.ParseDuration
                    or compatible with Scala duration format - datetime: a date time
                    string like \"2014-12-15T19:30:20.000Z\" as defined by date-time
                    in RFC3339."
                  type: string
                id:
                  type: string
                items: {}
                maxItems:
                  format: int64
                  type: integer
                maxLength:
                  format: int64
                  type: integer
                maxProperties:
                  format: int64
                  type: integer
                maximum:
                  description: A Number represents a JSON number literal.
                  type: string
                minItems:
                  format: int64
                  type: integer
                minLength:
                  format: int64
                  type: integer
                minProperties:
                  format: int64
                  type: integer
                minimum:
                  description: A Number represents a JSON number literal.
                  type: string
                multipleOf:
                  description: A Number represents a JSON number literal.
                  type: string
                not: {}
                nullable:
                  type: boolean
                oneOf:
                  items: {}
                  type: array
                pattern:
                  type: string
                patternProperties:
                  additionalProperties: {}
                  type: object
                properties:
                  additionalProperties: {}
                  type: object
                required:
                  items:
                    type: string
                  type: array
                title:
                  type: string
                type:
                  type: string
                uniqueItems:
                  type: boolean
                x-descriptors:
                  description: x-descriptors annotates an object to define additional
                    display options.
                  items:
                    type: string
                  type: array
                x-kubernetes-embedded-resource:
                  description: x-kubernetes-embedded-resource defines that the value
                    is an embedded Kubernetes runtime.Object, with TypeMeta and ObjectMeta.
                    The type must be object. It is allowed to further restrict the
                    embedded object. kind, apiVersion and metadata are validated automatically.
                    x-kubernetes-preserve-unknown-fields is allowed to be true, but
                    does not have to be if the object is fully specified (up to kind,
                    apiVersion, metadata).
                  type: boolean
                x-kubernetes-int-or-string:
                  description: "x-kubernetes-int-or-string specifies that this value
                    is either an integer or a string. If this is true, an empty type
                    is allowed and type as child of anyOf is permitted if following
                    one of the following patterns: \n 1) anyOf:    - type: integer
                    \   - type: string 2) allOf:    - anyOf:      - type: integer
                    \     - type: string    - ... zero or more"
                  type: boolean
                x-kubernetes-list-map-keys:
                  description: "x-kubernetes-list-map-keys annotates an array with
                    the x-kubernetes-list-type `map` by specifying the keys used as
                    the index of the map. \n This tag MUST only be used on lists that
                    have the \"x-kubernetes-list-type\" extension set to \"map\".
                    Also, the values specified for this attribute must be a scalar
                    typed field of the child structure (no nesting is supported).
                    \n The properties specified must either be required or have a
                    default value, to ensure those properties are present for all
                    list items."
                  items:
                    type: string
                  type: array
                x-kubernetes-list-type:
                  description: "x-kubernetes-list-type annotates an array to further
                    describe its topology. This extension must only be used on lists
                    and may have 3 possible values: \n 1) `atomic`: the list is treated
                    as a single entity, like a scalar.      Atomic lists will be entirely
                    replaced when updated. This extension      may be used on any
                    type of list (struct, scalar, ...). 2) `set`:      Sets are lists
                    that must not have multiple items with the same value. Each      value
                    must be a scalar, an object with x-kubernetes-map-type `atomic`
                    or an      array with x-kubernetes-list-type `atomic`. 3) `map`:
                    \     These lists are like maps in that their elements have a
                    non-index key      used to identify them. Order is preserved upon
                    merge. The map tag      must only be used on a list with elements
                    of type object. Defaults to atomic for arrays."
                  type: string
                x-kubernetes-map-type:
                  description: "x-kubernetes-map-type annotates an object to further
                    describe its topology. This extension must only be used when type
                    is object and may have 2 possible values: \n 1) `granular`:      These
                    maps are actual maps (key-value pairs) and each fields are independent
                    \     from each other (they can each be manipulated by separate
                    actors). This is      the default behaviour for all maps. 2) `atomic`:
                    the list is treated as a single entity, like a scalar.      Atomic
                    maps will be entirely replaced when updated."
                  type: string
                x-kubernetes-preserve-unknown-fields:
                  description: x-kubernetes-preserve-unknown-fields stops the API
                    server decoding step from pruning fields which are not specified
                    in the validation schema. This affects fields recursively, but
                    switches back to normal pruning behaviour if nested properties
                    or additionalProperties are specified in the schema. This can
                    either be true or undefined. False is forbidden.
                  type: boolean
              type: object
            dependencies:
              items:
                type: string
              type: array
            flow:
              type: object
            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
            types:
              additionalProperties:
                properties:
                  mediaType:
                    type: string
                  schema:
                    description: JSONSchemaProps is a JSON-Schema definition.
                    properties:
                      $ref:
                        type: string
                      $schema:
                        description: JSONSchemaURL represents a schema url.
                        type: string
                      additionalItems:
                        type: boolean
                      additionalProperties:
                        type: boolean
                      allOf:
                        items: {}
                        type: array
                      anyOf:
                        items: {}
                        type: array
                      default:
                        description: default is a default value for undefined object
                          fields. Defaulting is a beta feature under the CustomResourceDefaulting
                          feature gate. Defaulting requires spec.preserveUnknownFields
                          to be false.
                      definitions:
                        additionalProperties: {}
                        description: JSONSchemaDefinitions contains the models explicitly
                          defined in this spec.
                        type: object
                      dependencies:
                        additionalProperties:
                          items:
                            type: string
                          type: array
                        description: JSONSchemaDependencies represent a dependencies
                          property.
                        type: object
                      description:
                        type: string
                      enum:
                        items: {}
                        type: array
                      example: {}
                      exclusiveMaximum:
                        type: boolean
                      exclusiveMinimum:
                        type: boolean
                      externalDocs:
                        description: ExternalDocumentation allows referencing an external
                          resource for extended documentation.
                        properties:
                          description:
                            type: string
                          url:
                            type: string
                        type: object
                      format:
                        description: "format is an OpenAPI v3 format string. Unknown
                          formats are ignored. The following formats are validated:
                          \n - bsonobjectid: a bson object ID, i.e. a 24 characters
                          hex string - uri: an URI as parsed by Golang net/url.ParseRequestURI
                          - email: an email address as parsed by Golang net/mail.ParseAddress
                          - hostname: a valid representation for an Internet host
                          name, as defined by RFC 1034, section 3.1 [RFC1034]. - ipv4:
                          an IPv4 IP as parsed by Golang net.ParseIP - ipv6: an IPv6
                          IP as parsed by Golang net.ParseIP - cidr: a CIDR as parsed
                          by Golang net.ParseCIDR - mac: a MAC address as parsed by
                          Golang net.ParseMAC - uuid: an UUID that allows uppercase
                          defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
                          - uuid3: an UUID3 that allows uppercase defined by the regex
                          (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
                          - uuid4: an UUID4 that allows uppercase defined by the regex
                          (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
                          - uuid5: an UUID5 that allows uppercase defined by the regex
                          (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
                          - isbn: an ISBN10 or ISBN13 number string like \"0321751043\"
                          or \"978-0321751041\" - isbn10: an ISBN10 number string
                          like \"0321751043\" - isbn13: an ISBN13 number string like
                          \"978-0321751041\" - creditcard: a credit card number defined
                          by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\\\d{3})\\\\d{11})$
                          with any non digit characters mixed in - ssn: a U.S. social
                          security number following the regex ^\\\\d{3}[- ]?\\\\d{2}[-
                          ]?\\\\d{4}$ - hexcolor: an hexadecimal color code like \"#FFFFFF:
                          following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
                          - rgbcolor: an RGB color code like rgb like \"rgb(255,255,2559\"
                          - byte: base64 encoded binary data - password: any kind
                          of string - date: a date string like \"2006-01-02\" as defined
                          by full-date in RFC3339 - duration: a duration string like
                          \"22 ns\" as parsed by Golang time.ParseDuration or compatible
                          with Scala duration format - datetime: a date time string
                          like \"2014-12-15T19:30:20.000Z\" as defined by date-time
                          in RFC3339."
                        type: string
                      id:
                        type: string
                      items: {}
                      maxItems:
                        format: int64
                        type: integer
                      maxLength:
                        format: int64
                        type: integer
                      maxProperties:
                        format: int64
                        type: integer
                      maximum:
                        description: A Number represents a JSON number literal.
                        type: string
                      minItems:
                        format: int64
                        type: integer
                      minLength:
                        format: int64
                        type: integer
                      minProperties:
                        format: int64
                        type: integer
                      minimum:
                        description: A Number represents a JSON number literal.
                        type: string
                      multipleOf:
                        description: A Number represents a JSON number literal.
                        type: string
                      not: {}
                      nullable:
                        type: boolean
                      oneOf:
                        items: {}
                        type: array
                      pattern:
                        type: string
                      patternProperties:
                        additionalProperties: {}
                        type: object
                      properties:
                        additionalProperties: {}
                        type: object
                      required:
                        items:
                          type: string
                        type: array
                      title:
                        type: string
                      type:
                        type: string
                      uniqueItems:
                        type: boolean
                      x-descriptors:
                        description: x-descriptors annotates an object to define additional
                          display options.
                        items:
                          type: string
                        type: array
                      x-kubernetes-embedded-resource:
                        description: x-kubernetes-embedded-resource defines that the
                          value is an embedded Kubernetes runtime.Object, with TypeMeta
                          and ObjectMeta. The type must be object. It is allowed to
                          further restrict the embedded object. kind, apiVersion and
                          metadata are validated automatically. x-kubernetes-preserve-unknown-fields
                          is allowed to be true, but does not have to be if the object
                          is fully specified (up to kind, apiVersion, metadata).
                        type: boolean
                      x-kubernetes-int-or-string:
                        description: "x-kubernetes-int-or-string specifies that this
                          value is either an integer or a string. If this is true,
                          an empty type is allowed and type as child of anyOf is permitted
                          if following one of the following patterns: \n 1) anyOf:
                          \   - type: integer    - type: string 2) allOf:    - anyOf:
                          \     - type: integer      - type: string    - ... zero
                          or more"
                        type: boolean
                      x-kubernetes-list-map-keys:
                        description: "x-kubernetes-list-map-keys annotates an array
                          with the x-kubernetes-list-type `map` by specifying the
                          keys used as the index of the map. \n This tag MUST only
                          be used on lists that have the \"x-kubernetes-list-type\"
                          extension set to \"map\". Also, the values specified for
                          this attribute must be a scalar typed field of the child
                          structure (no nesting is supported). \n The properties specified
                          must either be required or have a default value, to ensure
                          those properties are present for all list items."
                        items:
                          type: string
                        type: array
                      x-kubernetes-list-type:
                        description: "x-kubernetes-list-type annotates an array to
                          further describe its topology. This extension must only
                          be used on lists and may have 3 possible values: \n 1) `atomic`:
                          the list is treated as a single entity, like a scalar.      Atomic
                          lists will be entirely replaced when updated. This extension
                          \     may be used on any type of list (struct, scalar, ...).
                          2) `set`:      Sets are lists that must not have multiple
                          items with the same value. Each      value must be a scalar,
                          an object with x-kubernetes-map-type `atomic` or an      array
                          with x-kubernetes-list-type `atomic`. 3) `map`:      These
                          lists are like maps in that their elements have a non-index
                          key      used to identify them. Order is preserved upon
                          merge. The map tag      must only be used on a list with
                          elements of type object. Defaults to atomic for arrays."
                        type: string
                      x-kubernetes-map-type:
                        description: "x-kubernetes-map-type annotates an object to
                          further describe its topology. This extension must only
                          be used when type is object and may have 2 possible values:
                          \n 1) `granular`:      These maps are actual maps (key-value
                          pairs) and each fields are independent      from each other
                          (they can each be manipulated by separate actors). This
                          is      the default behaviour for all maps. 2) `atomic`:
                          the list is treated as a single entity, like a scalar.      Atomic
                          maps will be entirely replaced when updated."
                        type: string
                      x-kubernetes-preserve-unknown-fields:
                        description: x-kubernetes-preserve-unknown-fields stops the
                          API server decoding step from pruning fields which are not
                          specified in the validation schema. This affects fields
                          recursively, but switches back to normal pruning behaviour
                          if nested properties or additionalProperties are specified
                          in the schema. This can either be true or undefined. False
                          is forbidden.
                        type: boolean
                    type: object
                type: object
              type: object
          type: object
        status:
          description: KameletStatus defines the observed state of Kamelet
          properties:
            conditions:
              items:
                description: KameletCondition 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 kamelet condition.
                    type: string
                required:
                - status
                - type
                type: object
              type: array
            phase:
              type: string
            properties:
              items:
                properties:
                  default:
                    type: string
                  name:
                    type: string
                type: object
              type: array
          type: object
      type: object
  version: v1alpha1
  versions:
  - name: v1alpha1
    served: true
    storage: true
