{
  "description": "Topic defines the CRD for Topic resources. See https://docs.redpanda.com/current/manage/kubernetes/manage-topics/.",
  "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"
    },
    "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"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "Defines the desired state of the Topic resource.",
      "properties": {
        "additionalConfig": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Adds extra topic configurations. This is a free-form map of any configuration options that topics can have.\nExamples:\n`cleanup.policy=compact`\n`redpanda.remote.write=true`\n`redpanda.remote.read=true`\n`redpanda.remote.recovery=true`\n`redpanda.remote.delete=true`",
          "type": "object"
        },
        "cluster": {
          "description": "ClusterSource is a reference to the cluster where the user should be created.\nIt is used in constructing the client created to configure a cluster.",
          "properties": {
            "clusterRef": {
              "description": "ClusterRef is a reference to the cluster where the object should be created.\nIt is used in constructing the client created to configure a cluster.\nThis takes precedence over StaticConfigurationSource.",
              "properties": {
                "name": {
                  "description": "Name specifies the name of the cluster being referenced.",
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "staticConfiguration": {
              "description": "StaticConfiguration holds connection parameters to Kafka and Admin APIs.",
              "properties": {
                "admin": {
                  "description": "AdminAPISpec is the configuration information for communicating with the Admin\nAPI of a Redpanda cluster where the object should be created.",
                  "properties": {
                    "sasl": {
                      "description": "Defines authentication configuration settings for Redpanda clusters that have authentication enabled.",
                      "properties": {
                        "mechanism": {
                          "description": "Specifies the SASL/SCRAM authentication mechanism.",
                          "type": "string"
                        },
                        "passwordSecretRef": {
                          "description": "Specifies the password.",
                          "properties": {
                            "key": {
                              "description": "Key in Secret data to get value from",
                              "type": "string"
                            },
                            "name": {
                              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ],
                          "type": "object",
                          "additionalProperties": false
                        },
                        "token": {
                          "description": "Specifies token for token-based authentication (only used if no username/password are provided).",
                          "properties": {
                            "key": {
                              "description": "Key in Secret data to get value from",
                              "type": "string"
                            },
                            "name": {
                              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ],
                          "type": "object",
                          "additionalProperties": false
                        },
                        "username": {
                          "description": "Specifies the username.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "mechanism"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    },
                    "tls": {
                      "description": "Defines TLS configuration settings for Redpanda clusters that have TLS enabled.",
                      "properties": {
                        "caCertSecretRef": {
                          "description": "CaCert is the reference for certificate authority used to establish TLS connection to Redpanda",
                          "properties": {
                            "key": {
                              "description": "Key in Secret data to get value from",
                              "type": "string"
                            },
                            "name": {
                              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ],
                          "type": "object",
                          "additionalProperties": false
                        },
                        "certSecretRef": {
                          "description": "Cert is the reference for client public certificate to establish mTLS connection to Redpanda",
                          "properties": {
                            "key": {
                              "description": "Key in Secret data to get value from",
                              "type": "string"
                            },
                            "name": {
                              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ],
                          "type": "object",
                          "additionalProperties": false
                        },
                        "insecureSkipTlsVerify": {
                          "description": "InsecureSkipTLSVerify can skip verifying Redpanda self-signed certificate when establish TLS connection to Redpanda",
                          "type": "boolean"
                        },
                        "keySecretRef": {
                          "description": "Key is the reference for client private certificate to establish mTLS connection to Redpanda",
                          "properties": {
                            "key": {
                              "description": "Key in Secret data to get value from",
                              "type": "string"
                            },
                            "name": {
                              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ],
                          "type": "object",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "urls": {
                      "description": "Specifies a list of broker addresses in the format <host>:<port>",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "urls"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "kafka": {
                  "description": "Kafka is the configuration information for communicating with the Kafka\nAPI of a Redpanda cluster where the object should be created.",
                  "properties": {
                    "brokers": {
                      "description": "Specifies a list of broker addresses in the format <host>:<port>",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "sasl": {
                      "description": "Defines authentication configuration settings for Redpanda clusters that have authentication enabled.",
                      "properties": {
                        "awsMskIam": {
                          "description": "KafkaSASLAWSMskIam is the config for AWS IAM SASL mechanism,\nsee: https://docs.aws.amazon.com/msk/latest/developerguide/iam-access-control.html",
                          "properties": {
                            "accessKey": {
                              "type": "string"
                            },
                            "secretKeySecretRef": {
                              "description": "SecretKeyRef contains enough information to inspect or modify the referred Secret data\nSee https://pkg.go.dev/k8s.io/api/core/v1#ObjectReference.",
                              "properties": {
                                "key": {
                                  "description": "Key in Secret data to get value from",
                                  "type": "string"
                                },
                                "name": {
                                  "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "name"
                              ],
                              "type": "object",
                              "additionalProperties": false
                            },
                            "sessionTokenSecretRef": {
                              "description": "SessionToken, if non-empty, is a session / security token to use for authentication.\nSee: https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html",
                              "properties": {
                                "key": {
                                  "description": "Key in Secret data to get value from",
                                  "type": "string"
                                },
                                "name": {
                                  "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "name"
                              ],
                              "type": "object",
                              "additionalProperties": false
                            },
                            "userAgent": {
                              "description": "UserAgent is the user agent to for the client to use when connecting\nto Kafka, overriding the default \"franz-go/<runtime.Version()>/<hostname>\".\n\nSetting a UserAgent allows authorizing based on the aws:UserAgent\ncondition key; see the following link for more details:\nhttps://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-useragent",
                              "type": "string"
                            }
                          },
                          "required": [
                            "accessKey",
                            "secretKeySecretRef",
                            "sessionTokenSecretRef",
                            "userAgent"
                          ],
                          "type": "object",
                          "additionalProperties": false
                        },
                        "gssapi": {
                          "description": "KafkaSASLGSSAPI represents the Kafka Kerberos config.",
                          "properties": {
                            "authType": {
                              "type": "string"
                            },
                            "enableFast": {
                              "description": "EnableFAST enables FAST, which is a pre-authentication framework for Kerberos.\nIt includes a mechanism for tunneling pre-authentication exchanges using armored KDC messages.\nFAST provides increased resistance to passive password guessing attacks.",
                              "type": "boolean"
                            },
                            "kerberosConfigPath": {
                              "type": "string"
                            },
                            "keyTabPath": {
                              "type": "string"
                            },
                            "passwordSecretRef": {
                              "description": "SecretKeyRef contains enough information to inspect or modify the referred Secret data\nSee https://pkg.go.dev/k8s.io/api/core/v1#ObjectReference.",
                              "properties": {
                                "key": {
                                  "description": "Key in Secret data to get value from",
                                  "type": "string"
                                },
                                "name": {
                                  "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "name"
                              ],
                              "type": "object",
                              "additionalProperties": false
                            },
                            "realm": {
                              "type": "string"
                            },
                            "serviceName": {
                              "type": "string"
                            },
                            "username": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "authType",
                            "enableFast",
                            "kerberosConfigPath",
                            "keyTabPath",
                            "passwordSecretRef",
                            "realm",
                            "serviceName",
                            "username"
                          ],
                          "type": "object",
                          "additionalProperties": false
                        },
                        "mechanism": {
                          "description": "Specifies the SASL/SCRAM authentication mechanism.",
                          "type": "string"
                        },
                        "oauth": {
                          "description": "KafkaSASLOAuthBearer is the config struct for the SASL OAuthBearer mechanism",
                          "properties": {
                            "tokenSecretRef": {
                              "description": "SecretKeyRef contains enough information to inspect or modify the referred Secret data\nSee https://pkg.go.dev/k8s.io/api/core/v1#ObjectReference.",
                              "properties": {
                                "key": {
                                  "description": "Key in Secret data to get value from",
                                  "type": "string"
                                },
                                "name": {
                                  "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "name"
                              ],
                              "type": "object",
                              "additionalProperties": false
                            }
                          },
                          "required": [
                            "tokenSecretRef"
                          ],
                          "type": "object",
                          "additionalProperties": false
                        },
                        "passwordSecretRef": {
                          "description": "Specifies the password.",
                          "properties": {
                            "key": {
                              "description": "Key in Secret data to get value from",
                              "type": "string"
                            },
                            "name": {
                              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ],
                          "type": "object",
                          "additionalProperties": false
                        },
                        "username": {
                          "description": "Specifies the username.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "mechanism"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    },
                    "tls": {
                      "description": "Defines TLS configuration settings for Redpanda clusters that have TLS enabled.",
                      "properties": {
                        "caCertSecretRef": {
                          "description": "CaCert is the reference for certificate authority used to establish TLS connection to Redpanda",
                          "properties": {
                            "key": {
                              "description": "Key in Secret data to get value from",
                              "type": "string"
                            },
                            "name": {
                              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ],
                          "type": "object",
                          "additionalProperties": false
                        },
                        "certSecretRef": {
                          "description": "Cert is the reference for client public certificate to establish mTLS connection to Redpanda",
                          "properties": {
                            "key": {
                              "description": "Key in Secret data to get value from",
                              "type": "string"
                            },
                            "name": {
                              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ],
                          "type": "object",
                          "additionalProperties": false
                        },
                        "insecureSkipTlsVerify": {
                          "description": "InsecureSkipTLSVerify can skip verifying Redpanda self-signed certificate when establish TLS connection to Redpanda",
                          "type": "boolean"
                        },
                        "keySecretRef": {
                          "description": "Key is the reference for client private certificate to establish mTLS connection to Redpanda",
                          "properties": {
                            "key": {
                              "description": "Key in Secret data to get value from",
                              "type": "string"
                            },
                            "name": {
                              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ],
                          "type": "object",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "brokers"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "schemaRegistry": {
                  "description": "SchemaRegistry is the configuration information for communicating with the Schema Registry\nAPI of a Redpanda cluster where the object should be created.",
                  "properties": {
                    "sasl": {
                      "description": "Defines authentication configuration settings for Redpanda clusters that have authentication enabled.",
                      "properties": {
                        "mechanism": {
                          "description": "Specifies the SASL/SCRAM authentication mechanism.",
                          "type": "string"
                        },
                        "passwordSecretRef": {
                          "description": "Specifies the password.",
                          "properties": {
                            "key": {
                              "description": "Key in Secret data to get value from",
                              "type": "string"
                            },
                            "name": {
                              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ],
                          "type": "object",
                          "additionalProperties": false
                        },
                        "token": {
                          "description": "SecretKeyRef contains enough information to inspect or modify the referred Secret data\nSee https://pkg.go.dev/k8s.io/api/core/v1#ObjectReference.",
                          "properties": {
                            "key": {
                              "description": "Key in Secret data to get value from",
                              "type": "string"
                            },
                            "name": {
                              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ],
                          "type": "object",
                          "additionalProperties": false
                        },
                        "username": {
                          "description": "Specifies the username.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "mechanism"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    },
                    "tls": {
                      "description": "Defines TLS configuration settings for Redpanda clusters that have TLS enabled.",
                      "properties": {
                        "caCertSecretRef": {
                          "description": "CaCert is the reference for certificate authority used to establish TLS connection to Redpanda",
                          "properties": {
                            "key": {
                              "description": "Key in Secret data to get value from",
                              "type": "string"
                            },
                            "name": {
                              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ],
                          "type": "object",
                          "additionalProperties": false
                        },
                        "certSecretRef": {
                          "description": "Cert is the reference for client public certificate to establish mTLS connection to Redpanda",
                          "properties": {
                            "key": {
                              "description": "Key in Secret data to get value from",
                              "type": "string"
                            },
                            "name": {
                              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ],
                          "type": "object",
                          "additionalProperties": false
                        },
                        "insecureSkipTlsVerify": {
                          "description": "InsecureSkipTLSVerify can skip verifying Redpanda self-signed certificate when establish TLS connection to Redpanda",
                          "type": "boolean"
                        },
                        "keySecretRef": {
                          "description": "Key is the reference for client private certificate to establish mTLS connection to Redpanda",
                          "properties": {
                            "key": {
                              "description": "Key in Secret data to get value from",
                              "type": "string"
                            },
                            "name": {
                              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ],
                          "type": "object",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "urls": {
                      "description": "Specifies a list of broker addresses in the format <host>:<port>",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "urls"
                  ],
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "x-kubernetes-validations": [
            {
              "message": "spec.cluster.staticConfiguration.kafka: required value",
              "rule": "!has(self.staticConfiguration) || has(self.staticConfiguration.kafka)"
            },
            {
              "message": "either clusterRef or staticConfiguration must be set",
              "rule": "has(self.clusterRef) || has(self.staticConfiguration)"
            },
            {
              "message": "ClusterSource is immutable",
              "rule": "self == oldSelf"
            }
          ],
          "additionalProperties": false
        },
        "interval": {
          "default": "3s",
          "description": "Defines when the topic controller will schedule the next reconciliation.\nDefault is 3 seconds.",
          "format": "duration",
          "type": "string"
        },
        "kafkaApiSpec": {
          "description": "Defines client configuration for connecting to Redpanda brokers.\nDeprecated: Use cluster.staticConfiguration.kafkaApiSpec if explicit connection\nconfiguration is required. Otherwise, prefer cluster.clusterRef.",
          "properties": {
            "brokers": {
              "description": "Specifies a list of broker addresses in the format <host>:<port>",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "sasl": {
              "description": "Defines authentication configuration settings for Redpanda clusters that have authentication enabled.",
              "properties": {
                "awsMskIam": {
                  "description": "KafkaSASLAWSMskIam is the config for AWS IAM SASL mechanism,\nsee: https://docs.aws.amazon.com/msk/latest/developerguide/iam-access-control.html",
                  "properties": {
                    "accessKey": {
                      "type": "string"
                    },
                    "secretKeySecretRef": {
                      "description": "SecretKeyRef contains enough information to inspect or modify the referred Secret data\nSee https://pkg.go.dev/k8s.io/api/core/v1#ObjectReference.",
                      "properties": {
                        "key": {
                          "description": "Key in Secret data to get value from",
                          "type": "string"
                        },
                        "name": {
                          "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                          "type": "string"
                        }
                      },
                      "required": [
                        "name"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    },
                    "sessionTokenSecretRef": {
                      "description": "SessionToken, if non-empty, is a session / security token to use for authentication.\nSee: https://docs.aws.amazon.com/STS/latest/APIReference/welcome.html",
                      "properties": {
                        "key": {
                          "description": "Key in Secret data to get value from",
                          "type": "string"
                        },
                        "name": {
                          "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                          "type": "string"
                        }
                      },
                      "required": [
                        "name"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    },
                    "userAgent": {
                      "description": "UserAgent is the user agent to for the client to use when connecting\nto Kafka, overriding the default \"franz-go/<runtime.Version()>/<hostname>\".\n\nSetting a UserAgent allows authorizing based on the aws:UserAgent\ncondition key; see the following link for more details:\nhttps://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-useragent",
                      "type": "string"
                    }
                  },
                  "required": [
                    "accessKey",
                    "secretKeySecretRef",
                    "sessionTokenSecretRef",
                    "userAgent"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "gssapi": {
                  "description": "KafkaSASLGSSAPI represents the Kafka Kerberos config.",
                  "properties": {
                    "authType": {
                      "type": "string"
                    },
                    "enableFast": {
                      "description": "EnableFAST enables FAST, which is a pre-authentication framework for Kerberos.\nIt includes a mechanism for tunneling pre-authentication exchanges using armored KDC messages.\nFAST provides increased resistance to passive password guessing attacks.",
                      "type": "boolean"
                    },
                    "kerberosConfigPath": {
                      "type": "string"
                    },
                    "keyTabPath": {
                      "type": "string"
                    },
                    "passwordSecretRef": {
                      "description": "SecretKeyRef contains enough information to inspect or modify the referred Secret data\nSee https://pkg.go.dev/k8s.io/api/core/v1#ObjectReference.",
                      "properties": {
                        "key": {
                          "description": "Key in Secret data to get value from",
                          "type": "string"
                        },
                        "name": {
                          "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                          "type": "string"
                        }
                      },
                      "required": [
                        "name"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    },
                    "realm": {
                      "type": "string"
                    },
                    "serviceName": {
                      "type": "string"
                    },
                    "username": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "authType",
                    "enableFast",
                    "kerberosConfigPath",
                    "keyTabPath",
                    "passwordSecretRef",
                    "realm",
                    "serviceName",
                    "username"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "mechanism": {
                  "description": "Specifies the SASL/SCRAM authentication mechanism.",
                  "type": "string"
                },
                "oauth": {
                  "description": "KafkaSASLOAuthBearer is the config struct for the SASL OAuthBearer mechanism",
                  "properties": {
                    "tokenSecretRef": {
                      "description": "SecretKeyRef contains enough information to inspect or modify the referred Secret data\nSee https://pkg.go.dev/k8s.io/api/core/v1#ObjectReference.",
                      "properties": {
                        "key": {
                          "description": "Key in Secret data to get value from",
                          "type": "string"
                        },
                        "name": {
                          "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                          "type": "string"
                        }
                      },
                      "required": [
                        "name"
                      ],
                      "type": "object",
                      "additionalProperties": false
                    }
                  },
                  "required": [
                    "tokenSecretRef"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "passwordSecretRef": {
                  "description": "Specifies the password.",
                  "properties": {
                    "key": {
                      "description": "Key in Secret data to get value from",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                      "type": "string"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "username": {
                  "description": "Specifies the username.",
                  "type": "string"
                }
              },
              "required": [
                "mechanism"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "tls": {
              "description": "Defines TLS configuration settings for Redpanda clusters that have TLS enabled.",
              "properties": {
                "caCertSecretRef": {
                  "description": "CaCert is the reference for certificate authority used to establish TLS connection to Redpanda",
                  "properties": {
                    "key": {
                      "description": "Key in Secret data to get value from",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                      "type": "string"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "certSecretRef": {
                  "description": "Cert is the reference for client public certificate to establish mTLS connection to Redpanda",
                  "properties": {
                    "key": {
                      "description": "Key in Secret data to get value from",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                      "type": "string"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "insecureSkipTlsVerify": {
                  "description": "InsecureSkipTLSVerify can skip verifying Redpanda self-signed certificate when establish TLS connection to Redpanda",
                  "type": "boolean"
                },
                "keySecretRef": {
                  "description": "Key is the reference for client private certificate to establish mTLS connection to Redpanda",
                  "properties": {
                    "key": {
                      "description": "Key in Secret data to get value from",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                      "type": "string"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "required": [
            "brokers"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "metricsNamespace": {
          "description": "Overwrites the fully-qualified\nname of the metric. This should be easier to identify if\nmultiple operator instances runs inside the same Kubernetes cluster.\nBy default, it is set to `redpanda-operator`.",
          "type": "string"
        },
        "overwriteTopicName": {
          "description": "Changes the topic name from the value of `metadata.name`.",
          "type": "string"
        },
        "partitions": {
          "description": "Specifies the number of topic shards that are distributed across the brokers in a cluster.\nThis number cannot be decreased after topic creation.\nIt can be increased after topic creation, but it is\nimportant to understand the consequences that has, especially for\ntopics with semantic partitioning. When absent this will default to\nthe Redpanda cluster configuration `default_topic_partitions`.\nSee https://docs.redpanda.com/docs/reference/cluster-properties/#default_topic_partitions and\nhttps://docs.redpanda.com/docs/get-started/architecture/#partitions",
          "type": "integer"
        },
        "replicationFactor": {
          "description": "Specifies the number of replicas the topic should have. Must be odd value.\nWhen absent this will default to the Redpanda cluster configuration `default_topic_replications`.\nSee https://docs.redpanda.com/docs/reference/cluster-properties/#default_topic_replications.",
          "type": "integer"
        }
      },
      "type": "object",
      "x-kubernetes-validations": [
        {
          "message": "cluster must be specified if kafkaApiSpec is not",
          "rule": "has(self.cluster) || has(self.kafkaApiSpec)"
        }
      ],
      "additionalProperties": false
    },
    "status": {
      "description": "Represents the current status of the Topic resource.",
      "properties": {
        "conditions": {
          "description": "Conditions holds the conditions for the Topic.",
          "items": {
            "description": "Condition contains details for one aspect of the current state of this API Resource.",
            "properties": {
              "lastTransitionTime": {
                "description": "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "message is a human readable message indicating details about the transition.\nThis may be an empty string.",
                "maxLength": 32768,
                "type": "string"
              },
              "observedGeneration": {
                "description": "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance.",
                "format": "int64",
                "minimum": 0,
                "type": "integer"
              },
              "reason": {
                "description": "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty.",
                "maxLength": 1024,
                "minLength": 1,
                "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$",
                "type": "string"
              },
              "status": {
                "description": "status of the condition, one of True, False, Unknown.",
                "enum": [
                  "True",
                  "False",
                  "Unknown"
                ],
                "type": "string"
              },
              "type": {
                "description": "type of condition in CamelCase or in foo.example.com/CamelCase.",
                "maxLength": 316,
                "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$",
                "type": "string"
              }
            },
            "required": [
              "lastTransitionTime",
              "message",
              "reason",
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "observedGeneration": {
          "description": "ObservedGeneration is the last observed generation of the Topic.",
          "format": "int64",
          "type": "integer"
        },
        "topicConfiguration": {
          "description": "TopicConfiguration is the last snapshot of the topic configuration during successful reconciliation.",
          "items": {
            "description": "Configuration was copied from https://github.com/twmb/franz-go/blob/01651affd204d4a3577a341e748c5d09b52587f8/pkg/kmsg/generated.go#L24593-L24634",
            "properties": {
              "configSynonyms": {
                "description": "ConfigSynonyms contains fallback key/value pairs for this config\nentry, in order of preference. That is, if a config entry is both\ndynamically configured and has a default, the top level return will be\nthe dynamic configuration, while its \"synonym\" will be the default.",
                "items": {
                  "description": "ConfigSynonyms was copied from https://github.com/twmb/franz-go/blob/01651affd204d4a3577a341e748c5d09b52587f8/pkg/kmsg/generated.go#L24569-L24578",
                  "properties": {
                    "name": {
                      "type": "string"
                    },
                    "source": {
                      "type": "string"
                    },
                    "unknownTags": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "UnknownTags are tags Kafka sent that we do not know the purpose of.",
                      "type": "object"
                    },
                    "value": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "name",
                    "source"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "type": "array"
              },
              "configType": {
                "description": "ConfigType specifies the configuration data type.",
                "type": "string"
              },
              "documentation": {
                "description": "Documentation is optional documentation for the config entry.",
                "type": "string"
              },
              "isDefault": {
                "description": "IsDefault is whether this is a default config option. This has been\nreplaced in favor of Source.",
                "type": "boolean"
              },
              "isSensitive": {
                "description": "IsSensitive signifies whether this is a sensitive config key, which\nis either a password or an unknown type.",
                "type": "boolean"
              },
              "name": {
                "description": "Name is a key this entry corresponds to (e.g. segment.bytes).",
                "type": "string"
              },
              "readOnly": {
                "description": "ReadOnly signifies whether this is not a dynamic config option.\n\nNote that this field is not always correct, and you may need to check\nwhether the Source is any dynamic enum. See franz-go#91 for more details.",
                "type": "boolean"
              },
              "source": {
                "description": "Source is where this config entry is from.\n\nThis field has a default of -1.",
                "type": "string"
              },
              "unknownTags": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "UnknownTags are tags Kafka sent that we do not know the purpose of.",
                "type": "object"
              },
              "value": {
                "description": "Value is the value for this config key. If the key is sensitive,\nthe value will be null.",
                "type": "string"
              }
            },
            "required": [
              "configType",
              "isDefault",
              "isSensitive",
              "name",
              "readOnly",
              "source",
              "unknownTags"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
