{
  "properties": {
    "apiVersion": {
      "type": "string"
    },
    "kind": {
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "properties": {
        "aclFilters": {
          "items": {
            "properties": {
              "accessFilter": {
                "properties": {
                  "host": {
                    "type": "string"
                  },
                  "operation": {
                    "type": "string"
                  },
                  "permissionType": {
                    "enum": [
                      "any",
                      "allow",
                      "deny"
                    ],
                    "type": "string"
                  },
                  "principal": {
                    "type": "string"
                  }
                },
                "required": [
                  "operation",
                  "permissionType"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "resourceFilter": {
                "properties": {
                  "name": {
                    "type": "string"
                  },
                  "patternType": {
                    "enum": [
                      "prefixed",
                      "literal",
                      "any",
                      "match"
                    ],
                    "type": "string"
                  },
                  "resourceType": {
                    "enum": [
                      "any",
                      "cluster",
                      "group",
                      "topic",
                      "transcationId",
                      "delegationToken"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "patternType",
                  "resourceType"
                ],
                "type": "object",
                "additionalProperties": false
              }
            },
            "required": [
              "accessFilter",
              "resourceFilter"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "configs": {
          "additionalProperties": {
            "type": "string"
          },
          "type": "object",
          "x-kubernetes-map-type": "granular"
        },
        "consumerGroupFilters": {
          "items": {
            "properties": {
              "filterType": {
                "enum": [
                  "INCLUDE",
                  "EXCLUDE"
                ],
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "patternType": {
                "enum": [
                  "PREFIXED",
                  "LITERAL"
                ],
                "type": "string"
              }
            },
            "required": [
              "filterType",
              "name",
              "patternType"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "destinationKafkaCluster": {
          "properties": {
            "authentication": {
              "properties": {
                "jaasConfig": {
                  "properties": {
                    "secretRef": {
                      "maxLength": 30,
                      "minLength": 1,
                      "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
                      "type": "string"
                    }
                  },
                  "required": [
                    "secretRef"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "jaasConfigPassThrough": {
                  "properties": {
                    "directoryPathInContainer": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "secretRef": {
                      "maxLength": 30,
                      "minLength": 1,
                      "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "oauthSettings": {
                  "properties": {
                    "audience": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "clientAssertion": {
                      "properties": {
                        "clientId": {
                          "minLength": 1,
                          "type": "string"
                        },
                        "jwtTokenFile": {
                          "properties": {
                            "directoryPathInContainer": {
                              "minLength": 1,
                              "type": "string"
                            },
                            "secretRef": {
                              "maxLength": 30,
                              "minLength": 1,
                              "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
                              "type": "string"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "localClientAssertion": {
                          "properties": {
                            "audience": {
                              "minLength": 1,
                              "type": "string"
                            },
                            "includeJtiClaim": {
                              "type": "boolean"
                            },
                            "includeNbfClaim": {
                              "type": "boolean"
                            },
                            "issuer": {
                              "minLength": 1,
                              "type": "string"
                            },
                            "privateKeyFile": {
                              "properties": {
                                "directoryPathInContainer": {
                                  "minLength": 1,
                                  "type": "string"
                                },
                                "encryptedPrivateKey": {
                                  "type": "boolean"
                                },
                                "includeAssertionTemplate": {
                                  "type": "boolean"
                                },
                                "secretRef": {
                                  "maxLength": 30,
                                  "minLength": 1,
                                  "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
                                  "type": "string"
                                }
                              },
                              "type": "object",
                              "additionalProperties": false
                            },
                            "subject": {
                              "minLength": 1,
                              "type": "string"
                            },
                            "tokenLifetime": {
                              "format": "int32",
                              "type": "integer"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "expectedIssuer": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "groupsClaimName": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "jwksEndpointUri": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "loginConnectTimeoutMs": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "loginReadTimeoutMs": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "loginRetryBackoffMaxMs": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "loginRetryBackoffMs": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "scope": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "subClaimName": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "tokenEndpointUri": {
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "oauthbearer": {
                  "properties": {
                    "directoryPathInContainer": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "secretRef": {
                      "maxLength": 30,
                      "minLength": 1,
                      "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "sslClientAuthentication": {
                  "type": "boolean"
                },
                "type": {
                  "enum": [
                    "plain",
                    "oauthbearer",
                    "digest",
                    "mtls",
                    "oauth",
                    "none"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "type"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "bootstrapEndpoint": {
              "minLength": 1,
              "pattern": ".+:[0-9]+",
              "type": "string"
            },
            "clusterID": {
              "minLength": 1,
              "type": "string"
            },
            "kafkaRestClassRef": {
              "properties": {
                "name": {
                  "minLength": 1,
                  "type": "string"
                },
                "namespace": {
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "tls": {
              "properties": {
                "directoryPathInContainer": {
                  "minLength": 1,
                  "type": "string"
                },
                "enabled": {
                  "type": "boolean"
                },
                "keyPassword": {
                  "properties": {
                    "secretRef": {
                      "maxLength": 30,
                      "minLength": 1,
                      "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
                      "type": "string"
                    }
                  },
                  "required": [
                    "secretRef"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "secretRef": {
                  "maxLength": 63,
                  "minLength": 1,
                  "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
                  "type": "string"
                }
              },
              "required": [
                "enabled"
              ],
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "mirrorTopicOptions": {
          "properties": {
            "autoCreateTopics": {
              "properties": {
                "enabled": {
                  "type": "boolean"
                },
                "topicFilters": {
                  "items": {
                    "properties": {
                      "filterType": {
                        "enum": [
                          "INCLUDE",
                          "EXCLUDE"
                        ],
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "patternType": {
                        "enum": [
                          "PREFIXED",
                          "LITERAL"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "filterType",
                      "name",
                      "patternType"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "prefix": {
              "maxLength": 255,
              "minLength": 1,
              "pattern": "^[a-zA-Z0-9\\._\\-]*$",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "mirrorTopics": {
          "items": {
            "properties": {
              "configs": {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object",
                "x-kubernetes-map-type": "granular"
              },
              "name": {
                "maxLength": 255,
                "minLength": 1,
                "pattern": "^[a-zA-Z0-9\\._\\-]*$",
                "type": "string"
              },
              "replicationFactor": {
                "format": "int32",
                "type": "integer"
              },
              "sourceTopicName": {
                "maxLength": 255,
                "minLength": 1,
                "pattern": "^[a-zA-Z0-9\\._\\-]*$",
                "type": "string"
              },
              "state": {
                "enum": [
                  "PAUSE",
                  "PROMOTE",
                  "FAILOVER",
                  "ACTIVE"
                ],
                "type": "string"
              }
            },
            "required": [
              "name"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "name": {
          "maxLength": 255,
          "minLength": 1,
          "pattern": "^[a-zA-Z0-9\\._\\-]*$",
          "type": "string"
        },
        "sourceInitiatedLink": {
          "properties": {
            "linkMode": {
              "enum": [
                "Source",
                "Destination",
                "Bidirectional"
              ],
              "type": "string"
            }
          },
          "required": [
            "linkMode"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "sourceKafkaCluster": {
          "properties": {
            "authentication": {
              "properties": {
                "jaasConfig": {
                  "properties": {
                    "secretRef": {
                      "maxLength": 30,
                      "minLength": 1,
                      "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
                      "type": "string"
                    }
                  },
                  "required": [
                    "secretRef"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "jaasConfigPassThrough": {
                  "properties": {
                    "directoryPathInContainer": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "secretRef": {
                      "maxLength": 30,
                      "minLength": 1,
                      "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "oauthSettings": {
                  "properties": {
                    "audience": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "clientAssertion": {
                      "properties": {
                        "clientId": {
                          "minLength": 1,
                          "type": "string"
                        },
                        "jwtTokenFile": {
                          "properties": {
                            "directoryPathInContainer": {
                              "minLength": 1,
                              "type": "string"
                            },
                            "secretRef": {
                              "maxLength": 30,
                              "minLength": 1,
                              "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
                              "type": "string"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "localClientAssertion": {
                          "properties": {
                            "audience": {
                              "minLength": 1,
                              "type": "string"
                            },
                            "includeJtiClaim": {
                              "type": "boolean"
                            },
                            "includeNbfClaim": {
                              "type": "boolean"
                            },
                            "issuer": {
                              "minLength": 1,
                              "type": "string"
                            },
                            "privateKeyFile": {
                              "properties": {
                                "directoryPathInContainer": {
                                  "minLength": 1,
                                  "type": "string"
                                },
                                "encryptedPrivateKey": {
                                  "type": "boolean"
                                },
                                "includeAssertionTemplate": {
                                  "type": "boolean"
                                },
                                "secretRef": {
                                  "maxLength": 30,
                                  "minLength": 1,
                                  "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
                                  "type": "string"
                                }
                              },
                              "type": "object",
                              "additionalProperties": false
                            },
                            "subject": {
                              "minLength": 1,
                              "type": "string"
                            },
                            "tokenLifetime": {
                              "format": "int32",
                              "type": "integer"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "expectedIssuer": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "groupsClaimName": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "jwksEndpointUri": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "loginConnectTimeoutMs": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "loginReadTimeoutMs": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "loginRetryBackoffMaxMs": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "loginRetryBackoffMs": {
                      "format": "int32",
                      "type": "integer"
                    },
                    "scope": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "subClaimName": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "tokenEndpointUri": {
                      "minLength": 1,
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "oauthbearer": {
                  "properties": {
                    "directoryPathInContainer": {
                      "minLength": 1,
                      "type": "string"
                    },
                    "secretRef": {
                      "maxLength": 30,
                      "minLength": 1,
                      "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "sslClientAuthentication": {
                  "type": "boolean"
                },
                "type": {
                  "enum": [
                    "plain",
                    "oauthbearer",
                    "digest",
                    "mtls",
                    "oauth",
                    "none"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "type"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "bootstrapEndpoint": {
              "minLength": 1,
              "pattern": ".+:[0-9]+",
              "type": "string"
            },
            "clusterID": {
              "minLength": 1,
              "type": "string"
            },
            "kafkaRestClassRef": {
              "properties": {
                "name": {
                  "minLength": 1,
                  "type": "string"
                },
                "namespace": {
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "tls": {
              "properties": {
                "directoryPathInContainer": {
                  "minLength": 1,
                  "type": "string"
                },
                "enabled": {
                  "type": "boolean"
                },
                "keyPassword": {
                  "properties": {
                    "secretRef": {
                      "maxLength": 30,
                      "minLength": 1,
                      "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
                      "type": "string"
                    }
                  },
                  "required": [
                    "secretRef"
                  ],
                  "type": "object",
                  "additionalProperties": false
                },
                "secretRef": {
                  "maxLength": 63,
                  "minLength": 1,
                  "pattern": "^[a-z0-9]([-a-z0-9]*[a-z0-9])?$",
                  "type": "string"
                }
              },
              "required": [
                "enabled"
              ],
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "destinationKafkaCluster",
        "sourceKafkaCluster"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "properties": {
        "appState": {
          "default": "Unknown",
          "enum": [
            "Unknown",
            "Created",
            "Failed",
            "Deleted"
          ],
          "type": "string"
        },
        "clusterLinkID": {
          "type": "string"
        },
        "clusterLinkName": {
          "type": "string"
        },
        "conditions": {
          "items": {
            "properties": {
              "lastProbeTime": {
                "format": "date-time",
                "type": "string"
              },
              "lastTransitionTime": {
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              },
              "status": {
                "type": "string"
              },
              "type": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "destinationKafkaClusterID": {
          "type": "string"
        },
        "kafkaCluster": {
          "type": "string"
        },
        "mirrorTopics": {
          "additionalProperties": {
            "properties": {
              "observedGeneration": {
                "format": "int64",
                "type": "integer"
              },
              "replicationFactor": {
                "format": "int32",
                "type": "integer"
              },
              "sourceTopicName": {
                "type": "string"
              },
              "status": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "object",
          "x-kubernetes-map-type": "granular"
        },
        "numMirrorTopics": {
          "type": "integer"
        },
        "observedGeneration": {
          "format": "int64",
          "type": "integer"
        },
        "sourceKafkaClusterID": {
          "type": "string"
        },
        "state": {
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}
