{
  "description": "Backup is where Longhorn stores backup object.",
  "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,
      "description": "BackupSpec defines the desired state of the Longhorn backup",
      "properties": {
        "backupBlockSize": {
          "description": "The backup block size. 0 means the legacy default size 2MiB, and -1 indicate the block size is invalid.",
          "enum": [
            "-1",
            "2097152",
            "16777216"
          ],
          "format": "int64",
          "type": [
            "string",
            "null"
          ]
        },
        "backupMode": {
          "description": "The backup mode of this backup.\nCan be \"full\" or \"incremental\"",
          "enum": [
            "full",
            "incremental"
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "labels": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels of snapshot backup.",
          "type": [
            "object",
            "null"
          ]
        },
        "snapshotName": {
          "description": "The snapshot name.",
          "type": [
            "string",
            "null"
          ]
        },
        "syncRequestedAt": {
          "description": "The time to request run sync the remote backup.",
          "format": "date-time",
          "nullable": true,
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    },
    "status": {
      "additionalProperties": false,
      "description": "BackupStatus defines the observed state of the Longhorn backup",
      "properties": {
        "backupCreatedAt": {
          "description": "The snapshot backup upload finished time.",
          "type": [
            "string",
            "null"
          ]
        },
        "backupTargetName": {
          "description": "The backup target name.",
          "type": [
            "string",
            "null"
          ]
        },
        "compressionMethod": {
          "description": "Compression method",
          "type": [
            "string",
            "null"
          ]
        },
        "error": {
          "description": "The error message when taking the snapshot backup.",
          "type": [
            "string",
            "null"
          ]
        },
        "labels": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "The labels of snapshot backup.",
          "nullable": true,
          "type": [
            "object",
            "null"
          ]
        },
        "lastSyncedAt": {
          "description": "The last time that the backup was synced with the remote backup target.",
          "format": "date-time",
          "nullable": true,
          "type": [
            "string",
            "null"
          ]
        },
        "messages": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "The error messages when calling longhorn engine on listing or inspecting backups.",
          "nullable": true,
          "type": [
            "object",
            "null"
          ]
        },
        "newlyUploadDataSize": {
          "description": "Size in bytes of newly uploaded data",
          "type": [
            "string",
            "null"
          ]
        },
        "ownerID": {
          "description": "The node ID on which the controller is responsible to reconcile this backup CR.",
          "type": [
            "string",
            "null"
          ]
        },
        "progress": {
          "description": "The snapshot backup progress.",
          "type": [
            "integer",
            "null"
          ]
        },
        "reUploadedDataSize": {
          "description": "Size in bytes of reuploaded data",
          "type": [
            "string",
            "null"
          ]
        },
        "replicaAddress": {
          "description": "The address of the replica that runs snapshot backup.",
          "type": [
            "string",
            "null"
          ]
        },
        "size": {
          "description": "The snapshot size.",
          "type": [
            "string",
            "null"
          ]
        },
        "snapshotCreatedAt": {
          "description": "The snapshot creation time.",
          "type": [
            "string",
            "null"
          ]
        },
        "snapshotName": {
          "description": "The snapshot name.",
          "type": [
            "string",
            "null"
          ]
        },
        "state": {
          "description": "The backup creation state.\nCan be \"\", \"InProgress\", \"Completed\", \"Error\", \"Unknown\".",
          "type": [
            "string",
            "null"
          ]
        },
        "url": {
          "description": "The snapshot backup URL.",
          "type": [
            "string",
            "null"
          ]
        },
        "volumeBackingImageName": {
          "description": "The volume's backing image name.",
          "type": [
            "string",
            "null"
          ]
        },
        "volumeCreated": {
          "description": "The volume creation time.",
          "type": [
            "string",
            "null"
          ]
        },
        "volumeName": {
          "description": "The volume name.",
          "type": [
            "string",
            "null"
          ]
        },
        "volumeSize": {
          "description": "The volume size.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    }
  },
  "type": "object"
}