{
    "additionalProperties": false,
    "definitions": {
        "i18n": {
            "additionalProperties": false,
            "properties": {
                "locales": {
                    "additionalProperties": false,
                    "patternProperties": {
                        "^[a-zA-Z]{2,3}(-[a-zA-Z]{4})?(-([a-zA-Z]{2}|[0-9]{3}))?(-[a-zA-Z]{5,8})?(-x(-[a-zA-Z0-9]{1,8})+)?$": {
                            "oneOf": [
                                {
                                    "description": "Localization file to use for i18n",
                                    "type": "string"
                                },
                                {
                                    "additionalProperties": false,
                                    "description": "Localization options to use for the locale",
                                    "properties": {
                                        "baseHref": {
                                            "description": "HTML base HREF to use for the locale (defaults to the locale code)",
                                            "type": "string"
                                        },
                                        "translation": {
                                            "description": "Localization file to use for i18n",
                                            "type": "string"
                                        }
                                    },
                                    "type": "object"
                                }
                            ]
                        }
                    },
                    "type": "object"
                },
                "sourceLocale": {
                    "oneOf": [
                        {
                            "default": "en-US",
                            "description": "Specifies the source locale of the application.",
                            "pattern": "^[a-zA-Z]{2,3}(-[a-zA-Z]{4})?(-([a-zA-Z]{2}|[0-9]{3}))?(-[a-zA-Z]{5,8})?(-x(-[a-zA-Z0-9]{1,8})+)?$",
                            "type": "string"
                        },
                        {
                            "additionalProperties": false,
                            "description": "Localization options to use for the source locale",
                            "properties": {
                                "baseHref": {
                                    "description": "HTML base HREF to use for the locale (defaults to the locale code)",
                                    "type": "string"
                                },
                                "code": {
                                    "description": "Specifies the locale code of the source locale",
                                    "pattern": "^[a-zA-Z]{2,3}(-[a-zA-Z]{4})?(-([a-zA-Z]{2}|[0-9]{3}))?(-[a-zA-Z]{5,8})?(-x(-[a-zA-Z0-9]{1,8})+)?$",
                                    "type": "string"
                                }
                            },
                            "type": "object"
                        }
                    ]
                }
            },
            "type": "object"
        },
        "project": {
            "additionalProperties": false,
            "description": "Project options.",
            "if": {
                "properties": {
                    "projectType": {
                        "const": "library"
                    }
                }
            },
            "properties": {
                "architect": {
                    "$ref": "#/definitions/tool",
                    "default": {}
                },
                "cli": {
                    "$ref": "#/definitions/tool",
                    "default": {}
                },
                "i18n": {
                    "$ref": "#/definitions/i18n",
                    "default": {}
                },
                "prefix": {
                    "description": "The prefix to apply to generated selectors.",
                    "type": "string"
                },
                "projectType": {
                    "description": "Project type.",
                    "enum": [
                        "application",
                        "library"
                    ],
                    "type": "string"
                },
                "root": {
                    "description": "Root of the project sourcefiles.",
                    "type": "string"
                },
                "schematics": {
                    "$ref": "#/definitions/tool",
                    "default": {}
                },
                "sourceRoot": {
                    "description": "The root of the source files, assets and index.html file structure.",
                    "type": "string"
                },
                "targets": {
                    "$ref": "#/definitions/tool",
                    "default": {}
                }
            },
            "required": [
                "root",
                "projectType"
            ],
            "then": {
                "not": {
                    "required": [
                        "i18n"
                    ]
                }
            },
            "type": "object"
        },
        "tool": {
            "additionalProperties": true,
            "description": "Tool options.",
            "properties": {
                "$schema": {
                    "description": "Link to schema.",
                    "type": "string"
                }
            },
            "type": "object"
        }
    },
    "properties": {
        "$schema": {
            "description": "Link to schema.",
            "type": "string"
        },
        "architect": {
            "$ref": "#/definitions/tool",
            "default": {}
        },
        "cli": {
            "$ref": "#/definitions/tool",
            "default": {}
        },
        "defaultProject": {
            "description": "The default project.",
            "type": "string"
        },
        "newProjectRoot": {
            "default": "./",
            "description": "New project root.",
            "type": "string"
        },
        "projects": {
            "additionalProperties": {
                "$ref": "#/definitions/project"
            },
            "default": {},
            "description": "A map of project names to project options.",
            "type": "object"
        },
        "schematics": {
            "$ref": "#/definitions/tool",
            "default": {}
        },
        "targets": {
            "$ref": "#/definitions/tool",
            "default": {}
        },
        "version": {
            "description": "Workspace Schema version.",
            "type": "number"
        }
    },
    "required": [
        "version"
    ],
    "title": "Angular Devkit Workspace Schema for validating workspace JSON.",
    "type": "object"
}