{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/continuous-delivery-foundation/json-schema/continuous-delivery-foundation-spinnaker-plugin-descriptor-schema.json",
  "title": "SpinnakerPluginDescriptor",
  "x-generated": "2026-11-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/continuous-delivery-foundation-plugins-installed-controller-api-openapi.yml#/components/schemas/SpinnakerPluginDescriptor",
  "properties": {
    "dependencies": {
      "items": {
        "$ref": "#/$defs/PluginDependency"
      },
      "type": "array"
    },
    "license": {
      "type": "string"
    },
    "pluginClass": {
      "type": "string"
    },
    "pluginDescription": {
      "type": "string"
    },
    "pluginId": {
      "type": "string"
    },
    "pluginVersion": {
      "$ref": "#/$defs/DefaultPluginDescriptor",
      "writeOnly": true
    },
    "provider": {
      "type": "string"
    },
    "requires": {
      "type": "string"
    },
    "unsafe": {
      "type": "boolean"
    },
    "version": {
      "type": "string"
    }
  },
  "required": [
    "unsafe"
  ],
  "type": "object",
  "$defs": {
    "DefaultPluginDescriptor": {
      "properties": {
        "dependencies": {
          "items": {
            "$ref": "#/$defs/PluginDependency"
          },
          "type": "array"
        },
        "license": {
          "type": "string"
        },
        "pluginClass": {
          "type": "string"
        },
        "pluginDescription": {
          "type": "string"
        },
        "pluginId": {
          "type": "string"
        },
        "pluginVersion": {
          "type": "object",
          "writeOnly": true
        },
        "provider": {
          "type": "string"
        },
        "requires": {
          "type": "string"
        },
        "version": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "PluginDependency": {
      "properties": {
        "optional": {
          "type": "boolean"
        },
        "pluginId": {
          "type": "string"
        },
        "pluginVersionSupport": {
          "type": "string"
        }
      },
      "type": "object"
    }
  }
}