# Source: https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/refs/tags/v{version}/config/crd/bases/postgresql.cnpg.io_backups.yaml
# Version: 1.27.0
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.18.0
  name: backups.postgresql.cnpg.io
spec:
  group: postgresql.cnpg.io
  names:
    kind: Backup
    listKind: BackupList
    plural: backups
    singular: backup
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - jsonPath: .spec.cluster.name
      name: Cluster
      type: string
    - jsonPath: .spec.method
      name: Method
      type: string
    - jsonPath: .status.phase
      name: Phase
      type: string
    - jsonPath: .status.error
      name: Error
      type: string
    name: v1
    schema:
      openAPIV3Schema:
        description: A Backup resource is a request for a PostgreSQL backup by the
          user.
        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: |-
              Specification of the desired behavior of the backup.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
            properties:
              cluster:
                description: The cluster to backup
                properties:
                  name:
                    description: Name of the referent.
                    type: string
                required:
                - name
                type: object
              method:
                default: barmanObjectStore
                description: |-
                  The backup method to be used, possible options are `barmanObjectStore`,
                  `volumeSnapshot` or `plugin`. Defaults to: `barmanObjectStore`.
                enum:
                - barmanObjectStore
                - volumeSnapshot
                - plugin
                type: string
              online:
                description: |-
                  Whether the default type of backup with volume snapshots is
                  online/hot (`true`, default) or offline/cold (`false`)
                  Overrides the default setting specified in the cluster field '.spec.backup.volumeSnapshot.online'
                type: boolean
              onlineConfiguration:
                description: |-
                  Configuration parameters to control the online/hot backup with volume snapshots
                  Overrides the default settings specified in the cluster '.backup.volumeSnapshot.onlineConfiguration' stanza
                properties:
                  immediateCheckpoint:
                    description: |-
                      Control whether the I/O workload for the backup initial checkpoint will
                      be limited, according to the `checkpoint_completion_target` setting on
                      the PostgreSQL server. If set to true, an immediate checkpoint will be
                      used, meaning PostgreSQL will complete the checkpoint as soon as
                      possible. `false` by default.
                    type: boolean
                  waitForArchive:
                    default: true
                    description: |-
                      If false, the function will return immediately after the backup is completed,
                      without waiting for WAL to be archived.
                      This behavior is only useful with backup software that independently monitors WAL archiving.
                      Otherwise, WAL required to make the backup consistent might be missing and make the backup useless.
                      By default, or when this parameter is true, pg_backup_stop will wait for WAL to be archived when archiving is
                      enabled.
                      On a standby, this means that it will wait only when archive_mode = always.
                      If write activity on the primary is low, it may be useful to run pg_switch_wal on the primary in order to trigger
                      an immediate segment switch.
                    type: boolean
                type: object
              pluginConfiguration:
                description: Configuration parameters passed to the plugin managing
                  this backup
                properties:
                  name:
                    description: Name is the name of the plugin managing this backup
                    type: string
                  parameters:
                    additionalProperties:
                      type: string
                    description: |-
                      Parameters are the configuration parameters passed to the backup
                      plugin for this backup
                    type: object
                required:
                - name
                type: object
              target:
                description: |-
                  The policy to decide which instance should perform this backup. If empty,
                  it defaults to `cluster.spec.backup.target`.
                  Available options are empty string, `primary` and `prefer-standby`.
                  `primary` to have backups run always on primary instances,
                  `prefer-standby` to have backups run preferably on the most updated
                  standby, if available.
                enum:
                - primary
                - prefer-standby
                type: string
            required:
            - cluster
            type: object
            x-kubernetes-validations:
            - message: BackupSpec is immutable once set
              rule: oldSelf == self
          status:
            description: |-
              Most recently observed status of the backup. This data may not be up to
              date. Populated by the system. Read-only.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status
            properties:
              azureCredentials:
                description: The credentials to use to upload data to Azure Blob Storage
                properties:
                  connectionString:
                    description: The connection string to be used
                    properties:
                      key:
                        description: The key to select
                        type: string
                      name:
                        description: Name of the referent.
                        type: string
                    required:
                    - key
                    - name
                    type: object
                  inheritFromAzureAD:
                    description: Use the Azure AD based authentication without providing
                      explicitly the keys.
                    type: boolean
                  storageAccount:
                    description: The storage account where to upload data
                    properties:
                      key:
                        description: The key to select
                        type: string
                      name:
                        description: Name of the referent.
                        type: string
                    required:
                    - key
                    - name
                    type: object
                  storageKey:
                    description: |-
                      The storage account key to be used in conjunction
                      with the storage account name
                    properties:
                      key:
                        description: The key to select
                        type: string
                      name:
                        description: Name of the referent.
                        type: string
                    required:
                    - key
                    - name
                    type: object
                  storageSasToken:
                    description: |-
                      A shared-access-signature to be used in conjunction with
                      the storage account name
                    properties:
                      key:
                        description: The key to select
                        type: string
                      name:
                        description: Name of the referent.
                        type: string
                    required:
                    - key
                    - name
                    type: object
                type: object
              backupId:
                description: The ID of the Barman backup
                type: string
              backupLabelFile:
                description: Backup label file content as returned by Postgres in
                  case of online (hot) backups
                format: byte
                type: string
              backupName:
                description: The Name of the Barman backup
                type: string
              beginLSN:
                description: The starting xlog
                type: string
              beginWal:
                description: The starting WAL
                type: string
              commandError:
                description: The backup command output in case of error
                type: string
              commandOutput:
                description: Unused. Retained for compatibility with old versions.
                type: string
              destinationPath:
                description: |-
                  The path where to store the backup (i.e. s3://bucket/path/to/folder)
                  this path, with different destination folders, will be used for WALs
                  and for data. This may not be populated in case of errors.
                type: string
              encryption:
                description: Encryption method required to S3 API
                type: string
              endLSN:
                description: The ending xlog
                type: string
              endWal:
                description: The ending WAL
                type: string
              endpointCA:
                description: |-
                  EndpointCA store the CA bundle of the barman endpoint.
                  Useful when using self-signed certificates to avoid
                  errors with certificate issuer and barman-cloud-wal-archive.
                properties:
                  key:
                    description: The key to select
                    type: string
                  name:
                    description: Name of the referent.
                    type: string
                required:
                - key
                - name
                type: object
              endpointURL:
                description: |-
                  Endpoint to be used to upload data to the cloud,
                  overriding the automatic endpoint discovery
                type: string
              error:
                description: The detected error
                type: string
              googleCredentials:
                description: The credentials to use to upload data to Google Cloud
                  Storage
                properties:
                  applicationCredentials:
                    description: The secret containing the Google Cloud Storage JSON
                      file with the credentials
                    properties:
                      key:
                        description: The key to select
                        type: string
                      name:
                        description: Name of the referent.
                        type: string
                    required:
                    - key
                    - name
                    type: object
                  gkeEnvironment:
                    description: |-
                      If set to true, will presume that it's running inside a GKE environment,
                      default to false.
                    type: boolean
                type: object
              instanceID:
                description: Information to identify the instance where the backup
                  has been taken from
                properties:
                  ContainerID:
                    description: The container ID
                    type: string
                  podName:
                    description: The pod name
                    type: string
                type: object
              method:
                description: The backup method being used
                type: string
              online:
                description: Whether the backup was online/hot (`true`) or offline/cold
                  (`false`)
                type: boolean
              phase:
                description: The last backup status
                type: string
              pluginMetadata:
                additionalProperties:
                  type: string
                description: A map containing the plugin metadata
                type: object
              s3Credentials:
                description: The credentials to use to upload data to S3
                properties:
                  accessKeyId:
                    description: The reference to the access key id
                    properties:
                      key:
                        description: The key to select
                        type: string
                      name:
                        description: Name of the referent.
                        type: string
                    required:
                    - key
                    - name
                    type: object
                  inheritFromIAMRole:
                    description: Use the role based authentication without providing
                      explicitly the keys.
                    type: boolean
                  region:
                    description: The reference to the secret containing the region
                      name
                    properties:
                      key:
                        description: The key to select
                        type: string
                      name:
                        description: Name of the referent.
                        type: string
                    required:
                    - key
                    - name
                    type: object
                  secretAccessKey:
                    description: The reference to the secret access key
                    properties:
                      key:
                        description: The key to select
                        type: string
                      name:
                        description: Name of the referent.
                        type: string
                    required:
                    - key
                    - name
                    type: object
                  sessionToken:
                    description: The references to the session key
                    properties:
                      key:
                        description: The key to select
                        type: string
                      name:
                        description: Name of the referent.
                        type: string
                    required:
                    - key
                    - name
                    type: object
                type: object
              serverName:
                description: |-
                  The server name on S3, the cluster name is used if this
                  parameter is omitted
                type: string
              snapshotBackupStatus:
                description: Status of the volumeSnapshot backup
                properties:
                  elements:
                    description: The elements list, populated with the gathered volume
                      snapshots
                    items:
                      description: BackupSnapshotElementStatus is a volume snapshot
                        that is part of a volume snapshot method backup
                      properties:
                        name:
                          description: Name is the snapshot resource name
                          type: string
                        tablespaceName:
                          description: |-
                            TablespaceName is the name of the snapshotted tablespace. Only set
                            when type is PG_TABLESPACE
                          type: string
                        type:
                          description: Type is tho role of the snapshot in the cluster,
                            such as PG_DATA, PG_WAL and PG_TABLESPACE
                          type: string
                      required:
                      - name
                      - type
                      type: object
                    type: array
                type: object
              startedAt:
                description: When the backup was started
                format: date-time
                type: string
              stoppedAt:
                description: When the backup was terminated
                format: date-time
                type: string
              tablespaceMapFile:
                description: Tablespace map file content as returned by Postgres in
                  case of online (hot) backups
                format: byte
                type: string
            type: object
        required:
        - metadata
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
