{
  "description": "A ProviderConfig configures a Template provider.",
  "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": "A ProviderConfigSpec defines the desired state of a ProviderConfig.",
      "properties": {
        "credentials": {
          "description": "Credentials required to authenticate to this provider.",
          "properties": {
            "connectionSecretRef": {
              "description": "A CredentialsSecretRef is a reference to a MySQL connection secret\nthat contains the credentials that must be used to connect to the\nprovider. +optional",
              "properties": {
                "name": {
                  "description": "Name of the secret.",
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "secretKeyMapping": {
              "description": "SecretKeyMapping allows overriding the default secret key names used\nto read credentials from the connection secret. When not specified,\nstandard Crossplane keys are used: \"endpoint\", \"port\", \"username\", \"password\".",
              "properties": {
                "endpoint": {
                  "description": "Endpoint overrides the key used to read the host/endpoint. Default: \"endpoint\".",
                  "type": "string"
                },
                "password": {
                  "description": "Password overrides the key used to read the password. Default: \"password\".",
                  "type": "string"
                },
                "port": {
                  "description": "Port overrides the key used to read the port. Default: \"port\".",
                  "type": "string"
                },
                "username": {
                  "description": "Username overrides the key used to read the username. Default: \"username\".",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "source": {
              "description": "Source of the provider credentials.",
              "enum": [
                "MySQLConnectionSecret"
              ],
              "type": "string"
            }
          },
          "required": [
            "source"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "tls": {
          "description": "tls=true enables TLS / SSL encrypted connection to the server.\nUse skip-verify if you want to use a self-signed or invalid certificate (server side)\nor use preferred to use TLS only when advertised by the server. This is similar\nto skip-verify, but additionally allows a fallback to a connection which is\nnot encrypted. Neither skip-verify nor preferred add any reliable security.\nAlternatively, set tls=custom and provide a custom TLS configuration via the tlsConfig field.",
          "enum": [
            "true",
            "skip-verify",
            "preferred",
            "custom"
          ],
          "type": "string"
        },
        "tlsConfig": {
          "description": "Optional TLS configuration for sql driver. Setting this field also requires the tls field to be set to custom.",
          "properties": {
            "caCert": {
              "description": "TLSSecret defines a reference to a K8s secret and its specific internal key that contains the TLS cert/keys in PEM format.",
              "properties": {
                "secretRef": {
                  "description": "A SecretKeySelector is a reference to a secret key in an arbitrary namespace.",
                  "properties": {
                    "key": {
                      "description": "The key to select.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name of the secret.",
                      "type": "string"
                    },
                    "namespace": {
                      "description": "Namespace of the secret.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "name",
                    "namespace"
                  ],
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "clientCert": {
              "description": "TLSSecret defines a reference to a K8s secret and its specific internal key that contains the TLS cert/keys in PEM format.",
              "properties": {
                "secretRef": {
                  "description": "A SecretKeySelector is a reference to a secret key in an arbitrary namespace.",
                  "properties": {
                    "key": {
                      "description": "The key to select.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name of the secret.",
                      "type": "string"
                    },
                    "namespace": {
                      "description": "Namespace of the secret.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "name",
                    "namespace"
                  ],
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "clientKey": {
              "description": "TLSSecret defines a reference to a K8s secret and its specific internal key that contains the TLS cert/keys in PEM format.",
              "properties": {
                "secretRef": {
                  "description": "A SecretKeySelector is a reference to a secret key in an arbitrary namespace.",
                  "properties": {
                    "key": {
                      "description": "The key to select.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Name of the secret.",
                      "type": "string"
                    },
                    "namespace": {
                      "description": "Namespace of the secret.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "key",
                    "name",
                    "namespace"
                  ],
                  "type": "object",
                  "additionalProperties": false
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "insecureSkipVerify": {
              "type": "boolean"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "credentials"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "A ProviderConfigStatus reflects the observed state of a ProviderConfig.",
      "properties": {
        "conditions": {
          "description": "Conditions of the resource.",
          "items": {
            "description": "A Condition that may apply to a resource.",
            "properties": {
              "lastTransitionTime": {
                "description": "LastTransitionTime is the last time this condition transitioned from one\nstatus to another.",
                "format": "date-time",
                "type": "string"
              },
              "message": {
                "description": "A Message containing details about this condition's last transition from\none status to another, if any.",
                "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\nwith respect to the current state of the instance.",
                "format": "int64",
                "type": "integer"
              },
              "reason": {
                "description": "A Reason for this condition's last transition from one status to another.",
                "type": "string"
              },
              "status": {
                "description": "Status of this condition; is it currently True, False, or Unknown?",
                "type": "string"
              },
              "type": {
                "description": "Type of this condition. At most one of each condition type may apply to\na resource at any point in time.",
                "type": "string"
              }
            },
            "required": [
              "lastTransitionTime",
              "reason",
              "status",
              "type"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array",
          "x-kubernetes-list-map-keys": [
            "type"
          ],
          "x-kubernetes-list-type": "map"
        },
        "users": {
          "description": "Users of this provider configuration.",
          "format": "int64",
          "type": "integer"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}
