{
  "description": "AlloyDBBackup is the Schema for the AlloyDBBackup 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": "AlloyDBBackupSpec defines the desired state of AlloyDBBackup",
      "properties": {
        "clusterNameRef": {
          "description": "The full resource name of the backup source cluster (e.g., projects/{project}/locations/{location}/clusters/{clusterId}).",
          "oneOf": [
            {
              "not": {
                "required": [
                  "external"
                ]
              },
              "required": [
                "name"
              ]
            },
            {
              "not": {
                "anyOf": [
                  {
                    "required": [
                      "name"
                    ]
                  },
                  {
                    "required": [
                      "namespace"
                    ]
                  }
                ]
              },
              "required": [
                "external"
              ]
            }
          ],
          "properties": {
            "external": {
              "description": "A reference to an externally managed AlloyDBCluster resource. Should be in the format \"projects/{{projectID}}/locations/{{location}}/clusters/{{clusterID}}\".",
              "type": "string"
            },
            "name": {
              "description": "The name of a AlloyDBCluster resource.",
              "type": "string"
            },
            "namespace": {
              "description": "The namespace of a AlloyDBCluster resource.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "description": {
          "description": "Immutable. User-provided description of the backup.",
          "type": "string"
        },
        "encryptionConfig": {
          "description": "EncryptionConfig describes the encryption config of a cluster or a backup that is encrypted with a CMEK (customer-managed encryption key).",
          "properties": {
            "kmsKeyName": {
              "description": "Immutable. The fully-qualified resource name of the KMS key. Each Cloud KMS key is regionalized and has the following format: projects/[PROJECT]/locations/[REGION]/keyRings/[RING]/cryptoKeys/[KEY_NAME].",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "location": {
          "description": "Immutable. The location where the alloydb backup should reside.",
          "type": "string"
        },
        "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"
            },
            "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": "Immutable. Optional. The backupId of the resource. Used for creation and acquisition. When unset, the value of `metadata.name` is used as the default.",
          "type": "string"
        }
      },
      "required": [
        "clusterNameRef",
        "location",
        "projectRef"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "AlloyDBBackupStatus defines the config connector machine state of AlloyDBBackup",
      "properties": {
        "conditions": {
          "description": "Conditions represent the latest available observations of the AlloyDBBackup'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"
        },
        "createTime": {
          "description": "Time the Backup was created in UTC.",
          "type": "string"
        },
        "encryptionInfo": {
          "description": "EncryptionInfo describes the encryption information of a cluster or a backup.",
          "items": {
            "properties": {
              "encryptionType": {
                "description": "Output only. Type of encryption.",
                "type": "string"
              },
              "kmsKeyVersions": {
                "description": "Output only. Cloud KMS key versions that are being used to protect the database or the backup.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "etag": {
          "description": "A hash of the resource.",
          "type": "string"
        },
        "externalRef": {
          "description": "A unique specifier for the AlloyDBBackup resource in GCP.",
          "type": "string"
        },
        "name": {
          "description": "Output only. The name of the backup resource with the format: * projects/{project}/locations/{region}/backups/{backupId}.",
          "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"
        },
        "reconciling": {
          "description": "If true, indicates that the service is actively updating the resource. This can happen due to user-triggered updates or system actions like failover or maintenance.",
          "type": "boolean"
        },
        "state": {
          "description": "The current state of the backup.",
          "type": "string"
        },
        "uid": {
          "description": "Output only. The system-generated UID of the resource. The UID is assigned when the resource is created, and it is retained until it is deleted.",
          "type": "string"
        },
        "updateTime": {
          "description": "Time the Backup was updated in UTC.",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}
