{
  "description": "AtlasDeployment is the Schema for the atlasdeployments API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "AtlasDeploymentSpec defines the target state of AtlasDeployment.\nOnly one of DeploymentSpec, AdvancedDeploymentSpec and ServerlessSpec should be defined.",
      "properties": {
        "backupRef": {
          "description": "Reference to the backup schedule for the AtlasDeployment.",
          "properties": {
            "name": {
              "description": "Name of the Kubernetes Resource",
              "type": "string"
            },
            "namespace": {
              "description": "Namespace of the Kubernetes Resource",
              "type": "string"
            }
          },
          "required": [
            "name"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "connectionSecret": {
          "description": "Name of the secret containing Atlas API private and public keys.",
          "properties": {
            "name": {
              "description": "Name of the resource being referred to\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
              "type": "string"
            }
          },
          "required": [
            "name"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "deploymentSpec": {
          "description": "Configuration for the advanced (v1.5) deployment API https://www.mongodb.com/docs/atlas/reference/api/clusters/",
          "properties": {
            "backupEnabled": {
              "description": "Flag that indicates if the deployment uses Cloud Backups for backups.\nApplicable only for M10+ deployments.",
              "type": "boolean"
            },
            "biConnector": {
              "description": "Configuration of BI Connector for Atlas on this deployment.\nThe MongoDB Connector for Business Intelligence for Atlas (BI Connector) is only available for M10 and larger deployments.",
              "properties": {
                "enabled": {
                  "description": "Flag that indicates whether the Business Intelligence Connector for Atlas is enabled on the deployment.",
                  "type": "boolean"
                },
                "readPreference": {
                  "description": "Source from which the BI Connector for Atlas reads data. Each BI Connector for Atlas read preference contains a distinct combination of readPreference and readPreferenceTags options.",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "clusterType": {
              "description": "Type of the deployment that you want to create.\nThe parameter is required if replicationSpecs are set or if Global Deployments are deployed.",
              "enum": [
                "REPLICASET",
                "SHARDED",
                "GEOSHARDED"
              ],
              "type": "string"
            },
            "configServerManagementMode": {
              "description": "Config Server Management Mode for creating or updating a sharded cluster.",
              "enum": [
                "ATLAS_MANAGED",
                "FIXED_TO_DEDICATED"
              ],
              "type": "string"
            },
            "customZoneMapping": {
              "description": "List that contains Global Cluster parameters that map zones to geographic regions.",
              "items": {
                "properties": {
                  "location": {
                    "description": "Code that represents a location that maps to a zone in your global cluster.\nMongoDB Atlas represents this location with a ISO 3166-2 location and subdivision codes when possible.",
                    "type": "string"
                  },
                  "zone": {
                    "description": "Human-readable label that identifies the zone in your global cluster. This zone maps to a location code.",
                    "type": "string"
                  }
                },
                "required": [
                  "location",
                  "zone"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "diskSizeGB": {
              "description": "Capacity, in gigabytes, of the host's root volume.\nIncrease this number to add capacity, up to a maximum possible value of 4096 (i.e., 4 TB).\nThis value must be a positive integer.\nThe parameter is required if replicationSpecs are configured.",
              "maximum": 4096,
              "minimum": 0,
              "type": "integer"
            },
            "encryptionAtRestProvider": {
              "description": "Cloud service provider that offers Encryption at Rest.",
              "enum": [
                "AWS",
                "GCP",
                "AZURE",
                "NONE"
              ],
              "type": "string"
            },
            "labels": {
              "description": "Collection of key-value pairs that tag and categorize the deployment.\nEach key and value has a maximum length of 255 characters.\nDEPRECATED: Cluster labels are deprecated and will be removed in a future release. We strongly recommend that you use Resource Tags instead.",
              "items": {
                "description": "LabelSpec contains key-value pairs that tag and categorize the Cluster/DBUser",
                "properties": {
                  "key": {
                    "description": "Key applied to tag and categorize this component.",
                    "maxLength": 255,
                    "type": "string"
                  },
                  "value": {
                    "description": "Value set to the Key applied to tag and categorize this component.",
                    "type": "string"
                  }
                },
                "required": [
                  "key",
                  "value"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "managedNamespaces": {
              "description": "List that contains information to create a managed namespace in a specified Global Cluster to create.",
              "items": {
                "description": "ManagedNamespace represents the information about managed namespace configuration.",
                "properties": {
                  "collection": {
                    "description": "Human-readable label of the collection to manage for this Global Cluster.",
                    "type": "string"
                  },
                  "customShardKey": {
                    "description": "Database parameter used to divide the collection into shards. Global clusters require a compound shard key.\nThis compound shard key combines the location parameter and the user-selected custom key.",
                    "type": "string"
                  },
                  "db": {
                    "description": "Human-readable label of the database to manage for this Global Cluster.",
                    "type": "string"
                  },
                  "isCustomShardKeyHashed": {
                    "description": "Flag that indicates whether someone hashed the custom shard key for the specified collection.\nIf you set this value to false, MongoDB Cloud uses ranged sharding.",
                    "type": "boolean"
                  },
                  "isShardKeyUnique": {
                    "description": "Flag that indicates whether someone hashed the custom shard key.\nIf this parameter returns false, this cluster uses ranged sharding.",
                    "type": "boolean"
                  },
                  "numInitialChunks": {
                    "description": "Minimum number of chunks to create initially when sharding an empty collection with a hashed shard key.\nMaximum value is 8192.",
                    "type": "integer"
                  },
                  "presplitHashedZones": {
                    "description": "Flag that indicates whether MongoDB Cloud should create and distribute initial chunks for an empty or non-existing collection.\nMongoDB Cloud distributes data based on the defined zones and zone ranges for the collection.",
                    "type": "boolean"
                  }
                },
                "required": [
                  "collection",
                  "db"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "mongoDBMajorVersion": {
              "description": "MongoDB major version of the cluster. Set to the binary major version.",
              "type": "string"
            },
            "mongoDBVersion": {
              "description": "Version of MongoDB that the cluster runs.",
              "type": "string"
            },
            "name": {
              "description": "Name of the advanced deployment as it appears in Atlas.\nAfter Atlas creates the deployment, you can't change its name.\nCan only contain ASCII letters, numbers, and hyphens.",
              "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]*$",
              "type": "string",
              "x-kubernetes-validations": [
                {
                  "message": "Name cannot be modified after deployment creation",
                  "rule": "self == oldSelf"
                }
              ]
            },
            "paused": {
              "description": "Flag that indicates whether the deployment should be paused.",
              "type": "boolean"
            },
            "pitEnabled": {
              "description": "Flag that indicates the deployment uses continuous cloud backups.",
              "type": "boolean"
            },
            "replicationSpecs": {
              "description": "Configuration for deployment regions.",
              "items": {
                "properties": {
                  "numShards": {
                    "description": "Positive integer that specifies the number of shards to deploy in each specified zone.\nIf you set this value to 1 and clusterType is SHARDED, MongoDB Cloud deploys a single-shard sharded cluster.\nDon't create a sharded cluster with a single shard for production environments.\nSingle-shard sharded clusters don't provide the same benefits as multi-shard configurations",
                    "type": "integer"
                  },
                  "regionConfigs": {
                    "description": "Hardware specifications for nodes set for a given region.\nEach regionConfigs object describes the region's priority in elections and the number and type of MongoDB nodes that MongoDB Cloud deploys to the region.\nEach regionConfigs object must have either an analyticsSpecs object, electableSpecs object, or readOnlySpecs object.\nTenant clusters only require electableSpecs. Dedicated clusters can specify any of these specifications, but must have at least one electableSpecs object within a replicationSpec.\nEvery hardware specification must use the same instanceSize.",
                    "items": {
                      "properties": {
                        "analyticsSpecs": {
                          "description": "Hardware specifications for analytics nodes deployed in the region.",
                          "properties": {
                            "diskIOPS": {
                              "description": "Disk IOPS setting for AWS storage.\nSet only if you selected AWS as your cloud service provider.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "ebsVolumeType": {
                              "description": "Disk IOPS setting for AWS storage.\nSet only if you selected AWS as your cloud service provider.",
                              "enum": [
                                "STANDARD",
                                "PROVISIONED"
                              ],
                              "type": "string"
                            },
                            "instanceSize": {
                              "description": "Hardware specification for the instance sizes in this region.\nEach instance size has a default storage and memory capacity.\nThe instance size you select applies to all the data-bearing hosts in your instance size.",
                              "type": "string"
                            },
                            "nodeCount": {
                              "description": "Number of nodes of the given type for MongoDB Cloud to deploy to the region.",
                              "type": "integer"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "autoScaling": {
                          "description": "Options that determine how this cluster handles resource scaling.",
                          "properties": {
                            "compute": {
                              "description": "Collection of settings that configure how a deployment might scale its deployment tier and whether the deployment can scale down.",
                              "properties": {
                                "enabled": {
                                  "description": "Flag that indicates whether deployment tier auto-scaling is enabled. The default is false.",
                                  "type": "boolean"
                                },
                                "maxInstanceSize": {
                                  "description": "Maximum instance size to which your deployment can automatically scale (such as M40). Atlas requires this parameter if \"autoScaling.compute.enabled\" : true.",
                                  "type": "string"
                                },
                                "minInstanceSize": {
                                  "description": "Minimum instance size to which your deployment can automatically scale (such as M10). Atlas requires this parameter if \"autoScaling.compute.scaleDownEnabled\" : true.",
                                  "type": "string"
                                },
                                "scaleDownEnabled": {
                                  "description": "Flag that indicates whether the deployment tier may scale down. Atlas requires this parameter if \"autoScaling.compute.enabled\" : true.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object",
                              "additionalProperties": false
                            },
                            "diskGB": {
                              "description": "Flag that indicates whether disk auto-scaling is enabled. The default is true.",
                              "properties": {
                                "enabled": {
                                  "description": "Flag that indicates whether this cluster enables disk auto-scaling.\nThe maximum memory allowed for the selected cluster tier and the oplog size can limit storage auto-scaling.",
                                  "type": "boolean"
                                }
                              },
                              "type": "object",
                              "additionalProperties": false
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "backingProviderName": {
                          "description": "Cloud service provider on which the host for a multi-tenant deployment is provisioned.\nThis setting only works when \"providerName\" : \"TENANT\" and \"providerSetting.instanceSizeName\" : M2 or M5.\nOtherwise, it should be equal to the \"providerName\" value.",
                          "enum": [
                            "AWS",
                            "GCP",
                            "AZURE"
                          ],
                          "type": "string"
                        },
                        "electableSpecs": {
                          "description": "Hardware specifications for nodes deployed in the region.",
                          "properties": {
                            "diskIOPS": {
                              "description": "Disk IOPS setting for AWS storage.\nSet only if you selected AWS as your cloud service provider.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "ebsVolumeType": {
                              "description": "Disk IOPS setting for AWS storage.\nSet only if you selected AWS as your cloud service provider.",
                              "enum": [
                                "STANDARD",
                                "PROVISIONED"
                              ],
                              "type": "string"
                            },
                            "instanceSize": {
                              "description": "Hardware specification for the instance sizes in this region.\nEach instance size has a default storage and memory capacity.\nThe instance size you select applies to all the data-bearing hosts in your instance size.",
                              "type": "string"
                            },
                            "nodeCount": {
                              "description": "Number of nodes of the given type for MongoDB Cloud to deploy to the region.",
                              "type": "integer"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "priority": {
                          "description": "Precedence is given to this region when a primary election occurs.\nIf your regionConfigs has only readOnlySpecs, analyticsSpecs, or both, set this value to 0.\nIf you have multiple regionConfigs objects (your cluster is multi-region or multi-cloud), they must have priorities in descending order.\nThe highest priority is 7",
                          "type": "integer"
                        },
                        "providerName": {
                          "enum": [
                            "AWS",
                            "GCP",
                            "AZURE",
                            "TENANT",
                            "SERVERLESS"
                          ],
                          "type": "string"
                        },
                        "readOnlySpecs": {
                          "description": "Hardware specifications for read only nodes deployed in the region.",
                          "properties": {
                            "diskIOPS": {
                              "description": "Disk IOPS setting for AWS storage.\nSet only if you selected AWS as your cloud service provider.",
                              "format": "int64",
                              "type": "integer"
                            },
                            "ebsVolumeType": {
                              "description": "Disk IOPS setting for AWS storage.\nSet only if you selected AWS as your cloud service provider.",
                              "enum": [
                                "STANDARD",
                                "PROVISIONED"
                              ],
                              "type": "string"
                            },
                            "instanceSize": {
                              "description": "Hardware specification for the instance sizes in this region.\nEach instance size has a default storage and memory capacity.\nThe instance size you select applies to all the data-bearing hosts in your instance size.",
                              "type": "string"
                            },
                            "nodeCount": {
                              "description": "Number of nodes of the given type for MongoDB Cloud to deploy to the region.",
                              "type": "integer"
                            }
                          },
                          "type": "object",
                          "additionalProperties": false
                        },
                        "regionName": {
                          "description": "Physical location of your MongoDB deployment.\nThe region you choose can affect network latency for clients accessing your databases.",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array"
                  },
                  "zoneName": {
                    "description": "Human-readable label that identifies the zone in a Global Cluster.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "rootCertType": {
              "description": "Root Certificate Authority that MongoDB Atlas cluster uses.",
              "type": "string"
            },
            "searchIndexes": {
              "description": "An array of SearchIndex objects with fields that describe the search index.",
              "items": {
                "description": "SearchIndex is the CRD to configure part of the Atlas Search Index.",
                "properties": {
                  "DBName": {
                    "description": "Human-readable label that identifies the database that contains the collection with one or more Atlas Search indexes.",
                    "type": "string"
                  },
                  "collectionName": {
                    "description": "Human-readable label that identifies the collection that contains one or more Atlas Search indexes.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Human-readable label that identifies this index. Must be unique for a deployment.",
                    "type": "string"
                  },
                  "search": {
                    "description": "Atlas search index configuration.",
                    "properties": {
                      "mappings": {
                        "description": "Index specifications for the collection's fields.",
                        "properties": {
                          "dynamic": {
                            "description": "Indicates whether the index uses static, default dynamic, or configurable dynamic mappings.\nSet to **true** to enable dynamic mapping with default type set or define object to specify the name of the configured type sets for dynamic mapping.\nIf you specify configurable dynamic mappings, you must define the referred type sets in the **typeSets** field.\nSet to **false** to use only static mappings through **mappings.fields**.\nSee https://www.mongodb.com/docs/atlas/atlas-search/define-field-mappings/#configure-a-typeset for more details.",
                            "x-kubernetes-preserve-unknown-fields": true
                          },
                          "fields": {
                            "description": "One or more field specifications for the Atlas Search index. Required if mapping.dynamic is omitted or set to false.",
                            "x-kubernetes-preserve-unknown-fields": true
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      },
                      "searchConfigurationRef": {
                        "description": "A reference to the AtlasSearchIndexConfig custom resource.",
                        "properties": {
                          "name": {
                            "description": "Name of the Kubernetes Resource",
                            "type": "string"
                          },
                          "namespace": {
                            "description": "Namespace of the Kubernetes Resource",
                            "type": "string"
                          }
                        },
                        "required": [
                          "name"
                        ],
                        "type": "object",
                        "additionalProperties": false
                      },
                      "synonyms": {
                        "description": "Rule sets that map words to their synonyms in this index.",
                        "items": {
                          "description": "Synonym represents \"Synonym\" type of Atlas Search Index.",
                          "properties": {
                            "analyzer": {
                              "description": "Specific pre-defined method chosen to apply to the synonyms to be searched.",
                              "enum": [
                                "lucene.standard",
                                "lucene.simple",
                                "lucene.whitespace",
                                "lucene.keyword",
                                "lucene.arabic",
                                "lucene.armenian",
                                "lucene.basque",
                                "lucene.bengali",
                                "lucene.brazilian",
                                "lucene.bulgarian",
                                "lucene.catalan",
                                "lucene.chinese",
                                "lucene.cjk",
                                "lucene.czech",
                                "lucene.danish",
                                "lucene.dutch",
                                "lucene.english",
                                "lucene.finnish",
                                "lucene.french",
                                "lucene.galician",
                                "lucene.german",
                                "lucene.greek",
                                "lucene.hindi",
                                "lucene.hungarian",
                                "lucene.indonesian",
                                "lucene.irish",
                                "lucene.italian",
                                "lucene.japanese",
                                "lucene.korean",
                                "lucene.kuromoji",
                                "lucene.latvian",
                                "lucene.lithuanian",
                                "lucene.morfologik",
                                "lucene.nori",
                                "lucene.norwegian",
                                "lucene.persian",
                                "lucene.portuguese",
                                "lucene.romanian",
                                "lucene.russian",
                                "lucene.smartcn",
                                "lucene.sorani",
                                "lucene.spanish",
                                "lucene.swedish",
                                "lucene.thai",
                                "lucene.turkish",
                                "lucene.ukrainian"
                              ],
                              "type": "string"
                            },
                            "name": {
                              "description": "Human-readable label that identifies the synonym definition. Each name must be unique within the same index definition.",
                              "type": "string"
                            },
                            "source": {
                              "description": "Data set that stores the mapping one or more words map to one or more synonyms of those words.",
                              "properties": {
                                "collection": {
                                  "description": "Human-readable label that identifies the MongoDB collection that stores words and their applicable synonyms.",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "collection"
                              ],
                              "type": "object",
                              "additionalProperties": false
                            }
                          },
                          "required": [
                            "analyzer",
                            "name",
                            "source"
                          ],
                          "type": "object",
                          "additionalProperties": false
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "mappings",
                      "searchConfigurationRef"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": {
                    "description": "Type of the index.",
                    "enum": [
                      "search",
                      "vectorSearch"
                    ],
                    "type": "string"
                  },
                  "vectorSearch": {
                    "description": "Atlas vector search index configuration.",
                    "properties": {
                      "fields": {
                        "description": "Array of JSON objects. See examples https://dochub.mongodb.org/core/avs-vector-type",
                        "x-kubernetes-preserve-unknown-fields": true
                      }
                    },
                    "required": [
                      "fields"
                    ],
                    "type": "object",
                    "additionalProperties": false
                  }
                },
                "required": [
                  "DBName",
                  "collectionName",
                  "name",
                  "type"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "searchNodes": {
              "description": "Settings for Search Nodes for the cluster. Currently, at most one search node configuration may be defined.",
              "items": {
                "properties": {
                  "instanceSize": {
                    "description": "Hardware specification for the Search Node instance sizes.\nSee https://www.mongodb.com/docs/api/doc/atlas-admin-api-v2/operation/operation-creategroupclustersearchdeployment#operation-creategroupclustersearchdeployment-body-application-vnd-atlas-2024-05-30-json-specs-instancesize for available values",
                    "type": "string"
                  },
                  "nodeCount": {
                    "description": "Number of Search Nodes in the cluster.",
                    "maximum": 32,
                    "minimum": 2,
                    "type": "integer"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "maxItems": 1,
              "type": "array"
            },
            "tags": {
              "description": "Key-value pairs for resource tagging.",
              "items": {
                "description": "TagSpec holds a key-value pair for resource tagging on this deployment.",
                "properties": {
                  "key": {
                    "description": "Constant that defines the set of the tag.",
                    "maxLength": 255,
                    "minLength": 1,
                    "pattern": "^[a-zA-Z0-9][a-zA-Z0-9 @_.+`;`-]*$",
                    "type": "string"
                  },
                  "value": {
                    "description": "Variable that belongs to the set of the tag.",
                    "maxLength": 255,
                    "minLength": 1,
                    "pattern": "^[a-zA-Z0-9][a-zA-Z0-9 @_.+`;`-]*$",
                    "type": "string"
                  }
                },
                "required": [
                  "key",
                  "value"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "maxItems": 50,
              "type": "array"
            },
            "terminationProtectionEnabled": {
              "default": false,
              "description": "Flag that indicates whether termination protection is enabled on the cluster. If set to true, MongoDB Cloud won't delete the cluster. If set to false, MongoDB Cloud will delete the cluster.",
              "type": "boolean"
            },
            "versionReleaseSystem": {
              "description": "Method by which the cluster maintains the MongoDB versions.\nIf value is CONTINUOUS, you must not specify mongoDBMajorVersion.",
              "type": "string"
            }
          },
          "required": [
            "name"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "externalProjectRef": {
          "description": "externalProjectRef holds the parent Atlas project ID.\nMutually exclusive with the \"projectRef\" field.",
          "properties": {
            "id": {
              "description": "ID is the Atlas project ID.",
              "type": "string"
            }
          },
          "required": [
            "id"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "flexSpec": {
          "description": "Configuration for the Flex cluster API. https://www.mongodb.com/docs/atlas/reference/api-resources-spec/v2/#tag/Flex-Clusters",
          "properties": {
            "name": {
              "description": "Human-readable label that identifies the instance.",
              "type": "string"
            },
            "providerSettings": {
              "description": "Group of cloud provider settings that configure the provisioned MongoDB flex cluster.",
              "properties": {
                "backingProviderName": {
                  "description": "Cloud service provider on which MongoDB Atlas provisions the flex cluster.",
                  "enum": [
                    "AWS",
                    "GCP",
                    "AZURE"
                  ],
                  "type": "string",
                  "x-kubernetes-validations": [
                    {
                      "message": "Backing Provider cannot be modified after cluster creation",
                      "rule": "self == oldSelf"
                    }
                  ]
                },
                "regionName": {
                  "description": "Human-readable label that identifies the geographic location of your MongoDB flex cluster.\nThe region you choose can affect network latency for clients accessing your databases.",
                  "type": "string",
                  "x-kubernetes-validations": [
                    {
                      "message": "Region Name cannot be modified after cluster creation",
                      "rule": "self == oldSelf"
                    }
                  ]
                }
              },
              "required": [
                "backingProviderName",
                "regionName"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "tags": {
              "description": "List that contains key-value pairs between 1 and 255 characters in length for tagging and categorizing the instance.",
              "items": {
                "description": "TagSpec holds a key-value pair for resource tagging on this deployment.",
                "properties": {
                  "key": {
                    "description": "Constant that defines the set of the tag.",
                    "maxLength": 255,
                    "minLength": 1,
                    "pattern": "^[a-zA-Z0-9][a-zA-Z0-9 @_.+`;`-]*$",
                    "type": "string"
                  },
                  "value": {
                    "description": "Variable that belongs to the set of the tag.",
                    "maxLength": 255,
                    "minLength": 1,
                    "pattern": "^[a-zA-Z0-9][a-zA-Z0-9 @_.+`;`-]*$",
                    "type": "string"
                  }
                },
                "required": [
                  "key",
                  "value"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "maxItems": 50,
              "type": "array"
            },
            "terminationProtectionEnabled": {
              "default": false,
              "description": "Flag that indicates whether termination protection is enabled on the cluster.\nIf set to true, MongoDB Cloud won't delete the cluster. If set to false, MongoDB Cloud will delete the cluster.",
              "type": "boolean"
            }
          },
          "required": [
            "name",
            "providerSettings"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "processArgs": {
          "description": "ProcessArgs allows modification of Advanced Configuration Options.",
          "properties": {
            "defaultReadConcern": {
              "description": "String that indicates the default level of acknowledgment requested from MongoDB for read operations set for this cluster.",
              "type": "string"
            },
            "defaultWriteConcern": {
              "description": "String that indicates the default level of acknowledgment requested from MongoDB for write operations set for this cluster.",
              "type": "string"
            },
            "failIndexKeyTooLong": {
              "description": "Flag that indicates whether to fail the operation and return an error when you insert or update documents where all indexed entries exceed 1024 bytes.\nIf you set this to false, mongod writes documents that exceed this limit, but doesn't index them.",
              "type": "boolean"
            },
            "javascriptEnabled": {
              "description": "Flag that indicates whether the cluster allows execution of operations that perform server-side executions of JavaScript.",
              "type": "boolean"
            },
            "minimumEnabledTlsProtocol": {
              "description": "String that indicates the minimum TLS version that the cluster accepts for incoming connections.\nClusters using TLS 1.0 or 1.1 should consider setting TLS 1.2 as the minimum TLS protocol version.",
              "type": "string"
            },
            "noTableScan": {
              "description": "Flag that indicates whether the cluster disables executing any query that requires a collection scan to return results.",
              "type": "boolean"
            },
            "oplogMinRetentionHours": {
              "description": "Minimum retention window for cluster's oplog expressed in hours. A value of null indicates that the cluster uses the default minimum oplog window that MongoDB Cloud calculates.",
              "type": "string"
            },
            "oplogSizeMB": {
              "description": "Number that indicates the storage limit of a cluster's oplog expressed in megabytes.\nA value of null indicates that the cluster uses the default oplog size that Atlas calculates.",
              "format": "int64",
              "type": "integer"
            },
            "sampleRefreshIntervalBIConnector": {
              "description": "Number that indicates the documents per database to sample when gathering schema information.",
              "format": "int64",
              "type": "integer"
            },
            "sampleSizeBIConnector": {
              "description": "Number that indicates the interval in seconds at which the mongosqld process re-samples data to create its relational schema.",
              "format": "int64",
              "type": "integer"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "projectRef": {
          "description": "projectRef is a reference to the parent AtlasProject resource.\nMutually exclusive with the \"externalProjectRef\" field.",
          "properties": {
            "name": {
              "description": "Name of the Kubernetes Resource",
              "type": "string"
            },
            "namespace": {
              "description": "Namespace of the Kubernetes Resource",
              "type": "string"
            }
          },
          "required": [
            "name"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "serverlessSpec": {
          "description": "Configuration for the serverless deployment API. https://www.mongodb.com/docs/atlas/reference/api/serverless-instances/\nDEPRECATED: Serverless instances are deprecated. See https://dochub.mongodb.org/core/atlas-flex-migration for details.",
          "properties": {
            "backupOptions": {
              "description": "Serverless Backup Options",
              "properties": {
                "serverlessContinuousBackupEnabled": {
                  "default": true,
                  "description": "ServerlessContinuousBackupEnabled indicates whether the cluster uses continuous cloud backups.\nDEPRECATED: Serverless instances are deprecated, and no longer support continuous backup. See https://dochub.mongodb.org/core/atlas-flex-migration for details.",
                  "type": "boolean"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "name": {
              "description": "Name of the serverless deployment as it appears in Atlas.\nAfter Atlas creates the deployment, you can't change its name.\nCan only contain ASCII letters, numbers, and hyphens.",
              "pattern": "^[a-zA-Z0-9][a-zA-Z0-9-]*$",
              "type": "string"
            },
            "privateEndpoints": {
              "description": "List that contains the private endpoint configurations for the Serverless instance.\nDEPRECATED: Serverless private endpoints are deprecated. See https://dochub.mongodb.org/core/atlas-flex-migration for details.",
              "items": {
                "description": "ServerlessPrivateEndpoint configures private endpoints for the Serverless instances.\nDEPRECATED: Serverless private endpoints are deprecated. See https://dochub.mongodb.org/core/atlas-flex-migration for details.",
                "properties": {
                  "cloudProviderEndpointID": {
                    "description": "CloudProviderEndpointID is the identifier of the cloud provider endpoint.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Name is the name of the Serverless PrivateLink Service. Should be unique.",
                    "type": "string"
                  },
                  "privateEndpointIpAddress": {
                    "description": "PrivateEndpointIPAddress is the IPv4 address of the private endpoint in your Azure VNet that someone added to this private endpoint service.",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "providerSettings": {
              "description": "Configuration for the provisioned hosts on which MongoDB runs. The available options are specific to the cloud service provider.",
              "properties": {
                "autoScaling": {
                  "description": "Range of instance sizes to which your deployment can scale.\nDEPRECATED: The value of this field doesn't take any effect.",
                  "properties": {
                    "autoIndexingEnabled": {
                      "description": "Flag that indicates whether autopilot mode for Performance Advisor is enabled.\nThe default is false.\nDEPRECATED: This flag is no longer supported.",
                      "type": "boolean"
                    },
                    "compute": {
                      "description": "Collection of settings that configure how a deployment might scale its deployment tier and whether the deployment can scale down.",
                      "properties": {
                        "enabled": {
                          "description": "Flag that indicates whether deployment tier auto-scaling is enabled. The default is false.",
                          "type": "boolean"
                        },
                        "maxInstanceSize": {
                          "description": "Maximum instance size to which your deployment can automatically scale (such as M40). Atlas requires this parameter if \"autoScaling.compute.enabled\" : true.",
                          "type": "string"
                        },
                        "minInstanceSize": {
                          "description": "Minimum instance size to which your deployment can automatically scale (such as M10). Atlas requires this parameter if \"autoScaling.compute.scaleDownEnabled\" : true.",
                          "type": "string"
                        },
                        "scaleDownEnabled": {
                          "description": "Flag that indicates whether the deployment tier may scale down. Atlas requires this parameter if \"autoScaling.compute.enabled\" : true.",
                          "type": "boolean"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "diskGBEnabled": {
                      "description": "Flag that indicates whether disk auto-scaling is enabled. The default is true.",
                      "type": "boolean"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "backingProviderName": {
                  "description": "Cloud service provider on which the host for a multi-tenant deployment is provisioned.\nThis setting only works when \"providerSetting.providerName\" : \"TENANT\" and \"providerSetting.instanceSizeName\" : M2 or M5.",
                  "enum": [
                    "AWS",
                    "GCP",
                    "AZURE"
                  ],
                  "type": "string"
                },
                "diskIOPS": {
                  "description": "Disk IOPS setting for AWS storage.\nSet only if you selected AWS as your cloud service provider.\nDEPRECATED: The value of this field doesn't take any effect.",
                  "format": "int64",
                  "type": "integer"
                },
                "diskTypeName": {
                  "description": "Type of disk if you selected Azure as your cloud service provider.\nDEPRECATED: The value of this field doesn't take any effect.",
                  "type": "string"
                },
                "encryptEBSVolume": {
                  "description": "Flag that indicates whether the Amazon EBS encryption feature encrypts the host's root volume for both data at rest within the volume and for data moving between the volume and the deployment.\nDEPRECATED: The value of this field doesn't take any effect.",
                  "type": "boolean"
                },
                "instanceSizeName": {
                  "description": "Atlas provides different deployment tiers, each with a default storage capacity and RAM size. The deployment you select is used for all the data-bearing hosts in your deployment tier.\nDEPRECATED: The value of this field doesn't take any effect.",
                  "type": "string"
                },
                "providerName": {
                  "description": "Cloud service provider on which Atlas provisions the hosts.",
                  "enum": [
                    "AWS",
                    "GCP",
                    "AZURE",
                    "TENANT",
                    "SERVERLESS"
                  ],
                  "type": "string"
                },
                "regionName": {
                  "description": "Physical location of your MongoDB deployment.\nThe region you choose can affect network latency for clients accessing your databases.",
                  "type": "string"
                },
                "volumeType": {
                  "description": "Disk IOPS setting for AWS storage.\nSet only if you selected AWS as your cloud service provider.\nDEPRECATED: The value of this field doesn't take any effect.",
                  "enum": [
                    "STANDARD",
                    "PROVISIONED"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "providerName"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "tags": {
              "description": "Key-value pairs for resource tagging.",
              "items": {
                "description": "TagSpec holds a key-value pair for resource tagging on this deployment.",
                "properties": {
                  "key": {
                    "description": "Constant that defines the set of the tag.",
                    "maxLength": 255,
                    "minLength": 1,
                    "pattern": "^[a-zA-Z0-9][a-zA-Z0-9 @_.+`;`-]*$",
                    "type": "string"
                  },
                  "value": {
                    "description": "Variable that belongs to the set of the tag.",
                    "maxLength": 255,
                    "minLength": 1,
                    "pattern": "^[a-zA-Z0-9][a-zA-Z0-9 @_.+`;`-]*$",
                    "type": "string"
                  }
                },
                "required": [
                  "key",
                  "value"
                ],
                "type": "object",
                "additionalProperties": false
              },
              "maxItems": 50,
              "type": "array"
            },
            "terminationProtectionEnabled": {
              "default": false,
              "description": "Flag that indicates whether termination protection is enabled on the cluster. If set to true, MongoDB Cloud won't delete the cluster. If set to false, MongoDB Cloud will delete the cluster.",
              "type": "boolean"
            }
          },
          "required": [
            "name",
            "providerSettings"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "upgradeToDedicated": {
          "description": " upgradeToDedicated, when set to true, triggers the migration from a Flex to a\n Dedicated cluster. The user MUST provide the new dedicated cluster configuration.\n This flag is ignored if the cluster is already dedicated.",
          "type": "boolean"
        }
      },
      "type": "object",
      "x-kubernetes-validations": [
        {
          "message": "must define only one project reference through externalProjectRef or projectRef",
          "rule": "(has(self.externalProjectRef) && !has(self.projectRef)) || (!has(self.externalProjectRef) && has(self.projectRef))"
        },
        {
          "message": "must define a local connection secret when referencing an external project",
          "rule": "(has(self.externalProjectRef) && has(self.connectionSecret)) || !has(self.externalProjectRef)"
        },
        {
          "fieldPath": ".serverlessSpec",
          "message": "serverlessSpec cannot be added - serverless instances are deprecated",
          "optionalOldSelf": true,
          "rule": "!has(self.serverlessSpec) || (oldSelf.hasValue() && oldSelf.value().serverlessSpec != null)"
        }
      ],
      "additionalProperties": false
    },
    "status": {
      "description": "AtlasDeploymentStatus defines the observed state of AtlasDeployment.",
      "properties": {
        "conditions": {
          "description": "Conditions is the list of statuses showing the current state of the Atlas Custom Resource",
          "items": {
            "description": "Condition describes the state of an Atlas Custom Resource at a certain point.",
            "properties": {
              "lastTransitionTime": {
                "description": "Last time the condition transitioned from one status to another.\nRepresented in ISO 8601 format.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "A message providing details about the transition.",
                "type": "string"
              },
              "reason": {
                "description": "The reason for the condition's last transition.",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition; one of True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type of Atlas Custom Resource condition.",
                "type": "string"
              }
            },
            "required": [
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "connectionStrings": {
          "description": "ConnectionStrings is a set of connection strings that your applications use to connect to this cluster.",
          "properties": {
            "private": {
              "description": "Network-peering-endpoint-aware mongodb:// connection strings for each interface VPC endpoint you configured to connect to this cluster.\nAtlas returns this parameter only if you created a network peering connection to this cluster.",
              "type": "string"
            },
            "privateEndpoint": {
              "description": "Private endpoint connection strings.\nEach object describes the connection strings you can use to connect to this cluster through a private endpoint.\nAtlas returns this parameter only if you deployed a private endpoint to all regions to which you deployed this cluster's nodes.",
              "items": {
                "description": "PrivateEndpoint connection strings. Each object describes the connection strings\nyou can use to connect to this cluster through a private endpoint.\nAtlas returns this parameter only if you deployed a private endpoint to all regions\nto which you deployed this cluster's nodes.",
                "properties": {
                  "connectionString": {
                    "description": "Private-endpoint-aware mongodb:// connection string for this private endpoint.",
                    "type": "string"
                  },
                  "endpoints": {
                    "description": "Private endpoint through which you connect to Atlas when you use connectionStrings.privateEndpoint[n].connectionString or connectionStrings.privateEndpoint[n].srvConnectionString.",
                    "items": {
                      "description": "Endpoint through which you connect to Atlas",
                      "properties": {
                        "endpointId": {
                          "description": "Unique identifier of the private endpoint.",
                          "type": "string"
                        },
                        "ip": {
                          "description": "Private IP address of the private endpoint network interface you created in your Azure VNet.",
                          "type": "string"
                        },
                        "providerName": {
                          "description": "Cloud provider to which you deployed the private endpoint. Atlas returns AWS or AZURE.",
                          "type": "string"
                        },
                        "region": {
                          "description": "Region to which you deployed the private endpoint.",
                          "type": "string"
                        }
                      },
                      "type": "object",
                      "additionalProperties": false
                    },
                    "type": "array"
                  },
                  "srvConnectionString": {
                    "description": "Private-endpoint-aware mongodb+srv:// connection string for this private endpoint.",
                    "type": "string"
                  },
                  "srvShardOptimizedConnectionString": {
                    "description": "Private endpoint-aware connection string optimized for sharded clusters that uses the `mongodb+srv://` protocol to connect to MongoDB Cloud through a private endpoint.",
                    "type": "string"
                  },
                  "type": {
                    "description": "Type of MongoDB process that you connect to with the connection strings\n\nAtlas returns:\n\n\u2022 MONGOD for replica sets, or\n\n\u2022 MONGOS for sharded clusters",
                    "type": "string"
                  }
                },
                "type": "object",
                "additionalProperties": false
              },
              "type": "array"
            },
            "privateSrv": {
              "description": "Network-peering-endpoint-aware mongodb+srv:// connection strings for each interface VPC endpoint you configured to connect to this cluster.\nAtlas returns this parameter only if you created a network peering connection to this cluster.\nUse this URI format if your driver supports it. If it doesn't, use connectionStrings.private.",
              "type": "string"
            },
            "standard": {
              "description": "Public mongodb:// connection string for this cluster.",
              "type": "string"
            },
            "standardSrv": {
              "description": "Public mongodb+srv:// connection string for this cluster.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "customZoneMapping": {
          "description": "List that contains key value pairs to map zones to geographic regions.\nThese pairs map an ISO 3166-1a2 location code, with an ISO 3166-2 subdivision code when possible, to a unique 24-hexadecimal string that identifies the custom zone.",
          "properties": {
            "customZoneMapping": {
              "additionalProperties": {
                "type": "string"
              },
              "description": "List that contains key value pairs to map zones to geographic regions.\nThese pairs map an ISO 3166-1a2 location code, with an ISO 3166-2 subdivision code when possible, to a unique 24-hexadecimal string that identifies the custom zone.",
              "type": "object"
            },
            "zoneMappingErrMessage": {
              "description": "Error message for failed Custom Zone Mapping.",
              "type": "string"
            },
            "zoneMappingState": {
              "description": "Status of the Custom Zone Mapping.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "managedNamespaces": {
          "description": "List that contains a namespace for a Global Cluster. MongoDB Atlas manages this cluster.",
          "items": {
            "properties": {
              "collection": {
                "description": "Human-readable label of the collection to manage for this Global Cluster.",
                "type": "string"
              },
              "customShardKey": {
                "description": "Database parameter used to divide the collection into shards. Global clusters require a compound shard key.\nThis compound shard key combines the location parameter and the user-selected custom key.",
                "type": "string"
              },
              "db": {
                "description": "Human-readable label of the database to manage for this Global Cluster.",
                "type": "string"
              },
              "errMessage": {
                "description": "Error message for a failed Managed Namespace.",
                "type": "string"
              },
              "isCustomShardKeyHashed": {
                "description": "Flag that indicates whether someone hashed the custom shard key for the specified collection.\nIf you set this value to false, MongoDB Atlas uses ranged sharding.",
                "type": "boolean"
              },
              "isShardKeyUnique": {
                "description": "Flag that indicates whether someone hashed the custom shard key. If this parameter returns false, this cluster uses ranged sharding.",
                "type": "boolean"
              },
              "numInitialChunks": {
                "description": "Minimum number of chunks to create initially when sharding an empty collection with a hashed shard key.",
                "type": "integer"
              },
              "presplitHashedZones": {
                "description": "Flag that indicates whether MongoDB Cloud should create and distribute initial chunks for an empty or non-existing collection.\nMongoDB Atlas distributes data based on the defined zones and zone ranges for the collection.",
                "type": "boolean"
              },
              "status": {
                "description": "Status of the Managed Namespace.",
                "type": "string"
              }
            },
            "required": [
              "collection",
              "db"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "mongoDBVersion": {
          "description": "MongoDBVersion is the version of MongoDB the cluster runs, in <major version>.<minor version> format.",
          "type": "string"
        },
        "mongoURIUpdated": {
          "description": "MongoURIUpdated is a timestamp in ISO 8601 date and time format in UTC when the connection string was last updated.\nThe connection string changes if you update any of the other values.",
          "type": "string"
        },
        "observedGeneration": {
          "description": "ObservedGeneration indicates the generation of the resource specification of which the Atlas Operator is aware.\nThe Atlas Operator updates this field to the value of 'metadata.generation' as soon as it starts reconciliation of the resource.",
          "format": "int64",
          "type": "integer"
        },
        "replicaSets": {
          "description": "Details that explain how MongoDB Cloud replicates data on the specified MongoDB database.\nThis array has one object per shard representing node configurations in each shard. For replica sets there is only one object representing node configurations.",
          "items": {
            "properties": {
              "id": {
                "description": "Unique 24-hexadecimal digit string that identifies the replication object for a shard in a Cluster.",
                "type": "string"
              },
              "zoneName": {
                "description": "Human-readable label that describes the zone this shard belongs to in a Global Cluster.",
                "type": "string"
              }
            },
            "required": [
              "id"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "searchIndexes": {
          "description": "SearchIndexes contains a list of search indexes statuses configured for a project.",
          "items": {
            "properties": {
              "ID": {
                "description": "Unique 24-hexadecimal digit string that identifies this Atlas Search index.",
                "type": "string"
              },
              "message": {
                "description": "Details on the status of the search index.",
                "type": "string"
              },
              "name": {
                "description": "Human-readable label that identifies this index.",
                "type": "string"
              },
              "status": {
                "description": "Condition of the search index.",
                "type": "string"
              }
            },
            "required": [
              "ID",
              "message",
              "name",
              "status"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "serverlessPrivateEndpoints": {
          "description": "ServerlessPrivateEndpoints contains a list of private endpoints configured for the serverless deployment.",
          "items": {
            "properties": {
              "_id": {
                "description": "ID is the identifier of the Serverless PrivateLink Service.",
                "type": "string"
              },
              "cloudProviderEndpointId": {
                "description": "CloudProviderEndpointID is the identifier of the cloud provider endpoint.",
                "type": "string"
              },
              "endpointServiceName": {
                "description": "EndpointServiceName is the name of the PrivateLink endpoint service in AWS. Returns null while the endpoint service is being created.",
                "type": "string"
              },
              "errorMessage": {
                "description": "ErrorMessage is the error message if the Serverless PrivateLink Service failed to create or connect.",
                "type": "string"
              },
              "name": {
                "description": "Name is the name of the Serverless PrivateLink Service. Should be unique.",
                "type": "string"
              },
              "privateEndpointIpAddress": {
                "description": "PrivateEndpointIPAddress is the IPv4 address of the private endpoint in your Azure VNet that someone added to this private endpoint service.",
                "type": "string"
              },
              "privateLinkServiceResourceId": {
                "description": "PrivateLinkServiceResourceID is the root-relative path that identifies the Azure Private Link Service that MongoDB Cloud manages. MongoDB Cloud returns null while it creates the endpoint service.",
                "type": "string"
              },
              "providerName": {
                "description": "ProviderName is human-readable label that identifies the cloud provider. Values include AWS or AZURE.",
                "type": "string"
              },
              "status": {
                "description": "Status of the AWS Serverless PrivateLink connection.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "stateName": {
          "description": "StateName is the current state of the cluster.\nThe possible states are: IDLE, CREATING, UPDATING, DELETING, DELETED, REPAIRING",
          "type": "string"
        }
      },
      "required": [
        "conditions"
      ],
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
