{
  "description": "BackupDRBackupVault is the Schema for the BackupDRBackupVault API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "BackupDRBackupVaultSpec defines the desired state of BackupDRBackupVault",
      "properties": {
        "accessRestriction": {
          "description": "Optional. Note: This field is added for future use case and will not be\n supported in the current release.\n\n Access restriction for the backup vault.\n Default value is WITHIN_ORGANIZATION if not provided during creation.",
          "type": "string"
        },
        "annotations": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Optional. User annotations. See https://google.aip.dev/128#annotations Stores small amounts of arbitrary data.",
          "type": "object"
        },
        "backupMinimumEnforcedRetentionDuration": {
          "description": "Required. The default and minimum enforced retention for each backup within the backup vault.  The enforced retention for each backup can be extended.",
          "type": "string"
        },
        "description": {
          "description": "Optional. The description of the BackupVault instance (2048 characters or less).",
          "type": "string"
        },
        "effectiveTime": {
          "description": "Optional. Time after which the BackupVault resource is locked.",
          "type": "string"
        },
        "ignoreInactiveDatasources": {
          "description": "Optional. If set to true, allows deletion of a backup vault even when it contains inactive data sources. This overrides the default restriction that prevents deletion of backup vaults with any data sources, even if those data sources are inactive.",
          "type": "boolean"
        },
        "location": {
          "description": "Immutable.",
          "type": "string",
          "x-kubernetes-validations": [
            {
              "message": "Location field is immutable",
              "rule": "self == oldSelf"
            }
          ]
        },
        "projectRef": {
          "description": "The Project that this resource belongs to.",
          "oneOf": [
            {
              "not": {
                "required": [
                  "external"
                ]
              },
              "required": [
                "name"
              ]
            },
            {
              "not": {
                "anyOf": [
                  {
                    "required": [
                      "name"
                    ]
                  },
                  {
                    "required": [
                      "namespace"
                    ]
                  }
                ]
              },
              "required": [
                "external"
              ]
            }
          ],
          "properties": {
            "external": {
              "description": "The `projectID` field of a project, when not managed by Config Connector.",
              "type": "string"
            },
            "kind": {
              "description": "The kind of the Project resource; optional but must be `Project` if provided.",
              "type": "string"
            },
            "name": {
              "description": "The `name` field of a `Project` resource.",
              "type": "string"
            },
            "namespace": {
              "description": "The `namespace` field of a `Project` resource.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "resourceID": {
          "description": "The BackupDRBackupVault name. If not given, the metadata.name will be used.",
          "type": "string"
        }
      },
      "required": [
        "backupMinimumEnforcedRetentionDuration",
        "location",
        "projectRef"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "BackupDRBackupVaultStatus defines the config connector machine state of BackupDRBackupVault",
      "properties": {
        "conditions": {
          "description": "Conditions represent the latest available observations of the object's current state.",
          "items": {
            "properties": {
              "lastTransitionTime": {
                "description": "Last time the condition transitioned from one status to another.",
                "type": "string"
              },
              "message": {
                "description": "Human-readable message indicating details about last transition.",
                "type": "string"
              },
              "reason": {
                "description": "Unique, one-word, CamelCase reason for the condition's last transition.",
                "type": "string"
              },
              "status": {
                "description": "Status is the status of the condition. Can be True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type is the type of the condition.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "externalRef": {
          "description": "A unique specifier for the BackupDRBackupVault resource in GCP.",
          "type": "string"
        },
        "observedGeneration": {
          "description": "ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.",
          "format": "int64",
          "type": "integer"
        },
        "observedState": {
          "description": "ObservedState is the state of the resource as most recently observed in GCP.",
          "properties": {
            "backupCount": {
              "description": "Output only. The number of backups in this backup vault.",
              "format": "int64",
              "type": "integer"
            },
            "createTime": {
              "description": "Output only. The time when the instance was created.",
              "type": "string"
            },
            "deletable": {
              "description": "Output only. Set to true when there are no backups nested under this resource.",
              "type": "boolean"
            },
            "etag": {
              "description": "Output only. A tag that confirms the content of the BackupVault resource.",
              "type": "string"
            },
            "serviceAccount": {
              "description": "Output only. Service account used by the BackupVault Service for this BackupVault.  The user should grant this account permissions in their workload project to enable the service to run backups and restores there.",
              "type": "string"
            },
            "state": {
              "description": "Output only. The BackupVault resource instance state.",
              "type": "string"
            },
            "totalStoredBytes": {
              "description": "Output only. Total size of the storage used by all backup resources.",
              "format": "int64",
              "type": "integer"
            },
            "uid": {
              "description": "Output only. Immutable after resource creation until resource deletion.",
              "type": "string"
            },
            "updateTime": {
              "description": "Output only. The time when the instance was updated.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}
