apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.11.3
  name: cephbuckettopics.ceph.rook.io
spec:
  group: ceph.rook.io
  names:
    kind: CephBucketTopic
    listKind: CephBucketTopicList
    plural: cephbuckettopics
    singular: cephbuckettopic
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .status.phase
          name: Phase
          type: string
      name: v1
      schema:
        openAPIV3Schema:
          description: CephBucketTopic represents a Ceph Object Topic for Bucket Notifications
          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: BucketTopicSpec represent the spec of a Bucket Topic
              properties:
                endpoint:
                  description: Contains the endpoint spec of the topic
                  properties:
                    amqp:
                      description: Spec of AMQP endpoint
                      properties:
                        ackLevel:
                          default: broker
                          description: The ack level required for this topic (none/broker/routeable)
                          enum:
                            - none
                            - broker
                            - routeable
                          type: string
                        disableVerifySSL:
                          description: Indicate whether the server certificate is validated by the client or not
                          type: boolean
                        exchange:
                          description: Name of the exchange that is used to route messages based on topics
                          minLength: 1
                          type: string
                        uri:
                          description: The URI of the AMQP endpoint to push notification to
                          minLength: 1
                          type: string
                      required:
                        - exchange
                        - uri
                      type: object
                    http:
                      description: Spec of HTTP endpoint
                      properties:
                        disableVerifySSL:
                          description: Indicate whether the server certificate is validated by the client or not
                          type: boolean
                        sendCloudEvents:
                          description: 'Send the notifications with the CloudEvents header: https://github.com/cloudevents/spec/blob/main/cloudevents/adapters/aws-s3.md'
                          type: boolean
                        uri:
                          description: The URI of the HTTP endpoint to push notification to
                          minLength: 1
                          type: string
                      required:
                        - uri
                      type: object
                    kafka:
                      description: Spec of Kafka endpoint
                      properties:
                        ackLevel:
                          default: broker
                          description: The ack level required for this topic (none/broker)
                          enum:
                            - none
                            - broker
                          type: string
                        disableVerifySSL:
                          description: Indicate whether the server certificate is validated by the client or not
                          type: boolean
                        uri:
                          description: The URI of the Kafka endpoint to push notification to
                          minLength: 1
                          type: string
                        useSSL:
                          description: Indicate whether to use SSL when communicating with the broker
                          type: boolean
                      required:
                        - uri
                      type: object
                  type: object
                objectStoreName:
                  description: The name of the object store on which to define the topic
                  minLength: 1
                  type: string
                objectStoreNamespace:
                  description: The namespace of the object store on which to define the topic
                  minLength: 1
                  type: string
                opaqueData:
                  description: Data which is sent in each event
                  type: string
                persistent:
                  description: Indication whether notifications to this endpoint are persistent or not
                  type: boolean
              required:
                - endpoint
                - objectStoreName
                - objectStoreNamespace
              type: object
            status:
              description: BucketTopicStatus represents the Status of a CephBucketTopic
              properties:
                ARN:
                  description: The ARN of the topic generated by the RGW
                  nullable: true
                  type: string
                observedGeneration:
                  description: ObservedGeneration is the latest generation observed by the controller.
                  format: int64
                  type: integer
                phase:
                  type: string
              type: object
              x-kubernetes-preserve-unknown-fields: true
          required:
            - metadata
            - spec
          type: object
      served: true
      storage: true
      subresources:
        status: {}