{
  "description": "CephBucketTopic represents a Ceph Object Topic for Bucket Notifications",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": [
        "string",
        "null"
      ]
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": [
        "string",
        "null"
      ]
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "additionalProperties": false,
      "description": "BucketTopicSpec represent the spec of a Bucket Topic",
      "properties": {
        "endpoint": {
          "additionalProperties": false,
          "description": "Contains the endpoint spec of the topic",
          "properties": {
            "amqp": {
              "additionalProperties": false,
              "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",
                    "null"
                  ]
                },
                "disableVerifySSL": {
                  "description": "Indicate whether the server certificate is validated by the client or not",
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "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",
                "null"
              ]
            },
            "http": {
              "additionalProperties": false,
              "description": "Spec of HTTP endpoint",
              "properties": {
                "disableVerifySSL": {
                  "description": "Indicate whether the server certificate is validated by the client or not",
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "sendCloudEvents": {
                  "description": "Send the notifications with the CloudEvents header: https://github.com/cloudevents/spec/blob/main/cloudevents/adapters/aws-s3.md",
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "uri": {
                  "description": "The URI of the HTTP endpoint to push notification to",
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "uri"
              ],
              "type": [
                "object",
                "null"
              ]
            },
            "kafka": {
              "additionalProperties": false,
              "description": "Spec of Kafka endpoint",
              "properties": {
                "ackLevel": {
                  "default": "broker",
                  "description": "The ack level required for this topic (none/broker)",
                  "enum": [
                    "none",
                    "broker"
                  ],
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "disableVerifySSL": {
                  "description": "Indicate whether the server certificate is validated by the client or not",
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "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",
                    "null"
                  ]
                }
              },
              "required": [
                "uri"
              ],
              "type": [
                "object",
                "null"
              ]
            }
          },
          "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",
            "null"
          ]
        },
        "persistent": {
          "description": "Indication whether notifications to this endpoint are persistent or not",
          "type": [
            "boolean",
            "null"
          ]
        }
      },
      "required": [
        "endpoint",
        "objectStoreName",
        "objectStoreNamespace"
      ],
      "type": "object"
    },
    "status": {
      "additionalProperties": false,
      "description": "BucketTopicStatus represents the Status of a CephBucketTopic",
      "properties": {
        "ARN": {
          "description": "The ARN of the topic generated by the RGW",
          "nullable": true,
          "type": [
            "string",
            "null"
          ]
        },
        "observedGeneration": {
          "description": "ObservedGeneration is the latest generation observed by the controller.",
          "format": "int64",
          "type": [
            "integer",
            "null"
          ]
        },
        "phase": {
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ],
      "x-kubernetes-preserve-unknown-fields": true
    }
  },
  "required": [
    "metadata",
    "spec"
  ],
  "type": "object"
}