{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "required": [
        "name",
        "description"
    ],
    "properties": {
        "name": {
            "type": "string",
            "description": "The name of the widget or activity."
        },
        "description": {
            "type": "string",
            "description": "A short description of the purpose of this widget."
        },
        "integration": {
            "type": "object",
            "description": "How this widget should be loaded by the LaxarJS runtime.",
            "properties": {
                "type": {
                    "type": "string",
                    "description": "Type of the artifact, e.g. widget or activity.",
                    "default": "widget"
                },
                "technology": {
                    "type": "string",
                    "description": "Underlying technology of the widget, which will be used to load the controller and template.",
                    "default": "angular"
                }
            },
            "default": {
                "type": "widget",
                "technology": "angular"
            },
            "additionalProperties": false
        },
        "controls": {
            "type": "array",
            "description": "Each control as a path that can be resolved using the module system",
            "default": [],
            "items": {
                "type": "string"
            }
        },
        "features": {
            "type": "object",
            "description": "A JSON schema for the widget feature configuration.",
            "default": {}
        },
        "compatibility": {
            "type": "array",
            "description": "Compatibility flags set for this widget",
            "default": [],
            "items": {
                "type": "string",
                "enum": [
                    "json-patch"
                ]
            }
        },
        "templateSource": {
            "type": "string",
            "description": "The location of the widget's HTML template."
        },
        "styleSource": {
            "type": "string",
            "description": "The location of the widget's stylesheet."
        },
        "assets": {
            "type": "array",
            "description": "A list of files to make available as raw content via the artifact provider API.",
            "items": {
                "type": "string"
            }
        },
        "assetUrls": {
            "type": "array",
            "description": "A list of files to make available as URLs via the artifact provider API.",
            "items": {
                "type": "string"
            }
        },
        "assetsForTheme": {
            "type": "array",
            "description": "A list of themed files to make available as raw content via the artifact provider API.",
            "items": {
                "type": "string"
            }
        },
        "assetUrlsForTheme": {
            "type": "array",
            "description": "A list of themed files to make available as URLs via the artifact provider API.",
            "items": {
                "type": "string"
            }
        }
    },
    "additionalProperties": false
}