# Source: https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/refs/tags/v{version}/config/crd/bases/postgresql.cnpg.io_subscriptions.yaml
# Version: 1.25.1
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.17.2
  name: subscriptions.postgresql.cnpg.io
spec:
  group: postgresql.cnpg.io
  names:
    kind: Subscription
    listKind: SubscriptionList
    plural: subscriptions
    singular: subscription
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - jsonPath: .spec.cluster.name
      name: Cluster
      type: string
    - jsonPath: .spec.name
      name: PG Name
      type: string
    - jsonPath: .status.applied
      name: Applied
      type: boolean
    - description: Latest reconciliation message
      jsonPath: .status.message
      name: Message
      type: string
    name: v1
    schema:
      openAPIV3Schema:
        description: Subscription is the Schema for the subscriptions 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: SubscriptionSpec defines the desired state of Subscription
            properties:
              cluster:
                description: The name of the PostgreSQL cluster that identifies the
                  "subscriber"
                properties:
                  name:
                    default: ""
                    description: |-
                      Name of the referent.
                      This field is effectively required, but due to backwards compatibility is
                      allowed to be empty. Instances of this type with an empty value here are
                      almost certainly wrong.
                      More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                    type: string
                type: object
                x-kubernetes-map-type: atomic
              dbname:
                description: |-
                  The name of the database where the publication will be installed in
                  the "subscriber" cluster
                type: string
                x-kubernetes-validations:
                - message: dbname is immutable
                  rule: self == oldSelf
              externalClusterName:
                description: The name of the external cluster with the publication
                  ("publisher")
                type: string
              name:
                description: The name of the subscription inside PostgreSQL
                type: string
                x-kubernetes-validations:
                - message: name is immutable
                  rule: self == oldSelf
              parameters:
                additionalProperties:
                  type: string
                description: |-
                  Subscription parameters part of the `WITH` clause as expected by
                  PostgreSQL `CREATE SUBSCRIPTION` command
                type: object
              publicationDBName:
                description: |-
                  The name of the database containing the publication on the external
                  cluster. Defaults to the one in the external cluster definition.
                type: string
              publicationName:
                description: |-
                  The name of the publication inside the PostgreSQL database in the
                  "publisher"
                type: string
              subscriptionReclaimPolicy:
                default: retain
                description: The policy for end-of-life maintenance of this subscription
                enum:
                - delete
                - retain
                type: string
            required:
            - cluster
            - dbname
            - externalClusterName
            - name
            - publicationName
            type: object
          status:
            description: SubscriptionStatus defines the observed state of Subscription
            properties:
              applied:
                description: Applied is true if the subscription was reconciled correctly
                type: boolean
              message:
                description: Message is the reconciliation output message
                type: string
              observedGeneration:
                description: |-
                  A sequence number representing the latest
                  desired state that was synchronized
                format: int64
                type: integer
            type: object
        required:
        - metadata
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
