{
  "description": "ExoscalePostgreSQL is the API for creating PostgreSQL on Exoscale.",
  "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"
    },
    "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"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "Spec defines the desired state of a ExoscalePostgreSQL.",
      "properties": {
        "parameters": {
          "description": "Parameters are the configurable fields of a ExoscalePostgreSQL.",
          "properties": {
            "backup": {
              "description": "Backup contains settings to control the backups of an instance.",
              "properties": {
                "timeOfDay": {
                  "default": "21:30:00",
                  "description": "TimeOfDay for doing daily backups, in UTC.\nFormat: \"hh:mm:ss\".",
                  "pattern": "^([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$",
                  "type": "string"
                }
              },
              "type": "object",
              "default": {},
              "additionalProperties": false
            },
            "maintenance": {
              "description": "Maintenance contains settings to control the maintenance of an instance.",
              "properties": {
                "dayOfWeek": {
                  "default": "tuesday",
                  "description": "DayOfWeek specifies at which weekday the maintenance is held place.\nAllowed values are [monday, tuesday, wednesday, thursday, friday, saturday, sunday, never]",
                  "enum": [
                    "monday",
                    "tuesday",
                    "wednesday",
                    "thursday",
                    "friday",
                    "saturday",
                    "sunday",
                    "never"
                  ],
                  "type": "string"
                },
                "timeOfDay": {
                  "default": "22:30:00",
                  "description": "TimeOfDay for installing updates in UTC.\nFormat: \"hh:mm:ss\".",
                  "pattern": "^([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$",
                  "type": "string"
                }
              },
              "type": "object",
              "default": {},
              "additionalProperties": false
            },
            "network": {
              "description": "Network contains any network related settings.",
              "properties": {
                "ipFilter": {
                  "default": [
                    "0.0.0.0/0"
                  ],
                  "description": "IPFilter is a list of allowed IPv4 CIDR ranges that can access the service.\nIf no IP Filter is set, you may not be able to reach the service.\nA value of `0.0.0.0/0` will open the service to all addresses on the public internet.",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "type": "object",
              "default": {},
              "additionalProperties": false
            },
            "service": {
              "description": "Service contains Exoscale PostgreSQL DBaaS specific properties",
              "properties": {
                "majorVersion": {
                  "default": "16",
                  "description": "MajorVersion contains the major version for PostgreSQL.\nLeave it empty to always get the latest supported version.",
                  "enum": [
                    "14",
                    "15",
                    "16"
                  ],
                  "type": "string"
                },
                "pgSettings": {
                  "description": "PGSettings contains additional PostgreSQL settings.",
                  "type": "object",
                  "x-kubernetes-preserve-unknown-fields": true
                },
                "zone": {
                  "default": "ch-gva-2",
                  "description": "Zone is the datacenter identifier in which the instance runs in.",
                  "enum": [
                    "ch-gva-2",
                    "ch-dk-2",
                    "de-fra-1",
                    "de-muc-1",
                    "at-vie-1",
                    "bg-sof-1"
                  ],
                  "type": "string"
                }
              },
              "type": "object",
              "default": {},
              "additionalProperties": false
            },
            "size": {
              "description": "Size contains settings to control the sizing of a service.",
              "properties": {
                "plan": {
                  "default": "startup-4",
                  "description": "Plan is the name of the resource plan that defines the compute resources.",
                  "type": "string"
                }
              },
              "type": "object",
              "default": {},
              "additionalProperties": false
            }
          },
          "type": "object",
          "default": {},
          "additionalProperties": false
        },
        "writeConnectionSecretToRef": {
          "description": "WriteConnectionSecretToRef references a secret to which the connection details will be written.",
          "properties": {
            "name": {
              "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
              "type": "string"
            },
            "namespace": {
              "type": "string"
            }
          },
          "type": "object",
          "x-kubernetes-map-type": "atomic",
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "Status reflects the observed state of a ExoscalePostgreSQL.",
      "properties": {
        "postgresqlConditions": {
          "description": "PostgreSQLConditions contains the status conditions of the backing object.",
          "items": {
            "properties": {
              "lastTransitionTime": {
                "description": "LastTransitionTime is the last time the condition transitioned from one status to another.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "Message is a human-readable message indicating details about the transition.",
                "maxLength": 32768,
                "type": "string"
              },
              "observedGeneration": {
                "description": "ObservedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.",
                "format": "int64",
                "minimum": 0,
                "type": "integer"
              },
              "reason": {
                "description": "Reason contains a programmatic identifier indicating the reason for the condition's last transition.",
                "maxLength": 1024,
                "pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$",
                "type": "string"
              },
              "status": {
                "description": "Status of the condition, one of True, False, Unknown.",
                "enum": [
                  "True",
                  "False",
                  "Unknown"
                ],
                "type": "string"
              },
              "type": {
                "description": "Type of condition.",
                "maxLength": 316,
                "pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
