{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "type": "object",
    "properties": {
        "addons": {
            "description": "Additional charater/sequences to add",
            "type": "array",
            "items": {
                "type": "object",
                "oneOf": [
                    {
                        "description": "A single character/sequence",
                        "symbol": {
                            "type": "string"
                        },
                        "name": {
                            "type": "string"
                        },
                        "keywords": {
                            "type": "array",
                            "items": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "symbol"
                        ]
                    },
                    {
                        "description": "A group of characters/sequences",
                        "symbols": {
                            "type": "array",
                            "items": {
                                "oneOf": [
                                    {
                                        "description": "Padding",
                                        "type": "null"
                                    },
                                    {
                                        "description": "A single symbol",
                                        "type": "string"
                                    },
                                    {
                                        "description": "A group of alternate symbols",
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    {
                                        "description": "A range of characters (inclusive)",
                                        "type": "object",
                                        "properties": {
                                            "from": {
                                                "type": "string"
                                            },
                                            "to": {
                                                "type": "string"
                                            }
                                        },
                                        "required": [
                                            "from",
                                            "to"
                                        ]
                                    }
                                ]
                            }
                        },
                        "required": [
                            "symbols"
                        ]
                    }
                ],
                "properties": {
                    "group": {
                        "type": "string"
                    },
                    "subGroup": {
                        "type": "string"
                    }
                },
                "required": [
                    "group",
                    "subGroup"
                ]
            }
        },
        "iconFallback": {
            "type": "array",
            "items": {
                "properties": {
                    "windows": {
                        "description": "Windows version in which the elements are supported",
                        "type": "string",
                        "default": "10"
                    },
                    "version": {
                        "description": "Use fallback icon if unicode version >= number",
                        "type": "number"
                    },
                    "emojiVersion": {
                        "description": "Use fallback icon if emoji version >= number",
                        "type": "number"
                    },
                    "characters": {
                        "description": "Use fallback icon for a given text range",
                        "type": "array",
                        "items": {
                            "properties": {
                                "from": {
                                    "type": [
                                        "string",
                                        "number"
                                    ]
                                },
                                "to": {
                                    "type": [
                                        "string",
                                        "number"
                                    ]
                                }
                            },
                            "required": [
                                "from",
                                "to"
                            ]
                        }
                    },
                    "sequences": {
                        "description": "Use fallback icon for given sequences or characters",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "required": [
                    "windows"
                ]
            }
        },
        "forceVersion": {
            "description": "Force a version for remote resources. Include trailing zeros.",
            "type": "object",
            "properties": {
                "cldr": {
                    "type": "string"
                },
                "emoji": {
                    "type": "string"
                },
                "ucd": {
                    "type": "string"
                }
            },
            "additionalProperties": false
        },
        "keyboards": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "name": {
                        "type": "string"
                    },
                    "symbol": {
                        "type": "string"
                    },
                    "content": {
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "group": {
                                    "type": "string"
                                },
                                "subGroup": {
                                    "type": "string"
                                }
                            },
                            "required": [
                                "group",
                                "subGroup"
                            ]
                        }
                    }
                },
                "required": [
                    "name",
                    "symbol",
                    "content"
                ]
            }
        },
        "nogroup": {
            "description": "Disable automatic grouping",
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "keymaps": {
            "description": "Additional keymaps",
            "type": "object",
            "additionalProperties": {
                "type": "object",
                "required": [
                    "name",
                    "keys"
                ],
                "additionalProperties": false,
                "properties": {
                    "name": {
                        "description": "Display name",
                        "type": "string"
                    },
                    "keys": {
                        "description": "Use scancode as index",
                        "type": "object",
                        "additionalProperties": false,
                        "patternProperties": {
                            "^[0-9]+$": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        }
    },
    "required": [
        "keyboards"
    ]
}