{
    "version": "0.2",
    "type": "object",
    "$schema": "http://json-schema.org/draft-07/schema#",
    "required": [
        "fixed",
        "ui"
    ],
    "properties": {
        "name": {
            "type": "string",
            "description": "Unique display name (to be used instead of plugin ID)",
            "examples": [
                "Swing"
            ]
        },
        "fixed": {
            "type": "boolean",
            "description": "true if fixed set (e.g. UI Library)"
        },
        "ui": {
            "type": "array",
            "minItems": 1,
            "items": {
                "type": "object",
                "properties": {
                    "key": {
                        "type": "string",
                        "description": "The customization key",
                        "examples": [
                            "PasswordField.inactiveBackground"
                        ]
                    },
                    "description": {
                        "type": "string",
                        "description": "Description text for this key"
                    },
                    "source": {
                        "type": "string",
                        "description": "FQN of the underlying component (if applicable)",
                        "examples": [
                            "javax.swing.JPasswordField"
                        ]
                    },
                    "deprecated": {
                        "type": "boolean",
                        "description": "Whether this key is deprecated. Note replacement (if any) in description.",
                        "default": false
                    },
                    "since": {
                        "type": "string",
                        "description": "Version in which key was introduced.",
                        "examples": [
                            "2019.2"
                        ]
                    }
                },
                "required": [
                    "key"
                ]
            }
        }
    }
}