{
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "type": "object",
    "additionalProperties": false,
    "required": [
        "version",
        "compilationOptions",
        "dependencies",
        "code",
        "frameworks"
    ],
    "properties": {
        "version": { "type": "string" },
        "compilationOptions": {
            "type": "object",
            "additionalProperties": false,
            "required": ["warningsAsErrors"],
            "properties": {
                "warningsAsErrors": {
                    "type": "boolean"
                }
            }
        },
        "dependencies": {
            "type": "object",
            "additionalProperties": false,
            "required": [
                "Microsoft.Bcl.Immutable",
                "Microsoft.AspNet.ConfigurationModel",
                "Microsoft.AspNet.DependencyInjection",
                "Microsoft.AspNet.Logging",
                "System.Data.Common"
            ],
            "properties": {
                "Microsoft.Bcl.Immutable": { "type": "string" },
                "Microsoft.AspNet.ConfigurationModel": { "type": "string" },
                "Microsoft.AspNet.DependencyInjection": { "type": "string" },
                "Microsoft.AspNet.Logging": { "type": "string" },
                "System.Data.Common": { "type": "string" }
            }
        },
        "code": {
            "type": "string"
        },
        "frameworks": {
            "type": "object",
            "additionalProperties": false,
            "required": ["net45", "k10"],
            "properties": {
                "net45": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": ["dependencies"],
                    "properties": {
                        "dependencies": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": ["System.Runtime", "System.Collections"],
                            "properties": {
                                "System.Runtime": { "type": "string" },
                                "System.Collections": { "type": "string" }
                            }
                        }
                    }
                },
                "k10": {
                    "type": "object",
                    "additionalProperties": false,
                    "required": ["dependencies"],
                    "properties": {
                        "dependencies": {
                            "type": "object",
                            "additionalProperties": false,
                            "required": [
                                "System.Collections",
                                "System.Collections.Concurrent",
                                "System.ComponentModel",
                                "System.Console",
                                "System.Diagnostics.Contracts",
                                "System.Diagnostics.Debug",
                                "System.Globalization",
                                "System.Linq",
                                "System.Linq.Expressions",
                                "System.Linq.Queryable",
                                "System.Reflection",
                                "System.Reflection.Extensions",
                                "System.Resources.ResourceManager",
                                "System.Runtime",
                                "System.Runtime.Extensions",
                                "System.Threading",
                                "System.Threading.Tasks"
                            ],
                            "properties": {
                                "System.Collections": { "type": "string" },
                                "System.Collections.Concurrent": { "type": "string" },
                                "System.ComponentModel": { "type": "string" },
                                "System.Console": { "type": "string" },
                                "System.Diagnostics.Contracts": { "type": "string" },
                                "System.Diagnostics.Debug": { "type": "string" },
                                "System.Globalization": { "type": "string" },
                                "System.Linq": { "type": "string" },
                                "System.Linq.Expressions": { "type": "string" },
                                "System.Linq.Queryable": { "type": "string" },
                                "System.Reflection": { "type": "string" },
                                "System.Reflection.Extensions": { "type": "string" },
                                "System.Resources.ResourceManager": { "type": "string" },
                                "System.Runtime": { "type": "string" },
                                "System.Runtime.Extensions": { "type": "string" },
                                "System.Threading": { "type": "string" },
                                "System.Threading.Tasks": { "type": "string" }
                            }
                        }
                    }
                }
            }
        }
    }
}
