apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  labels:
    app.kubernetes.io/component: knative-eventing
    app.kubernetes.io/name: knative-eventing
    duck.knative.dev/binding: "true"
    duck.knative.dev/source: "true"
    eventing.knative.dev/release: v0.22.1
    eventing.knative.dev/source: "true"
    knative.dev/crd-install: "true"
    kustomize.component: knative
  name: sinkbindings.sources.knative.dev
spec:
  conversion:
    strategy: Webhook
    webhook:
      clientConfig:
        service:
          name: eventing-webhook
          namespace: knative-eventing
      conversionReviewVersions:
      - v1
      - v1beta1
  group: sources.knative.dev
  names:
    categories:
    - all
    - knative
    - sources
    - bindings
    kind: SinkBinding
    plural: sinkbindings
    singular: sinkbinding
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .status.sinkUri
      name: Sink
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - jsonPath: .status.conditions[?(@.type=='Ready')].status
      name: Ready
      type: string
    - jsonPath: .status.conditions[?(@.type=='Ready')].reason
      name: Reason
      type: string
    name: v1alpha1
    schema:
      openAPIV3Schema:
        type: object
        x-kubernetes-preserve-unknown-fields: true
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - jsonPath: .status.sinkUri
      name: Sink
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - jsonPath: .status.conditions[?(@.type=='Ready')].status
      name: Ready
      type: string
    - jsonPath: .status.conditions[?(@.type=='Ready')].reason
      name: Reason
      type: string
    name: v1alpha2
    schema:
      openAPIV3Schema:
        type: object
        x-kubernetes-preserve-unknown-fields: true
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - jsonPath: .status.sinkUri
      name: Sink
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - jsonPath: .status.conditions[?(@.type=='Ready')].status
      name: Ready
      type: string
    - jsonPath: .status.conditions[?(@.type=='Ready')].reason
      name: Reason
      type: string
    name: v1beta1
    schema:
      openAPIV3Schema:
        type: object
        x-kubernetes-preserve-unknown-fields: true
    served: true
    storage: false
    subresources:
      status: {}
  - additionalPrinterColumns:
    - jsonPath: .status.sinkUri
      name: Sink
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - jsonPath: .status.conditions[?(@.type=='Ready')].status
      name: Ready
      type: string
    - jsonPath: .status.conditions[?(@.type=='Ready')].reason
      name: Reason
      type: string
    name: v1
    schema:
      openAPIV3Schema:
        description: SinkBinding describes a Binding that is also a Source. The `sink`
          (from the Source duck) is resolved to a URL and then projected into the
          `subject` by augmenting the runtime contract of the referenced containers
          to have a `K_SINK` environment variable holding the endpoint to which to
          send cloud events.
        properties:
          spec:
            description: SinkBindingSpec holds the desired state of the SinkBinding
              (from the client).
            properties:
              ceOverrides:
                description: CloudEventOverrides defines overrides to control the
                  output format and modifications of the event sent to the sink.
                properties:
                  extensions:
                    additionalProperties:
                      type: string
                    description: Extensions specify what attribute are added or overridden
                      on the outbound event. Each `Extensions` key-value pair are
                      set on the event as an attribute extension independently.
                    type: object
                type: object
              sink:
                description: Sink is a reference to an object that will resolve to
                  a uri to use as the sink.
                properties:
                  ref:
                    description: Ref points to an Addressable.
                    properties:
                      apiVersion:
                        description: API version of the referent.
                        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/
                          This is optional field, it gets defaulted to the object
                          holding it if left out.'
                        type: string
                    type: object
                  uri:
                    description: URI can be an absolute URL(non-empty scheme and non-empty
                      host) pointing to the target or a relative URI. Relative URIs
                      will be resolved using the base URI retrieved from Ref.
                    type: string
                type: object
              subject:
                description: Subject references the resource(s) whose "runtime contract"
                  should be augmented by Binding implementations.
                properties:
                  apiVersion:
                    description: API version of the referent.
                    type: string
                  kind:
                    description: Kind of the referent.
                    type: string
                  name:
                    description: Name of the referent. Mutually exclusive with Selector.
                    type: string
                  namespace:
                    description: Namespace of the referent.
                    type: string
                  selector:
                    description: Selector of the referents. Mutually exclusive with
                      Name.
                    properties:
                      matchExpressions:
                        description: matchExpressions is a list of label selector
                          requirements. The requirements are ANDed.
                        items:
                          properties:
                            key:
                              description: key is the label key that the selector
                                applies to.
                              type: string
                            operator:
                              description: operator represents a key's relationship
                                to a set of values. Valid operators are In, NotIn,
                                Exists and DoesNotExist.
                              type: string
                            values:
                              description: values is an array of string values. If
                                the operator is In or NotIn, the values array must
                                be non-empty. If the operator is Exists or DoesNotExist,
                                the values array must be empty. This array is replaced
                                during a strategic merge patch.
                              items:
                                type: string
                              type: array
                          type: object
                        type: array
                      matchLabels:
                        description: matchLabels is a map of {key,value} pairs. A
                          single {key,value} in the matchLabels map is equivalent
                          to an element of matchExpressions, whose key field is "key",
                          the operator is "In", and the values array contains only
                          "value". The requirements are ANDed.
                        type: object
                        x-kubernetes-preserve-unknown-fields: true
                    type: object
                type: object
            type: object
          status:
            description: SinkBindingStatus communicates the observed state of the
              SinkBinding (from the controller).
            properties:
              annotations:
                description: Annotations is additional Status fields for the Resource
                  to save some additional State as well as convey more information
                  to the user. This is roughly akin to Annotations on any k8s resource,
                  just the reconciler conveying richer information outwards.
                type: object
                x-kubernetes-preserve-unknown-fields: true
              ceAttributes:
                description: CloudEventAttributes are the specific attributes that
                  the Source uses as part of its CloudEvents.
                items:
                  properties:
                    source:
                      description: Source is the CloudEvents source attribute.
                      type: string
                    type:
                      description: Type refers to the CloudEvent type attribute.
                      type: string
                  type: object
                type: array
              conditions:
                description: Conditions the latest available observations of a resource's
                  current state.
                items:
                  properties:
                    lastTransitionTime:
                      description: LastTransitionTime is the last time the condition
                        transitioned from one status to another. We use VolatileTime
                        in place of metav1.Time to exclude this from creating equality.Semantic
                        differences (all other things held constant).
                      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
                    severity:
                      description: Severity with which to treat failures of this type
                        of condition. When this is not specified, it defaults to Error.
                      type: string
                    status:
                      description: Status of the condition, one of True, False, Unknown.
                      type: string
                    type:
                      description: Type of condition.
                      type: string
                  required:
                  - type
                  - status
                  type: object
                type: array
              observedGeneration:
                description: ObservedGeneration is the 'Generation' of the Service
                  that was last processed by the controller.
                format: int64
                type: integer
              sinkUri:
                description: SinkURI is the current active sink URI that has been
                  configured for the Source.
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
