{
  "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": "The specification of the topic.",
      "properties": {
        "config": {
          "description": "The topic configuration.",
          "type": "object",
          "x-kubernetes-preserve-unknown-fields": true
        },
        "partitions": {
          "description": "The number of partitions the topic should have. This cannot be decreased after topic creation. It can be increased after topic creation, but it is important to understand the consequences that has, especially for topics with semantic partitioning. When absent this will default to the broker configuration for `num.partitions`.",
          "minimum": 1,
          "type": "integer"
        },
        "replicas": {
          "description": "The number of replicas the topic should have. When absent this will default to the broker configuration for `default.replication.factor`.",
          "maximum": 32767,
          "minimum": 1,
          "type": "integer"
        },
        "topicName": {
          "description": "The name of the topic. When absent this will default to the metadata.name of the topic. It is recommended to not set this unless the topic name is not a valid Kubernetes resource name.",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "The status of the topic.",
      "properties": {
        "conditions": {
          "description": "List of status conditions.",
          "items": {
            "properties": {
              "lastTransitionTime": {
                "description": "Last time the condition of a type changed from one status to another. The required format is 'yyyy-MM-ddTHH:mm:ssZ', in the UTC time zone.",
                "type": "string"
              },
              "message": {
                "description": "Human-readable message indicating details about the condition's last transition.",
                "type": "string"
              },
              "reason": {
                "description": "The reason for the condition's last transition (a single word in CamelCase).",
                "type": "string"
              },
              "status": {
                "description": "The status of the condition, either True, False or Unknown.",
                "type": "string"
              },
              "type": {
                "description": "The unique identifier of a condition, used to distinguish between other conditions in the resource.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "observedGeneration": {
          "description": "The generation of the CRD that was last reconciled by the operator.",
          "type": "integer"
        },
        "replicasChange": {
          "description": "Replication factor change status.",
          "properties": {
            "message": {
              "description": "Message for the user related to the replicas change request. This may contain transient error messages that would disappear on periodic reconciliations.",
              "type": "string"
            },
            "sessionId": {
              "description": "The session identifier for replicas change requests pertaining to this KafkaTopic resource. This is used by the Topic Operator to track the status of `ongoing` replicas change operations.",
              "type": "string"
            },
            "state": {
              "description": "Current state of the replicas change operation. This can be `pending`, when the change has been requested, or `ongoing`, when the change has been successfully submitted to Cruise Control.",
              "enum": [
                "pending",
                "ongoing"
              ],
              "type": "string"
            },
            "targetReplicas": {
              "description": "The target replicas value requested by the user. This may be different from .spec.replicas when a change is ongoing.",
              "type": "integer"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "topicId": {
          "description": "The topic's id. For a KafkaTopic with the ready condition, this will change only if the topic gets deleted and recreated with the same name.",
          "type": "string"
        },
        "topicName": {
          "description": "Topic name.",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
