{
  "description": "A Provider installs an OCI compatible Crossplane package, extending\nCrossplane with support for new kinds of managed resources.\n\nRead the Crossplane documentation for\n[more information about Providers](https://docs.crossplane.io/latest/concepts/providers).",
  "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": "ProviderSpec specifies details about a request to install a provider to\nCrossplane.",
      "properties": {
        "commonLabels": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand services.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/",
          "type": "object"
        },
        "ignoreCrossplaneConstraints": {
          "default": false,
          "description": "IgnoreCrossplaneConstraints indicates to the package manager whether to\nhonor Crossplane version constrains specified by the package.\nDefault is false.",
          "type": "boolean"
        },
        "package": {
          "description": "Package is the name of the package that is being requested.\nmust be a fully qualified image name, including the registry,\nrepository, and tag. for example, \"registry.example.com/repo/package:tag\".",
          "type": "string",
          "x-kubernetes-validations": [
            {
              "message": "must be a fully qualified image name, including the registry, repository, and tag or digest. For example, 'registry.example.com/repo/package:tag' or 'registry.example.com/repo/package[:tag]@sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef'.",
              "rule": "self.matches('^[^\\\\.\\\\/]+(\\\\.[^\\\\.\\\\/]+)+(\\\\/[^\\\\/:@]+)+(:[^:@]+(@sha256.+)?|@sha256.+)$')"
            }
          ]
        },
        "packagePullPolicy": {
          "default": "IfNotPresent",
          "description": "PackagePullPolicy defines the pull policy for the package.\nDefault is IfNotPresent.",
          "type": "string"
        },
        "packagePullSecrets": {
          "description": "PackagePullSecrets are named secrets in the same namespace that can be used\nto fetch packages from private registries.",
          "items": {
            "description": "LocalObjectReference contains enough information to let you locate the\nreferenced object inside the same namespace.",
            "properties": {
              "name": {
                "default": "",
                "description": "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names",
                "type": "string"
              }
            },
            "type": "object",
            "x-kubernetes-map-type": "atomic",
            "additionalProperties": false
          },
          "type": "array"
        },
        "revisionActivationPolicy": {
          "default": "Automatic",
          "description": "RevisionActivationPolicy specifies how the package controller should\nupdate from one revision to the next. Options are Automatic or Manual.\nDefault is Automatic.",
          "type": "string"
        },
        "revisionHistoryLimit": {
          "default": 1,
          "description": "RevisionHistoryLimit dictates how the package controller cleans up old\ninactive package revisions.\nDefaults to 1. Can be disabled by explicitly setting to 0.",
          "format": "int64",
          "type": "integer"
        },
        "runtimeConfigRef": {
          "default": {
            "name": "default"
          },
          "description": "RuntimeConfigRef references a RuntimeConfig resource that will be used\nto configure the package runtime.",
          "properties": {
            "apiVersion": {
              "default": "pkg.crossplane.io/v1beta1",
              "description": "API version of the referent.",
              "type": "string"
            },
            "kind": {
              "default": "DeploymentRuntimeConfig",
              "description": "Kind of the referent.",
              "type": "string"
            },
            "name": {
              "description": "Name of the RuntimeConfig.",
              "type": "string"
            }
          },
          "required": [
            "name"
          ],
          "type": "object",
          "additionalProperties": false
        },
        "skipDependencyResolution": {
          "default": false,
          "description": "SkipDependencyResolution indicates to the package manager whether to skip\nresolving dependencies for a package. Setting this value to true may have\nunintended consequences.\nDefault is false.",
          "type": "boolean"
        }
      },
      "required": [
        "package"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "ProviderStatus represents the observed state of a Provider.",
      "properties": {
        "appliedImageConfigRefs": {
          "description": "AppliedImageConfigRefs records any image configs that were applied in\nreconciling this package, and what they were used for.",
          "items": {
            "description": "ImageConfigRef is a reference to an image config that indicates how the\nreferenced image config was used by the package manager.",
            "properties": {
              "name": {
                "description": "Name is the name of the image config.",
                "type": "string"
              },
              "reason": {
                "description": "Reason indicates what the image config was used for.",
                "type": "string"
              }
            },
            "required": [
              "name",
              "reason"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "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"
        },
        "currentIdentifier": {
          "description": "CurrentIdentifier is the most recent package source that was used to\nproduce a revision. The package manager uses this field to determine\nwhether to check for package updates for a given source when\npackagePullPolicy is set to IfNotPresent. Manually removing this field\nwill cause the package manager to check that the current revision is\ncorrect for the given package source.",
          "type": "string"
        },
        "currentRevision": {
          "description": "CurrentRevision is the name of the current package revision. It will\nreflect the most up to date revision, whether it has been activated or\nnot.",
          "type": "string"
        },
        "resolvedPackage": {
          "description": "ResolvedPackage is the name of the package that was used for version\nresolution. It may be different from spec.package if the package path was\nrewritten using an image config.",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
