{
  "description": "A ProviderConfigUsage indicates that a resource is using a ProviderConfig.",
  "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"
    },
    "providerConfigRef": {
      "description": "ProviderConfigReference to the provider config being used.",
      "properties": {
        "name": {
          "description": "Name of the referenced object.",
          "type": "string"
        },
        "policy": {
          "description": "Policies for referencing.",
          "properties": {
            "resolution": {
              "default": "Required",
              "description": "Resolution specifies whether resolution of this reference is required.\nThe default is 'Required', which means the reconcile will fail if the\nreference cannot be resolved. 'Optional' means this reference will be\na no-op if it cannot be resolved.",
              "enum": [
                "Required",
                "Optional"
              ],
              "type": "string"
            },
            "resolve": {
              "description": "Resolve specifies when this reference should be resolved. The default\nis 'IfNotPresent', which will attempt to resolve the reference only when\nthe corresponding field is not present. Use 'Always' to resolve the\nreference on every reconcile.",
              "enum": [
                "Always",
                "IfNotPresent"
              ],
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "name"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "resourceRef": {
      "description": "ResourceReference to the managed resource using the provider config.",
      "properties": {
        "apiVersion": {
          "description": "APIVersion of the referenced object.",
          "type": "string"
        },
        "kind": {
          "description": "Kind of the referenced object.",
          "type": "string"
        },
        "name": {
          "description": "Name of the referenced object.",
          "type": "string"
        },
        "uid": {
          "description": "UID of the referenced object.",
          "type": "string"
        }
      },
      "required": [
        "apiVersion",
        "kind",
        "name"
      ],
      "type": "object",
      "additionalProperties": false
    }
  },
  "required": [
    "providerConfigRef",
    "resourceRef"
  ],
  "type": "object"
}
