apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: backups.resources.cattle.io
spec:
  group: resources.cattle.io
  names:
    kind: Backup
    plural: backups
    singular: backup
  scope: Cluster
  versions:
  - additionalPrinterColumns:
    - jsonPath: .status.storageLocation
      name: Location
      type: string
    - jsonPath: .status.backupType
      name: Type
      type: string
    - jsonPath: .status.filename
      name: Latest-Backup
      type: string
    - jsonPath: .spec.resourceSetName
      name: ResourceSet
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - jsonPath: .status.conditions[?(@.type=="Ready")].message
      name: Status
      type: string
    name: v1
    schema:
      openAPIV3Schema:
        properties:
          spec:
            properties:
              encryptionConfigSecretName:
                description: Name of the Secret containing the encryption config
                nullable: true
                type: string
              resourceSetName:
                description: Name of the ResourceSet CR to use for backup
                nullable: true
                type: string
              retentionCount:
                minimum: 1
                type: integer
              schedule:
                description: Cron schedule for recurring backups
                example:
                  Descriptors: '@midnight'
                  Standard crontab specs: 0 0 * * *
                nullable: true
                type: string
              storageLocation:
                nullable: true
                properties:
                  s3:
                    nullable: true
                    properties:
                      bucketName:
                        nullable: true
                        type: string
                      clientConfig:
                        nullable: true
                        properties:
                          aws:
                            nullable: true
                            properties:
                              dualStack:
                                type: boolean
                            type: object
                        type: object
                      credentialSecretName:
                        nullable: true
                        type: string
                      credentialSecretNamespace:
                        nullable: true
                        type: string
                      endpoint:
                        nullable: true
                        type: string
                      endpointCA:
                        nullable: true
                        type: string
                      folder:
                        nullable: true
                        type: string
                      insecureTLSSkipVerify:
                        type: boolean
                      region:
                        nullable: true
                        type: string
                    type: object
                type: object
            required:
            - resourceSetName
            type: object
          status:
            properties:
              backupType:
                nullable: true
                type: string
              conditions:
                items:
                  properties:
                    lastTransitionTime:
                      nullable: true
                      type: string
                    lastUpdateTime:
                      nullable: true
                      type: string
                    message:
                      nullable: true
                      type: string
                    reason:
                      nullable: true
                      type: string
                    status:
                      nullable: true
                      type: string
                    type:
                      nullable: true
                      type: string
                  type: object
                nullable: true
                type: array
              filename:
                nullable: true
                type: string
              lastSnapshotTs:
                nullable: true
                type: string
              nextSnapshotAt:
                nullable: true
                type: string
              observedGeneration:
                type: integer
              storageLocation:
                nullable: true
                type: string
              summary:
                nullable: true
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
