{
  "description": "The MongoDBOpsManager resource allows you to deploy Ops Manager within your Kubernetes cluster",
  "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",
        "null"
      ]
    },
    "spec": {
      "additionalProperties": false,
      "properties": {
        "adminCredentials": {
          "description": "AdminSecret is the secret for the first admin user to create\nhas the fields: \"Username\", \"Password\", \"FirstName\", \"LastName\"",
          "type": [
            "string",
            "null"
          ]
        },
        "applicationDatabase": {
          "additionalProperties": false,
          "properties": {
            "additionalMongodConfig": {
              "description": "AdditionalMongodConfig are additional configurations that can be passed to\neach data-bearing mongod at runtime. Uses the same structure as the mongod\nconfiguration file:\nhttps://docs.mongodb.com/manual/reference/configuration-options/",
              "type": [
                "object",
                "null"
              ],
              "x-kubernetes-preserve-unknown-fields": true
            },
            "agent": {
              "additionalProperties": false,
              "description": "specify configuration like startup flags and automation config settings for the AutomationAgent and MonitoringAgent",
              "properties": {
                "backupAgent": {
                  "additionalProperties": false,
                  "properties": {
                    "logRotate": {
                      "additionalProperties": false,
                      "description": "LogRotate configures log rotation for the BackupAgent processes",
                      "properties": {
                        "sizeThresholdMB": {
                          "description": "Maximum size for an individual log file before rotation.\nOM only supports ints",
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "timeThresholdHrs": {
                          "description": "Number of hours after which this MongoDB Agent rotates the log file.",
                          "type": [
                            "integer",
                            "null"
                          ]
                        }
                      },
                      "type": [
                        "object",
                        "null"
                      ]
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "logLevel": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "logRotate": {
                  "additionalProperties": false,
                  "description": "DEPRECATED please use mongod.logRotate",
                  "properties": {
                    "includeAuditLogsWithMongoDBLogs": {
                      "description": "set to 'true' to have the Automation Agent rotate the audit files along\nwith mongodb log files",
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "numTotal": {
                      "description": "maximum number of log files to have total",
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "numUncompressed": {
                      "description": "maximum number of log files to leave uncompressed",
                      "type": [
                        "integer",
                        "null"
                      ]
                    },
                    "percentOfDiskspace": {
                      "description": "Maximum percentage of the total disk space these log files should take up.\nThe string needs to be able to be converted to float64",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "sizeThresholdMB": {
                      "description": "Maximum size for an individual log file before rotation.\nThe string needs to be able to be converted to float64.\nFractional values of MB are supported.",
                      "type": "string"
                    },
                    "timeThresholdHrs": {
                      "description": "maximum hours for an individual log file before rotation",
                      "type": "integer"
                    }
                  },
                  "required": [
                    "sizeThresholdMB",
                    "timeThresholdHrs"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "maxLogFileDurationHours": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "mongod": {
                  "additionalProperties": false,
                  "description": "AgentLoggingMongodConfig contain settings for the mongodb processes configured by the agent",
                  "properties": {
                    "auditlogRotate": {
                      "additionalProperties": false,
                      "description": "LogRotate configures audit log rotation for the mongodb processes",
                      "properties": {
                        "includeAuditLogsWithMongoDBLogs": {
                          "description": "set to 'true' to have the Automation Agent rotate the audit files along\nwith mongodb log files",
                          "type": [
                            "boolean",
                            "null"
                          ]
                        },
                        "numTotal": {
                          "description": "maximum number of log files to have total",
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "numUncompressed": {
                          "description": "maximum number of log files to leave uncompressed",
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "percentOfDiskspace": {
                          "description": "Maximum percentage of the total disk space these log files should take up.\nThe string needs to be able to be converted to float64",
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "sizeThresholdMB": {
                          "description": "Maximum size for an individual log file before rotation.\nThe string needs to be able to be converted to float64.\nFractional values of MB are supported.",
                          "type": "string"
                        },
                        "timeThresholdHrs": {
                          "description": "maximum hours for an individual log file before rotation",
                          "type": "integer"
                        }
                      },
                      "required": [
                        "sizeThresholdMB",
                        "timeThresholdHrs"
                      ],
                      "type": [
                        "object",
                        "null"
                      ]
                    },
                    "logRotate": {
                      "additionalProperties": false,
                      "description": "LogRotate configures log rotation for the mongodb processes",
                      "properties": {
                        "includeAuditLogsWithMongoDBLogs": {
                          "description": "set to 'true' to have the Automation Agent rotate the audit files along\nwith mongodb log files",
                          "type": [
                            "boolean",
                            "null"
                          ]
                        },
                        "numTotal": {
                          "description": "maximum number of log files to have total",
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "numUncompressed": {
                          "description": "maximum number of log files to leave uncompressed",
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "percentOfDiskspace": {
                          "description": "Maximum percentage of the total disk space these log files should take up.\nThe string needs to be able to be converted to float64",
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "sizeThresholdMB": {
                          "description": "Maximum size for an individual log file before rotation.\nThe string needs to be able to be converted to float64.\nFractional values of MB are supported.",
                          "type": "string"
                        },
                        "timeThresholdHrs": {
                          "description": "maximum hours for an individual log file before rotation",
                          "type": "integer"
                        }
                      },
                      "required": [
                        "sizeThresholdMB",
                        "timeThresholdHrs"
                      ],
                      "type": [
                        "object",
                        "null"
                      ]
                    },
                    "systemLog": {
                      "additionalProperties": false,
                      "description": "SystemLog configures system log of mongod",
                      "properties": {
                        "destination": {
                          "type": "string"
                        },
                        "logAppend": {
                          "type": "boolean"
                        },
                        "path": {
                          "type": "string"
                        }
                      },
                      "required": [
                        "destination",
                        "logAppend",
                        "path"
                      ],
                      "type": [
                        "object",
                        "null"
                      ]
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "monitoringAgent": {
                  "additionalProperties": false,
                  "properties": {
                    "logRotate": {
                      "additionalProperties": false,
                      "description": "LogRotate configures log rotation for the BackupAgent processes",
                      "properties": {
                        "sizeThresholdMB": {
                          "description": "Maximum size for an individual log file before rotation.\nOM only supports ints",
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "timeThresholdHrs": {
                          "description": "Number of hours after which this MongoDB Agent rotates the log file.",
                          "type": [
                            "integer",
                            "null"
                          ]
                        }
                      },
                      "type": [
                        "object",
                        "null"
                      ]
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "readinessProbe": {
                  "additionalProperties": false,
                  "properties": {
                    "environmentVariables": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "type": [
                        "object",
                        "null"
                      ]
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "startupOptions": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "StartupParameters can be used to configure the startup parameters with which the agent starts. That also contains\nlog rotation settings as defined here:",
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "systemLog": {
                  "additionalProperties": false,
                  "description": "DEPRECATED please use mongod.systemLog",
                  "properties": {
                    "destination": {
                      "type": "string"
                    },
                    "logAppend": {
                      "type": "boolean"
                    },
                    "path": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "destination",
                    "logAppend",
                    "path"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "automationConfig": {
              "additionalProperties": false,
              "description": "AutomationConfigOverride holds any fields that will be merged on top of the Automation Config\nthat the operator creates for the AppDB. Currently only the process.disabled and logRotate field is recognized.",
              "properties": {
                "processes": {
                  "items": {
                    "additionalProperties": false,
                    "description": "OverrideProcess contains fields that we can override on the AutomationConfig processes.",
                    "properties": {
                      "disabled": {
                        "type": "boolean"
                      },
                      "logRotate": {
                        "additionalProperties": false,
                        "description": "CrdLogRotate is the crd definition of LogRotate including fields in strings while the agent supports them as float64",
                        "properties": {
                          "includeAuditLogsWithMongoDBLogs": {
                            "description": "set to 'true' to have the Automation Agent rotate the audit files along\nwith mongodb log files",
                            "type": [
                              "boolean",
                              "null"
                            ]
                          },
                          "numTotal": {
                            "description": "maximum number of log files to have total",
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "numUncompressed": {
                            "description": "maximum number of log files to leave uncompressed",
                            "type": [
                              "integer",
                              "null"
                            ]
                          },
                          "percentOfDiskspace": {
                            "description": "Maximum percentage of the total disk space these log files should take up.\nThe string needs to be able to be converted to float64",
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "sizeThresholdMB": {
                            "description": "Maximum size for an individual log file before rotation.\nThe string needs to be able to be converted to float64.\nFractional values of MB are supported.",
                            "type": "string"
                          },
                          "timeThresholdHrs": {
                            "description": "maximum hours for an individual log file before rotation",
                            "type": "integer"
                          }
                        },
                        "required": [
                          "sizeThresholdMB",
                          "timeThresholdHrs"
                        ],
                        "type": [
                          "object",
                          "null"
                        ]
                      },
                      "name": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "disabled",
                      "name"
                    ],
                    "type": "object"
                  },
                  "type": [
                    "array",
                    "null"
                  ]
                },
                "replicaSet": {
                  "additionalProperties": false,
                  "properties": {
                    "id": {
                      "description": "Id can be used together with additionalMongodConfig.replication.replSetName\nto manage clusters where replSetName differs from the MongoDBCommunity resource name",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "settings": {
                      "description": "MapWrapper is a wrapper for a map to be used by other structs.\nThe CRD generator does not support map[string]interface{}\non the top level and hence we need to work around this with\na wrapping struct.",
                      "type": [
                        "object",
                        "null"
                      ],
                      "x-kubernetes-preserve-unknown-fields": true
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "cloudManager": {
              "additionalProperties": false,
              "properties": {
                "configMapRef": {
                  "additionalProperties": false,
                  "properties": {
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "clusterDomain": {
              "type": [
                "string",
                "null"
              ]
            },
            "clusterSpecList": {
              "items": {
                "additionalProperties": false,
                "description": "ClusterSpecItem is the mongodb multi-cluster spec that is specific to a\nparticular Kubernetes cluster, this maps to the statefulset created in each cluster",
                "properties": {
                  "clusterName": {
                    "description": "ClusterName is name of the cluster where the MongoDB Statefulset will be scheduled, the\nname should have a one on one mapping with the service-account created in the central cluster\nto talk to the workload clusters.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "externalAccess": {
                    "additionalProperties": false,
                    "description": "ExternalAccessConfiguration provides external access configuration for Multi-Cluster.",
                    "properties": {
                      "externalDomain": {
                        "description": "An external domain that is used for exposing MongoDB to the outside world.",
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "externalService": {
                        "additionalProperties": false,
                        "description": "Provides a way to override the default (NodePort) Service",
                        "properties": {
                          "annotations": {
                            "additionalProperties": {
                              "type": "string"
                            },
                            "description": "A map of annotations that shall be added to the externally available Service.",
                            "type": [
                              "object",
                              "null"
                            ]
                          },
                          "spec": {
                            "description": "A wrapper for the Service spec object.",
                            "type": [
                              "object",
                              "null"
                            ],
                            "x-kubernetes-preserve-unknown-fields": true
                          }
                        },
                        "type": [
                          "object",
                          "null"
                        ]
                      }
                    },
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "memberConfig": {
                    "description": "MemberConfig allows to specify votes, priorities and tags for each of the mongodb process.",
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "priority": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "tags": {
                          "additionalProperties": {
                            "type": "string"
                          },
                          "type": [
                            "object",
                            "null"
                          ]
                        },
                        "votes": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        }
                      },
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "members": {
                    "description": "Amount of members for this MongoDB Replica Set",
                    "type": "integer"
                  },
                  "podSpec": {
                    "additionalProperties": false,
                    "properties": {
                      "persistence": {
                        "additionalProperties": false,
                        "description": "Note, that this field is used by MongoDB resources only, let's keep it here for simplicity",
                        "properties": {
                          "multiple": {
                            "additionalProperties": false,
                            "properties": {
                              "data": {
                                "additionalProperties": false,
                                "properties": {
                                  "labelSelector": {
                                    "type": [
                                      "object",
                                      "null"
                                    ],
                                    "x-kubernetes-preserve-unknown-fields": true
                                  },
                                  "storage": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "storageClass": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  }
                                },
                                "type": [
                                  "object",
                                  "null"
                                ]
                              },
                              "journal": {
                                "additionalProperties": false,
                                "properties": {
                                  "labelSelector": {
                                    "type": [
                                      "object",
                                      "null"
                                    ],
                                    "x-kubernetes-preserve-unknown-fields": true
                                  },
                                  "storage": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "storageClass": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  }
                                },
                                "type": [
                                  "object",
                                  "null"
                                ]
                              },
                              "logs": {
                                "additionalProperties": false,
                                "properties": {
                                  "labelSelector": {
                                    "type": [
                                      "object",
                                      "null"
                                    ],
                                    "x-kubernetes-preserve-unknown-fields": true
                                  },
                                  "storage": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  },
                                  "storageClass": {
                                    "type": [
                                      "string",
                                      "null"
                                    ]
                                  }
                                },
                                "type": [
                                  "object",
                                  "null"
                                ]
                              }
                            },
                            "type": [
                              "object",
                              "null"
                            ]
                          },
                          "single": {
                            "additionalProperties": false,
                            "properties": {
                              "labelSelector": {
                                "type": [
                                  "object",
                                  "null"
                                ],
                                "x-kubernetes-preserve-unknown-fields": true
                              },
                              "storage": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              },
                              "storageClass": {
                                "type": [
                                  "string",
                                  "null"
                                ]
                              }
                            },
                            "type": [
                              "object",
                              "null"
                            ]
                          }
                        },
                        "type": [
                          "object",
                          "null"
                        ]
                      },
                      "podTemplate": {
                        "type": [
                          "object",
                          "null"
                        ],
                        "x-kubernetes-preserve-unknown-fields": true
                      }
                    },
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "service": {
                    "description": "this is an optional service, it will get the name \"\u003crsName\u003e-service\" in case not provided",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "statefulSet": {
                    "additionalProperties": false,
                    "description": "StatefulSetConfiguration holds the optional custom StatefulSet\nthat should be merged into the operator created one.",
                    "properties": {
                      "metadata": {
                        "additionalProperties": false,
                        "description": "StatefulSetMetadataWrapper is a wrapper around Labels and Annotations",
                        "properties": {
                          "annotations": {
                            "additionalProperties": {
                              "type": "string"
                            },
                            "type": [
                              "object",
                              "null"
                            ]
                          },
                          "labels": {
                            "additionalProperties": {
                              "type": "string"
                            },
                            "type": [
                              "object",
                              "null"
                            ]
                          }
                        },
                        "type": [
                          "object",
                          "null"
                        ]
                      },
                      "spec": {
                        "type": "object",
                        "x-kubernetes-preserve-unknown-fields": true
                      }
                    },
                    "required": [
                      "spec"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  }
                },
                "required": [
                  "members"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "connectivity": {
              "additionalProperties": false,
              "properties": {
                "replicaSetHorizons": {
                  "description": "ReplicaSetHorizons holds list of maps of horizons to be configured in each of MongoDB processes.\nHorizons map horizon names to the node addresses for each process in the replicaset, e.g.:\n [\n   {\n     \"internal\": \"my-rs-0.my-internal-domain.com:31843\",\n     \"external\": \"my-rs-0.my-external-domain.com:21467\"\n   },\n   {\n     \"internal\": \"my-rs-1.my-internal-domain.com:31843\",\n     \"external\": \"my-rs-1.my-external-domain.com:21467\"\n   },\n   ...\n ]\nThe key of each item in the map is an arbitrary, user-chosen string that\nrepresents the name of the horizon. The value of the item is the host and,\noptionally, the port that this mongod node will be connected to from.",
                  "items": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "type": "object"
                  },
                  "type": [
                    "array",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "credentials": {
              "description": "Name of the Secret holding credentials information",
              "type": [
                "string",
                "null"
              ]
            },
            "externalAccess": {
              "additionalProperties": false,
              "description": "ExternalAccessConfiguration provides external access configuration.",
              "properties": {
                "externalDomain": {
                  "description": "An external domain that is used for exposing MongoDB to the outside world.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "externalService": {
                  "additionalProperties": false,
                  "description": "Provides a way to override the default (NodePort) Service",
                  "properties": {
                    "annotations": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "description": "A map of annotations that shall be added to the externally available Service.",
                      "type": [
                        "object",
                        "null"
                      ]
                    },
                    "spec": {
                      "description": "A wrapper for the Service spec object.",
                      "type": [
                        "object",
                        "null"
                      ],
                      "x-kubernetes-preserve-unknown-fields": true
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "featureCompatibilityVersion": {
              "type": [
                "string",
                "null"
              ]
            },
            "memberConfig": {
              "description": "MemberConfig allows to specify votes, priorities and tags for each of the mongodb process.",
              "items": {
                "additionalProperties": false,
                "properties": {
                  "priority": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "tags": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "votes": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  }
                },
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "members": {
              "description": "Amount of members for this MongoDB Replica Set",
              "maximum": 50,
              "minimum": 3,
              "type": [
                "integer",
                "null"
              ]
            },
            "monitoringAgent": {
              "additionalProperties": false,
              "description": "Specify configuration like startup flags just for the MonitoringAgent.\nThese take precedence over\nthe flags set in AutomationAgent",
              "properties": {
                "startupOptions": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "StartupParameters can be used to configure the startup parameters with which the agent starts. That also contains\nlog rotation settings as defined here:",
                  "type": "object"
                }
              },
              "required": [
                "startupOptions"
              ],
              "type": [
                "object",
                "null"
              ]
            },
            "opsManager": {
              "additionalProperties": false,
              "properties": {
                "configMapRef": {
                  "additionalProperties": false,
                  "properties": {
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "passwordSecretKeyRef": {
              "additionalProperties": false,
              "description": "PasswordSecretKeyRef contains a reference to the secret which contains the password\nfor the mongodb-ops-manager SCRAM-SHA user",
              "properties": {
                "key": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": {
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": [
                "object",
                "null"
              ]
            },
            "podSpec": {
              "additionalProperties": false,
              "properties": {
                "persistence": {
                  "additionalProperties": false,
                  "description": "Note, that this field is used by MongoDB resources only, let's keep it here for simplicity",
                  "properties": {
                    "multiple": {
                      "additionalProperties": false,
                      "properties": {
                        "data": {
                          "additionalProperties": false,
                          "properties": {
                            "labelSelector": {
                              "type": [
                                "object",
                                "null"
                              ],
                              "x-kubernetes-preserve-unknown-fields": true
                            },
                            "storage": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "storageClass": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "type": [
                            "object",
                            "null"
                          ]
                        },
                        "journal": {
                          "additionalProperties": false,
                          "properties": {
                            "labelSelector": {
                              "type": [
                                "object",
                                "null"
                              ],
                              "x-kubernetes-preserve-unknown-fields": true
                            },
                            "storage": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "storageClass": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "type": [
                            "object",
                            "null"
                          ]
                        },
                        "logs": {
                          "additionalProperties": false,
                          "properties": {
                            "labelSelector": {
                              "type": [
                                "object",
                                "null"
                              ],
                              "x-kubernetes-preserve-unknown-fields": true
                            },
                            "storage": {
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "storageClass": {
                              "type": [
                                "string",
                                "null"
                              ]
                            }
                          },
                          "type": [
                            "object",
                            "null"
                          ]
                        }
                      },
                      "type": [
                        "object",
                        "null"
                      ]
                    },
                    "single": {
                      "additionalProperties": false,
                      "properties": {
                        "labelSelector": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "x-kubernetes-preserve-unknown-fields": true
                        },
                        "storage": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "storageClass": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "type": [
                        "object",
                        "null"
                      ]
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "podTemplate": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "x-kubernetes-preserve-unknown-fields": true
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "prometheus": {
              "additionalProperties": false,
              "description": "Enables Prometheus integration on the AppDB.",
              "properties": {
                "metricsPath": {
                  "description": "Indicates path to the metrics endpoint.",
                  "pattern": "^\\/[a-z0-9]+$",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "passwordSecretRef": {
                  "additionalProperties": false,
                  "description": "Name of a Secret containing a HTTP Basic Auth Password.",
                  "properties": {
                    "key": {
                      "description": "Key is the key in the secret storing this password. Defaults to \"password\"",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "name": {
                      "description": "Name is the name of the secret storing this user's password",
                      "type": "string"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "type": "object"
                },
                "port": {
                  "description": "Port where metrics endpoint will bind to. Defaults to 9216.",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "tlsSecretKeyRef": {
                  "additionalProperties": false,
                  "description": "Name of a Secret (type kubernetes.io/tls) holding the certificates to use in the\nPrometheus endpoint.",
                  "properties": {
                    "key": {
                      "description": "Key is the key in the secret storing this password. Defaults to \"password\"",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "name": {
                      "description": "Name is the name of the secret storing this user's password",
                      "type": "string"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "username": {
                  "description": "HTTP Basic Auth Username for metrics endpoint.",
                  "type": "string"
                }
              },
              "required": [
                "passwordSecretRef",
                "username"
              ],
              "type": [
                "object",
                "null"
              ]
            },
            "security": {
              "additionalProperties": false,
              "properties": {
                "authentication": {
                  "additionalProperties": false,
                  "description": "Authentication holds various authentication related settings that affect\nthis MongoDB resource.",
                  "properties": {
                    "agents": {
                      "additionalProperties": false,
                      "description": "Agents contains authentication configuration properties for the agents",
                      "properties": {
                        "automationLdapGroupDN": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "automationPasswordSecretRef": {
                          "additionalProperties": false,
                          "description": "SecretKeySelector selects a key of a Secret.",
                          "properties": {
                            "key": {
                              "description": "The key of the secret to select from.  Must be a valid secret key.",
                              "type": "string"
                            },
                            "name": {
                              "default": "",
                              "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "optional": {
                              "description": "Specify whether the Secret or its key must be defined",
                              "type": [
                                "boolean",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "key"
                          ],
                          "type": [
                            "object",
                            "null"
                          ],
                          "x-kubernetes-map-type": "atomic"
                        },
                        "automationUserName": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "clientCertificateSecretRef": {
                          "type": [
                            "object",
                            "null"
                          ],
                          "x-kubernetes-preserve-unknown-fields": true
                        },
                        "mode": {
                          "description": "Mode is the desired Authentication mode that the agents will use",
                          "type": "string"
                        }
                      },
                      "required": [
                        "mode"
                      ],
                      "type": [
                        "object",
                        "null"
                      ]
                    },
                    "enabled": {
                      "type": "boolean"
                    },
                    "ignoreUnknownUsers": {
                      "description": "IgnoreUnknownUsers maps to the inverse of auth.authoritativeSet",
                      "type": [
                        "boolean",
                        "null"
                      ]
                    },
                    "internalCluster": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "ldap": {
                      "additionalProperties": false,
                      "description": "LDAP Configuration",
                      "properties": {
                        "authzQueryTemplate": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "bindQueryPasswordSecretRef": {
                          "additionalProperties": false,
                          "properties": {
                            "name": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "name"
                          ],
                          "type": [
                            "object",
                            "null"
                          ]
                        },
                        "bindQueryUser": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "caConfigMapRef": {
                          "additionalProperties": false,
                          "description": "Allows to point at a ConfigMap/key with a CA file to mount on the Pod",
                          "properties": {
                            "key": {
                              "description": "The key to select.",
                              "type": "string"
                            },
                            "name": {
                              "default": "",
                              "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                              "type": [
                                "string",
                                "null"
                              ]
                            },
                            "optional": {
                              "description": "Specify whether the ConfigMap or its key must be defined",
                              "type": [
                                "boolean",
                                "null"
                              ]
                            }
                          },
                          "required": [
                            "key"
                          ],
                          "type": [
                            "object",
                            "null"
                          ],
                          "x-kubernetes-map-type": "atomic"
                        },
                        "servers": {
                          "items": {
                            "type": "string"
                          },
                          "type": [
                            "array",
                            "null"
                          ]
                        },
                        "timeoutMS": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "transportSecurity": {
                          "enum": [
                            "tls",
                            "none"
                          ],
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "userCacheInvalidationInterval": {
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "userToDNMapping": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "validateLDAPServerConfig": {
                          "type": [
                            "boolean",
                            "null"
                          ]
                        }
                      },
                      "type": [
                        "object",
                        "null"
                      ]
                    },
                    "modes": {
                      "items": {
                        "enum": [
                          "X509",
                          "SCRAM",
                          "SCRAM-SHA-1",
                          "MONGODB-CR",
                          "SCRAM-SHA-256",
                          "LDAP",
                          "OIDC"
                        ],
                        "type": "string"
                      },
                      "type": [
                        "array",
                        "null"
                      ]
                    },
                    "oidcProviderConfigs": {
                      "description": "Configuration for OIDC providers",
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "audience": {
                            "description": "Entity that your external identity provider intends the token for.\nEnter the audience value from the app you registered with external Identity Provider.",
                            "type": "string"
                          },
                          "authorizationMethod": {
                            "description": "Configure single-sign-on for human user access to deployments with Workforce Identity Federation.\nFor programmatic, application access to deployments use Workload Identity Federation.\nOnly one Workforce Identity Federation IdP can be configured per MongoDB resource",
                            "enum": [
                              "WorkforceIdentityFederation",
                              "WorkloadIdentityFederation"
                            ],
                            "type": "string"
                          },
                          "authorizationType": {
                            "description": "Select GroupMembership to grant authorization based on IdP user group membership, or select UserID to grant\nan individual user authorization.",
                            "enum": [
                              "GroupMembership",
                              "UserID"
                            ],
                            "type": "string"
                          },
                          "clientId": {
                            "description": "Unique identifier for your registered application. Enter the clientId value from the app you\nregistered with an external Identity Provider.\nRequired when selected Workforce Identity Federation authorization method",
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "configurationName": {
                            "description": "Unique label that identifies this configuration. It is case-sensitive and can only contain the following characters:\n - alphanumeric characters (combination of a to z and 0 to 9)\n - hyphens (-)\n - underscores (_)",
                            "pattern": "^[a-zA-Z0-9-_]+$",
                            "type": "string"
                          },
                          "groupsClaim": {
                            "description": "The identifier of the claim that includes the principal's IdP user group membership information.\nRequired when selected GroupMembership as the authorization type, ignored otherwise",
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "issuerURI": {
                            "description": "Issuer value provided by your registered IdP application. Using this URI, MongoDB finds an OpenID Connect Provider\nConfiguration Document, which should be available in the /.wellknown/open-id-configuration endpoint.\nFor MongoDB 8.0+, the combination of issuerURI and audience must be unique across OIDC provider configurations.\nFor other MongoDB versions, the issuerURI itself must be unique.",
                            "type": "string"
                          },
                          "requestedScopes": {
                            "description": "Tokens that give users permission to request data from the authorization endpoint.\nOnly used for Workforce Identity Federation authorization method",
                            "items": {
                              "type": "string"
                            },
                            "type": [
                              "array",
                              "null"
                            ]
                          },
                          "userClaim": {
                            "default": "sub",
                            "description": "The identifier of the claim that includes the user principal identity.\nAccept the default value unless your IdP uses a different claim.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "audience",
                          "authorizationMethod",
                          "authorizationType",
                          "configurationName",
                          "issuerURI",
                          "userClaim"
                        ],
                        "type": "object"
                      },
                      "type": [
                        "array",
                        "null"
                      ]
                    },
                    "requireClientTLSAuthentication": {
                      "description": "Clients should present valid TLS certificates",
                      "type": [
                        "boolean",
                        "null"
                      ]
                    }
                  },
                  "required": [
                    "enabled"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "certsSecretPrefix": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "roleRefs": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "kind": {
                        "enum": [
                          "ClusterMongoDBRole"
                        ],
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "name"
                    ],
                    "type": "object"
                  },
                  "type": [
                    "array",
                    "null"
                  ]
                },
                "roles": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "authenticationRestrictions": {
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "clientSource": {
                              "items": {
                                "type": "string"
                              },
                              "type": [
                                "array",
                                "null"
                              ]
                            },
                            "serverAddress": {
                              "items": {
                                "type": "string"
                              },
                              "type": [
                                "array",
                                "null"
                              ]
                            }
                          },
                          "type": "object"
                        },
                        "type": [
                          "array",
                          "null"
                        ]
                      },
                      "db": {
                        "type": "string"
                      },
                      "privileges": {
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "actions": {
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            },
                            "resource": {
                              "additionalProperties": false,
                              "properties": {
                                "cluster": {
                                  "type": [
                                    "boolean",
                                    "null"
                                  ]
                                },
                                "collection": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "db": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                }
                              },
                              "type": "object"
                            }
                          },
                          "required": [
                            "actions",
                            "resource"
                          ],
                          "type": "object"
                        },
                        "type": [
                          "array",
                          "null"
                        ]
                      },
                      "role": {
                        "type": "string"
                      },
                      "roles": {
                        "items": {
                          "additionalProperties": false,
                          "properties": {
                            "db": {
                              "type": "string"
                            },
                            "role": {
                              "type": "string"
                            }
                          },
                          "required": [
                            "db",
                            "role"
                          ],
                          "type": "object"
                        },
                        "type": [
                          "array",
                          "null"
                        ]
                      }
                    },
                    "required": [
                      "db",
                      "role"
                    ],
                    "type": "object"
                  },
                  "type": [
                    "array",
                    "null"
                  ]
                },
                "tls": {
                  "additionalProperties": false,
                  "properties": {
                    "additionalCertificateDomains": {
                      "items": {
                        "type": "string"
                      },
                      "type": [
                        "array",
                        "null"
                      ]
                    },
                    "ca": {
                      "description": "CA corresponds to a ConfigMap containing an entry for the CA certificate (ca.pem)\nused to validate the certificates created already.",
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "enabled": {
                      "description": "DEPRECATED please enable TLS by setting `security.certsSecretPrefix` or `security.tls.secretRef.prefix`.\nEnables TLS for this resource. This will make the operator try to mount a\nSecret with a defined name (\u003cresource-name\u003e-cert).\nThis is only used when enabling TLS on a MongoDB resource, and not on the\nAppDB, where TLS is configured by setting `secretRef.Name`.",
                      "type": [
                        "boolean",
                        "null"
                      ]
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ],
              "x-kubernetes-validations": [
                {
                  "message": "At most one of roles or roleRefs can be non-empty",
                  "rule": "!(has(self.roles) \u0026\u0026 has(self.roleRefs)) || !(self.roles.size() \u003e 0 \u0026\u0026 self.roleRefs.size() \u003e 0)"
                }
              ]
            },
            "service": {
              "description": "this is an optional service, it will get the name \"\u003crsName\u003e-svc\" in case not provided",
              "type": [
                "string",
                "null"
              ]
            },
            "topology": {
              "enum": [
                "SingleCluster",
                "MultiCluster"
              ],
              "type": [
                "string",
                "null"
              ]
            },
            "type": {
              "enum": [
                "Standalone",
                "ReplicaSet",
                "ShardedCluster"
              ],
              "type": [
                "string",
                "null"
              ]
            },
            "version": {
              "pattern": "^[0-9]+.[0-9]+.[0-9]+(-.+)?$|^$",
              "type": "string"
            }
          },
          "required": [
            "version"
          ],
          "type": "object"
        },
        "backup": {
          "additionalProperties": false,
          "description": "Backup",
          "properties": {
            "assignmentLabels": {
              "description": "Assignment Labels set in the Ops Manager",
              "items": {
                "type": "string"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "blockStores": {
              "items": {
                "additionalProperties": false,
                "description": "DataStoreConfig is the description of the config used to reference to database. Reused by Oplog and Block stores\nOptionally references the user if the Mongodb is configured with authentication",
                "properties": {
                  "assignmentLabels": {
                    "description": "Assignment Labels set in the Ops Manager",
                    "items": {
                      "type": "string"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "mongodbResourceRef": {
                    "additionalProperties": false,
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "namespace": {
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": "object"
                  },
                  "mongodbUserRef": {
                    "additionalProperties": false,
                    "properties": {
                      "name": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "mongodbResourceRef",
                  "name"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "enabled": {
              "description": "Enabled indicates if Backups will be enabled for this Ops Manager.",
              "type": "boolean"
            },
            "encryption": {
              "additionalProperties": false,
              "description": "Encryption settings",
              "properties": {
                "kmip": {
                  "additionalProperties": false,
                  "description": "Kmip corresponds to the KMIP configuration assigned to the Ops Manager Project's configuration.",
                  "properties": {
                    "server": {
                      "additionalProperties": false,
                      "description": "KMIP Server configuration",
                      "properties": {
                        "ca": {
                          "description": "CA corresponds to a ConfigMap containing an entry for the CA certificate (ca.pem)\nused for KMIP authentication",
                          "type": "string"
                        },
                        "url": {
                          "description": "KMIP Server url in the following format: hostname:port\nValid examples are:\n  10.10.10.3:5696\n  my-kmip-server.mycorp.com:5696\n  kmip-svc.svc.cluster.local:5696",
                          "pattern": "[^\\:]+:[0-9]{0,5}",
                          "type": "string"
                        }
                      },
                      "required": [
                        "ca",
                        "url"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "server"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "externalServiceEnabled": {
              "type": [
                "boolean",
                "null"
              ]
            },
            "fileSystemStores": {
              "items": {
                "additionalProperties": false,
                "properties": {
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "headDB": {
              "additionalProperties": false,
              "description": "HeadDB specifies configuration options for the HeadDB",
              "properties": {
                "labelSelector": {
                  "type": [
                    "object",
                    "null"
                  ],
                  "x-kubernetes-preserve-unknown-fields": true
                },
                "storage": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "storageClass": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "jvmParameters": {
              "items": {
                "type": "string"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "logging": {
              "additionalProperties": false,
              "properties": {
                "LogBackAccessRef": {
                  "additionalProperties": false,
                  "description": "LogBackAccessRef points at a ConfigMap/key with the logback access configuration file to mount on the Pod",
                  "properties": {
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "LogBackRef": {
                  "additionalProperties": false,
                  "description": "LogBackRef points at a ConfigMap/key with the logback configuration file to mount on the Pod",
                  "properties": {
                    "name": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "members": {
              "description": "Members indicate the number of backup daemon pods to create.",
              "minimum": 1,
              "type": [
                "integer",
                "null"
              ]
            },
            "opLogStores": {
              "description": "OplogStoreConfigs describes the list of oplog store configs used for backup",
              "items": {
                "additionalProperties": false,
                "description": "DataStoreConfig is the description of the config used to reference to database. Reused by Oplog and Block stores\nOptionally references the user if the Mongodb is configured with authentication",
                "properties": {
                  "assignmentLabels": {
                    "description": "Assignment Labels set in the Ops Manager",
                    "items": {
                      "type": "string"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "mongodbResourceRef": {
                    "additionalProperties": false,
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "namespace": {
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": "object"
                  },
                  "mongodbUserRef": {
                    "additionalProperties": false,
                    "properties": {
                      "name": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "mongodbResourceRef",
                  "name"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "queryableBackupSecretRef": {
              "additionalProperties": false,
              "description": "QueryableBackupSecretRef references the secret which contains the pem file which is used\nfor queryable backup. This will be mounted into the Ops Manager pod.",
              "properties": {
                "name": {
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": [
                "object",
                "null"
              ]
            },
            "s3OpLogStores": {
              "description": "S3OplogStoreConfigs describes the list of s3 oplog store configs used for backup.",
              "items": {
                "additionalProperties": false,
                "properties": {
                  "assignmentLabels": {
                    "description": "Assignment Labels set in the Ops Manager",
                    "items": {
                      "type": "string"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "customCertificate": {
                    "description": "Set this to \"true\" to use the appDBCa as a CA to access S3.\nDeprecated: This has been replaced by CustomCertificateSecretRefs,\nIn the future all custom certificates, which includes the appDBCa\nfor s3Config should be configured in CustomCertificateSecretRefs instead.",
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "customCertificateSecretRefs": {
                    "description": "CustomCertificateSecretRefs is a list of valid Certificate Authority certificate secrets\nthat apply to the associated S3 bucket.",
                    "items": {
                      "additionalProperties": false,
                      "description": "SecretKeySelector selects a key of a Secret.",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": [
                            "boolean",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "irsaEnabled": {
                    "description": "This is only set to \"true\" when a user is running in EKS and is using AWS IRSA to configure\nS3 snapshot store. For more details refer this: https://aws.amazon.com/blogs/opensource/introducing-fine-grained-iam-roles-service-accounts/",
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "mongodbResourceRef": {
                    "additionalProperties": false,
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "namespace": {
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "mongodbUserRef": {
                    "additionalProperties": false,
                    "properties": {
                      "name": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "name": {
                    "type": "string"
                  },
                  "pathStyleAccessEnabled": {
                    "type": "boolean"
                  },
                  "s3BucketEndpoint": {
                    "type": "string"
                  },
                  "s3BucketName": {
                    "type": "string"
                  },
                  "s3RegionOverride": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "s3SecretRef": {
                    "additionalProperties": false,
                    "description": "S3SecretRef is the secret that contains the AWS credentials used to access S3\nIt is optional because the credentials can be provided via AWS IRSA",
                    "properties": {
                      "name": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  }
                },
                "required": [
                  "name",
                  "pathStyleAccessEnabled",
                  "s3BucketEndpoint",
                  "s3BucketName"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "s3Stores": {
              "items": {
                "additionalProperties": false,
                "properties": {
                  "assignmentLabels": {
                    "description": "Assignment Labels set in the Ops Manager",
                    "items": {
                      "type": "string"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "customCertificate": {
                    "description": "Set this to \"true\" to use the appDBCa as a CA to access S3.\nDeprecated: This has been replaced by CustomCertificateSecretRefs,\nIn the future all custom certificates, which includes the appDBCa\nfor s3Config should be configured in CustomCertificateSecretRefs instead.",
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "customCertificateSecretRefs": {
                    "description": "CustomCertificateSecretRefs is a list of valid Certificate Authority certificate secrets\nthat apply to the associated S3 bucket.",
                    "items": {
                      "additionalProperties": false,
                      "description": "SecretKeySelector selects a key of a Secret.",
                      "properties": {
                        "key": {
                          "description": "The key of the secret to select from.  Must be a valid secret key.",
                          "type": "string"
                        },
                        "name": {
                          "default": "",
                          "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "optional": {
                          "description": "Specify whether the Secret or its key must be defined",
                          "type": [
                            "boolean",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "key"
                      ],
                      "type": "object",
                      "x-kubernetes-map-type": "atomic"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "irsaEnabled": {
                    "description": "This is only set to \"true\" when a user is running in EKS and is using AWS IRSA to configure\nS3 snapshot store. For more details refer this: https://aws.amazon.com/blogs/opensource/introducing-fine-grained-iam-roles-service-accounts/",
                    "type": [
                      "boolean",
                      "null"
                    ]
                  },
                  "mongodbResourceRef": {
                    "additionalProperties": false,
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "namespace": {
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "mongodbUserRef": {
                    "additionalProperties": false,
                    "properties": {
                      "name": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "name": {
                    "type": "string"
                  },
                  "pathStyleAccessEnabled": {
                    "type": "boolean"
                  },
                  "s3BucketEndpoint": {
                    "type": "string"
                  },
                  "s3BucketName": {
                    "type": "string"
                  },
                  "s3RegionOverride": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "s3SecretRef": {
                    "additionalProperties": false,
                    "description": "S3SecretRef is the secret that contains the AWS credentials used to access S3\nIt is optional because the credentials can be provided via AWS IRSA",
                    "properties": {
                      "name": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "name"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  }
                },
                "required": [
                  "name",
                  "pathStyleAccessEnabled",
                  "s3BucketEndpoint",
                  "s3BucketName"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "statefulSet": {
              "additionalProperties": false,
              "description": "StatefulSetConfiguration holds the optional custom StatefulSet\nthat should be merged into the operator created one.",
              "properties": {
                "metadata": {
                  "additionalProperties": false,
                  "description": "StatefulSetMetadataWrapper is a wrapper around Labels and Annotations",
                  "properties": {
                    "annotations": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "type": [
                        "object",
                        "null"
                      ]
                    },
                    "labels": {
                      "additionalProperties": {
                        "type": "string"
                      },
                      "type": [
                        "object",
                        "null"
                      ]
                    }
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "spec": {
                  "type": "object",
                  "x-kubernetes-preserve-unknown-fields": true
                }
              },
              "required": [
                "spec"
              ],
              "type": [
                "object",
                "null"
              ]
            }
          },
          "required": [
            "enabled"
          ],
          "type": [
            "object",
            "null"
          ]
        },
        "clusterDomain": {
          "format": "hostname",
          "type": [
            "string",
            "null"
          ]
        },
        "clusterName": {
          "description": "Deprecated: This has been replaced by the ClusterDomain which should be\nused instead",
          "format": "hostname",
          "type": [
            "string",
            "null"
          ]
        },
        "clusterSpecList": {
          "items": {
            "additionalProperties": false,
            "description": "ClusterSpecOMItem defines members cluster details for Ops Manager multi-cluster deployment.",
            "properties": {
              "backup": {
                "additionalProperties": false,
                "description": "Backup contains settings to override from top-level `spec.backup` for this member cluster.\nIf the value is not set here, then the value is taken from `spec.backup`.",
                "properties": {
                  "assignmentLabels": {
                    "description": "Assignment Labels set in the Ops Manager",
                    "items": {
                      "type": "string"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "headDB": {
                    "additionalProperties": false,
                    "description": "HeadDB specifies configuration options for the HeadDB",
                    "properties": {
                      "labelSelector": {
                        "type": [
                          "object",
                          "null"
                        ],
                        "x-kubernetes-preserve-unknown-fields": true
                      },
                      "storage": {
                        "type": [
                          "string",
                          "null"
                        ]
                      },
                      "storageClass": {
                        "type": [
                          "string",
                          "null"
                        ]
                      }
                    },
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "jvmParameters": {
                    "items": {
                      "type": "string"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "members": {
                    "description": "Members indicate the number of backup daemon pods to create.",
                    "minimum": 0,
                    "type": "integer"
                  },
                  "statefulSet": {
                    "additionalProperties": false,
                    "description": "StatefulSetConfiguration specified optional overrides for backup datemon statefulset.",
                    "properties": {
                      "metadata": {
                        "additionalProperties": false,
                        "description": "StatefulSetMetadataWrapper is a wrapper around Labels and Annotations",
                        "properties": {
                          "annotations": {
                            "additionalProperties": {
                              "type": "string"
                            },
                            "type": [
                              "object",
                              "null"
                            ]
                          },
                          "labels": {
                            "additionalProperties": {
                              "type": "string"
                            },
                            "type": [
                              "object",
                              "null"
                            ]
                          }
                        },
                        "type": [
                          "object",
                          "null"
                        ]
                      },
                      "spec": {
                        "type": "object",
                        "x-kubernetes-preserve-unknown-fields": true
                      }
                    },
                    "required": [
                      "spec"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  }
                },
                "required": [
                  "members"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "clusterDomain": {
                "description": "Cluster domain to override the default *.svc.cluster.local if the default cluster domain has been changed on a cluster level.",
                "format": "hostname",
                "type": [
                  "string",
                  "null"
                ]
              },
              "clusterName": {
                "description": "ClusterName is name of the cluster where the Ops Manager Statefulset will be scheduled.\nThe operator is using ClusterName to find API credentials in `mongodb-kubernetes-operator-member-list` config map to use for this member cluster.\nIf the credentials are not found, then the member cluster is considered unreachable and ignored in the reconcile process.",
                "type": "string"
              },
              "configuration": {
                "additionalProperties": {
                  "type": "string"
                },
                "description": "The configuration properties passed to Ops Manager and Backup Daemon in this cluster.\nIf specified (not empty) then this field overrides `spec.configuration` field entirely.\nIf not specified, then `spec.configuration` field is used for the Ops Manager and Backup Daemon instances in this cluster.",
                "type": [
                  "object",
                  "null"
                ]
              },
              "externalConnectivity": {
                "additionalProperties": false,
                "description": "MongoDBOpsManagerExternalConnectivity if sets allows for the creation of a Service for\naccessing Ops Manager instances in this member cluster from outside the Kubernetes cluster.\nIf specified (even if provided empty) then this field overrides `spec.externalConnectivity` field entirely.\nIf not specified, then `spec.externalConnectivity` field is used for the Ops Manager and Backup Daemon instances in this cluster.",
                "properties": {
                  "annotations": {
                    "additionalProperties": {
                      "type": "string"
                    },
                    "description": "Annotations is a list of annotations to be directly passed to the Service object.",
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "clusterIP": {
                    "description": "ClusterIP IP that will be assigned to this Service when creating a ClusterIP type Service",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "externalTrafficPolicy": {
                    "description": "ExternalTrafficPolicy mechanism to preserve the client source IP.\nOnly supported on GCE and Google Kubernetes Engine.",
                    "enum": [
                      "Cluster",
                      "Local"
                    ],
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "loadBalancerIP": {
                    "description": "LoadBalancerIP IP that will be assigned to this LoadBalancer.",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "port": {
                    "description": "Port in which this `Service` will listen to, this applies to `NodePort`.",
                    "format": "int32",
                    "type": [
                      "integer",
                      "null"
                    ]
                  },
                  "type": {
                    "description": "Type of the `Service` to be created.",
                    "enum": [
                      "LoadBalancer",
                      "NodePort",
                      "ClusterIP"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "type"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "jvmParameters": {
                "description": "JVM parameters to pass to Ops Manager and Backup Daemon instances in this member cluster.\nIf specified (not empty) then this field overrides `spec.jvmParameters` field entirely.\nIf not specified, then `spec.jvmParameters` field is used for the Ops Manager and Backup Daemon instances in this cluster.",
                "items": {
                  "type": "string"
                },
                "type": [
                  "array",
                  "null"
                ]
              },
              "members": {
                "description": "Number of Ops Manager instances in this member cluster.",
                "type": "integer"
              },
              "statefulSet": {
                "additionalProperties": false,
                "description": "Configure custom StatefulSet configuration to override in Ops Manager's statefulset in this member cluster.\nIf specified (even if provided empty) then this field overrides `spec.externalConnectivity` field entirely.\nIf not specified, then `spec.externalConnectivity` field is used for the Ops Manager and Backup Daemon instances in this cluster.",
                "properties": {
                  "metadata": {
                    "additionalProperties": false,
                    "description": "StatefulSetMetadataWrapper is a wrapper around Labels and Annotations",
                    "properties": {
                      "annotations": {
                        "additionalProperties": {
                          "type": "string"
                        },
                        "type": [
                          "object",
                          "null"
                        ]
                      },
                      "labels": {
                        "additionalProperties": {
                          "type": "string"
                        },
                        "type": [
                          "object",
                          "null"
                        ]
                      }
                    },
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "spec": {
                    "type": "object",
                    "x-kubernetes-preserve-unknown-fields": true
                  }
                },
                "required": [
                  "spec"
                ],
                "type": [
                  "object",
                  "null"
                ]
              }
            },
            "required": [
              "clusterName",
              "members"
            ],
            "type": "object"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "configuration": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "The configuration properties passed to Ops Manager/Backup Daemon",
          "type": [
            "object",
            "null"
          ]
        },
        "externalConnectivity": {
          "additionalProperties": false,
          "description": "MongoDBOpsManagerExternalConnectivity if sets allows for the creation of a Service for\naccessing this Ops Manager resource from outside the Kubernetes cluster.",
          "properties": {
            "annotations": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Annotations is a list of annotations to be directly passed to the Service object.",
              "type": [
                "object",
                "null"
              ]
            },
            "clusterIP": {
              "description": "ClusterIP IP that will be assigned to this Service when creating a ClusterIP type Service",
              "type": [
                "string",
                "null"
              ]
            },
            "externalTrafficPolicy": {
              "description": "ExternalTrafficPolicy mechanism to preserve the client source IP.\nOnly supported on GCE and Google Kubernetes Engine.",
              "enum": [
                "Cluster",
                "Local"
              ],
              "type": [
                "string",
                "null"
              ]
            },
            "loadBalancerIP": {
              "description": "LoadBalancerIP IP that will be assigned to this LoadBalancer.",
              "type": [
                "string",
                "null"
              ]
            },
            "port": {
              "description": "Port in which this `Service` will listen to, this applies to `NodePort`.",
              "format": "int32",
              "type": [
                "integer",
                "null"
              ]
            },
            "type": {
              "description": "Type of the `Service` to be created.",
              "enum": [
                "LoadBalancer",
                "NodePort",
                "ClusterIP"
              ],
              "type": "string"
            }
          },
          "required": [
            "type"
          ],
          "type": [
            "object",
            "null"
          ]
        },
        "internalConnectivity": {
          "additionalProperties": false,
          "description": "InternalConnectivity if set allows for overriding the settings of the default service\nused for internal connectivity to the OpsManager servers.",
          "properties": {
            "annotations": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "Annotations is a list of annotations to be directly passed to the Service object.",
              "type": [
                "object",
                "null"
              ]
            },
            "clusterIP": {
              "description": "ClusterIP IP that will be assigned to this Service when creating a ClusterIP type Service",
              "type": [
                "string",
                "null"
              ]
            },
            "externalTrafficPolicy": {
              "description": "ExternalTrafficPolicy mechanism to preserve the client source IP.\nOnly supported on GCE and Google Kubernetes Engine.",
              "enum": [
                "Cluster",
                "Local"
              ],
              "type": [
                "string",
                "null"
              ]
            },
            "loadBalancerIP": {
              "description": "LoadBalancerIP IP that will be assigned to this LoadBalancer.",
              "type": [
                "string",
                "null"
              ]
            },
            "port": {
              "description": "Port in which this `Service` will listen to, this applies to `NodePort`.",
              "format": "int32",
              "type": [
                "integer",
                "null"
              ]
            },
            "type": {
              "description": "Type of the `Service` to be created.",
              "enum": [
                "LoadBalancer",
                "NodePort",
                "ClusterIP"
              ],
              "type": "string"
            }
          },
          "required": [
            "type"
          ],
          "type": [
            "object",
            "null"
          ]
        },
        "jvmParameters": {
          "description": "Custom JVM parameters passed to the Ops Manager JVM",
          "items": {
            "type": "string"
          },
          "type": [
            "array",
            "null"
          ]
        },
        "logging": {
          "additionalProperties": false,
          "properties": {
            "LogBackAccessRef": {
              "additionalProperties": false,
              "description": "LogBackAccessRef points at a ConfigMap/key with the logback access configuration file to mount on the Pod",
              "properties": {
                "name": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "LogBackRef": {
              "additionalProperties": false,
              "description": "LogBackRef points at a ConfigMap/key with the logback configuration file to mount on the Pod",
              "properties": {
                "name": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ]
        },
        "opsManagerURL": {
          "description": "OpsManagerURL specified the URL with which the operator and AppDB monitoring agent should access Ops Manager instance (or instances).\nWhen not set, the operator is using FQDN of Ops Manager's headless service `{name}-svc.{namespace}.svc.cluster.local` to connect to the instance. If that URL cannot be used, then URL in this field should be provided for the operator to connect to Ops Manager instances.",
          "type": [
            "string",
            "null"
          ]
        },
        "replicas": {
          "minimum": 1,
          "type": [
            "integer",
            "null"
          ]
        },
        "security": {
          "additionalProperties": false,
          "description": "Configure HTTPS.",
          "properties": {
            "certsSecretPrefix": {
              "type": [
                "string",
                "null"
              ]
            },
            "tls": {
              "additionalProperties": false,
              "properties": {
                "ca": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "secretRef": {
                  "additionalProperties": false,
                  "properties": {
                    "name": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "name"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ]
        },
        "statefulSet": {
          "additionalProperties": false,
          "description": "Configure custom StatefulSet configuration",
          "properties": {
            "metadata": {
              "additionalProperties": false,
              "description": "StatefulSetMetadataWrapper is a wrapper around Labels and Annotations",
              "properties": {
                "annotations": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "labels": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "spec": {
              "type": "object",
              "x-kubernetes-preserve-unknown-fields": true
            }
          },
          "required": [
            "spec"
          ],
          "type": [
            "object",
            "null"
          ]
        },
        "topology": {
          "description": "Topology sets the desired cluster topology of Ops Manager deployment.\nIt defaults (and if not set) to SingleCluster. If MultiCluster specified,\nthen clusterSpecList field is mandatory and at least one member cluster has to be specified.",
          "enum": [
            "SingleCluster",
            "MultiCluster"
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "version": {
          "type": "string"
        }
      },
      "required": [
        "applicationDatabase",
        "version"
      ],
      "type": "object"
    },
    "status": {
      "additionalProperties": false,
      "properties": {
        "applicationDatabase": {
          "additionalProperties": false,
          "properties": {
            "backup": {
              "additionalProperties": false,
              "properties": {
                "statusName": {
                  "type": "string"
                }
              },
              "required": [
                "statusName"
              ],
              "type": [
                "object",
                "null"
              ]
            },
            "clusterStatusList": {
              "items": {
                "additionalProperties": false,
                "properties": {
                  "clusterName": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "members": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  }
                },
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "configServerCount": {
              "type": [
                "integer",
                "null"
              ]
            },
            "featureCompatibilityVersion": {
              "type": [
                "string",
                "null"
              ]
            },
            "lastTransition": {
              "type": [
                "string",
                "null"
              ]
            },
            "link": {
              "type": [
                "string",
                "null"
              ]
            },
            "members": {
              "type": [
                "integer",
                "null"
              ]
            },
            "message": {
              "type": [
                "string",
                "null"
              ]
            },
            "mongodsPerShardCount": {
              "type": [
                "integer",
                "null"
              ]
            },
            "mongosCount": {
              "type": [
                "integer",
                "null"
              ]
            },
            "observedGeneration": {
              "format": "int64",
              "type": [
                "integer",
                "null"
              ]
            },
            "phase": {
              "type": "string"
            },
            "pvc": {
              "items": {
                "additionalProperties": false,
                "properties": {
                  "phase": {
                    "type": "string"
                  },
                  "statefulsetName": {
                    "type": "string"
                  }
                },
                "required": [
                  "phase",
                  "statefulsetName"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "resourcesNotReady": {
              "items": {
                "additionalProperties": false,
                "description": "ResourceNotReady describes the dependent resource which is not ready yet",
                "properties": {
                  "errors": {
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "message": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "reason": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "kind": {
                    "description": "ResourceKind specifies a kind of a Kubernetes resource. Used in status of a Custom Resource",
                    "type": "string"
                  },
                  "message": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "name"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "shardCount": {
              "type": [
                "integer",
                "null"
              ]
            },
            "sizeStatusInClusters": {
              "additionalProperties": false,
              "description": "MongodbShardedSizeStatusInClusters describes the number and sizes of replica sets members deployed across member clusters",
              "properties": {
                "configServerMongodsInClusters": {
                  "additionalProperties": {
                    "type": "integer"
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "mongosCountInClusters": {
                  "additionalProperties": {
                    "type": "integer"
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "shardMongodsInClusters": {
                  "additionalProperties": {
                    "type": "integer"
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "shardOverridesInClusters": {
                  "additionalProperties": {
                    "additionalProperties": {
                      "type": "integer"
                    },
                    "type": "object"
                  },
                  "type": [
                    "object",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "version": {
              "type": "string"
            },
            "warnings": {
              "items": {
                "type": "string"
              },
              "type": [
                "array",
                "null"
              ]
            }
          },
          "required": [
            "phase",
            "version"
          ],
          "type": [
            "object",
            "null"
          ]
        },
        "backup": {
          "additionalProperties": false,
          "properties": {
            "clusterStatusList": {
              "items": {
                "additionalProperties": false,
                "properties": {
                  "clusterName": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "replicas": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  }
                },
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "lastTransition": {
              "type": [
                "string",
                "null"
              ]
            },
            "message": {
              "type": [
                "string",
                "null"
              ]
            },
            "observedGeneration": {
              "format": "int64",
              "type": [
                "integer",
                "null"
              ]
            },
            "phase": {
              "type": "string"
            },
            "pvc": {
              "items": {
                "additionalProperties": false,
                "properties": {
                  "phase": {
                    "type": "string"
                  },
                  "statefulsetName": {
                    "type": "string"
                  }
                },
                "required": [
                  "phase",
                  "statefulsetName"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "resourcesNotReady": {
              "items": {
                "additionalProperties": false,
                "description": "ResourceNotReady describes the dependent resource which is not ready yet",
                "properties": {
                  "errors": {
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "message": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "reason": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "kind": {
                    "description": "ResourceKind specifies a kind of a Kubernetes resource. Used in status of a Custom Resource",
                    "type": "string"
                  },
                  "message": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "name"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "version": {
              "type": [
                "string",
                "null"
              ]
            },
            "warnings": {
              "items": {
                "type": "string"
              },
              "type": [
                "array",
                "null"
              ]
            }
          },
          "required": [
            "phase"
          ],
          "type": [
            "object",
            "null"
          ]
        },
        "opsManager": {
          "additionalProperties": false,
          "properties": {
            "clusterStatusList": {
              "items": {
                "additionalProperties": false,
                "properties": {
                  "clusterName": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "replicas": {
                    "type": [
                      "integer",
                      "null"
                    ]
                  }
                },
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "lastTransition": {
              "type": [
                "string",
                "null"
              ]
            },
            "message": {
              "type": [
                "string",
                "null"
              ]
            },
            "observedGeneration": {
              "format": "int64",
              "type": [
                "integer",
                "null"
              ]
            },
            "phase": {
              "type": "string"
            },
            "pvc": {
              "items": {
                "additionalProperties": false,
                "properties": {
                  "phase": {
                    "type": "string"
                  },
                  "statefulsetName": {
                    "type": "string"
                  }
                },
                "required": [
                  "phase",
                  "statefulsetName"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "replicas": {
              "type": [
                "integer",
                "null"
              ]
            },
            "resourcesNotReady": {
              "items": {
                "additionalProperties": false,
                "description": "ResourceNotReady describes the dependent resource which is not ready yet",
                "properties": {
                  "errors": {
                    "items": {
                      "additionalProperties": false,
                      "properties": {
                        "message": {
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "reason": {
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "type": "object"
                    },
                    "type": [
                      "array",
                      "null"
                    ]
                  },
                  "kind": {
                    "description": "ResourceKind specifies a kind of a Kubernetes resource. Used in status of a Custom Resource",
                    "type": "string"
                  },
                  "message": {
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "name": {
                    "type": "string"
                  }
                },
                "required": [
                  "kind",
                  "name"
                ],
                "type": "object"
              },
              "type": [
                "array",
                "null"
              ]
            },
            "url": {
              "type": [
                "string",
                "null"
              ]
            },
            "version": {
              "type": [
                "string",
                "null"
              ]
            },
            "warnings": {
              "items": {
                "type": "string"
              },
              "type": [
                "array",
                "null"
              ]
            }
          },
          "required": [
            "phase"
          ],
          "type": [
            "object",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}