{
    "$schema": "http://json-schema.org/draft-06/schema#",
    "definitions": {
        "AppMenuItem": {
            "type": "object",
            "properties": {
                "icons": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/IconInfo"
                    }
                },
                "label": {
                    "type": "string",
                    "example": "ANNA+"
                },
                "links": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/LinkItem"
                    }
                },
                "name": {
                    "type": "string",
                    "example": "anna"
                }
            },
            "required": [
                "name",
                "label",
                "links"
            ]
        },
        "IconInfo": {
            "properties": {
                "icon": {
                    "type": "string",
                    "example": "bar-chart"
                },
                "type": {
                    "type": "string",
                    "example": "material"
                }
            }
        },
        "LinkItem": {
            "properties": {
                "href": {
                    "type": "string",
                    "format": "uri",
                    "example": "http://localhost:8080/ramwa/apps"
                },
                "rel": {
                    "type": "string",
                    "enum": [
                        "apps",
                        "menu",
                        "navtree",
                        "navtags",
                        "search",
                        "notification"
                    ]
                }
            }
        },
        "MenuItem": {
            "properties": {
                "icon": {
                    "type": "string",
                    "example": "dashboard"
                },
                "items": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/MenuItem"
                    }
                },
                "label": {
                    "type": "string",
                    "example": "Dashboard"
                },
                "routerLink": {
                    "type": "string",
                    "example": "/dashboard"
                },
                "url": {
                    "type": "string",
                    "example": "http://external-link.to/navigate/when/item/is?clicked"
                }
            },
            "required": [
                "label",
                "icon"
            ]
        },
        "NavTag": {
            "type": "object",
            "properties": {
                "icons": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/IconInfo"
                    }
                },
                "label": {
                    "type": "string"
                },
                "labelPlural": {
                    "type": "string"
                },
                "links": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/LinkItem"
                    }
                },
                "tag": {
                    "type": "string",
                    "examples": [
                        "domain",
                        "intersection",
                        "pt-line"
                    ]
                }
            },
            "required": [
                "tag",
                "label",
                "labelPlural"
            ]
        },
        "NavTreeNode": {
            "type": "object",
            "properties": {
                "children": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/NavTreeNode"
                    }
                },
                "id": {
                    "type": "string",
                    "example": "1002"
                },
                "label": {
                    "type": "string",
                    "example": "Berlin"
                },
                "tags": {
                    "example": "domain",
                    "items": {
                        "type": "string"
                    },
                    "type": "array"
                }
            },
            "required": [
                "id",
                "label"
            ]
        }
    },
    "properties": {
        "AppMenuItem": {
            "$ref": "#/definitions/AppMenuItem"
        },
        "IconInfo": {
            "$ref": "#/definitions/IconInfo"
        },
        "LinkItem": {
            "$ref": "#/definitions/LinkItem"
        },
        "MenuItem": {
            "$ref": "#/definitions/MenuItem"
        },
        "NavTag": {
            "$ref": "#/definitions/NavTag"
        },
        "NavTreeNode": {
            "$ref": "#/definitions/NavTreeNode"
        }
    },
    "required": [
        "AppMenuItem",
        "IconInfo",
        "LinkItem",
        "MenuItem",
        "NavTag",
        "NavTreeNode"
    ]
}