{
    "$schema": "http://json-schema.org/draft-04/schema#",
    "id": "http://holi0317.net/schemas",
    "type": "object",
    "properties": {
        "formatVersion": {
            "id": "http://holi0317.net/schemas/formatVersion",
            "type": "integer",
            "enum": [
                1
            ]
        },
        "updateUrl": {
            "id": "http://holi0317.net/schemas/updateUrl",
            "type": "string"
        },
        "uid": {
            "id": "http://holi0317.net/schemas/uid",
            "type": "string"
        },
        "repo": {
            "id": "http://holi0317.net/schemas/repo",
            "type": "string"
        },
        "versions": {
            "id": "http://holi0317.net/schemas/versions",
            "type": "array",
            "items": {
                "id": "http://holi0317.net/schemas/versions/0",
                "type": "object",
                "required": [
                    "urls",
                    "version"
                ],
                "properties": {
                    "urls": {
                        "anyOf": [
                            {
                                "type": "array",
                                "items": {
                                    "id": "http://holi0317.net/schemas/versions/0/urls/0",
                                    "type": "object",
                                    "properties": {
                                        "url": {
                                            "id": "http://holi0317.net/schemas/versions/0/urls/0/url",
                                            "type": "string",
                                            "format": "uri"
                                        },
                                        "downloadType": {
                                            "id": "http://holi0317.net/schemas/versions/0/urls/0/downloadType",
                                            "type": "string",
                                            "enum": [
                                                "direct",
                                                "parallel",
                                                "sequential"
                                            ],
                                            "default": "parallel"
                                        },
                                        "priority": {
                                            "id": "http://holi0317.net/schemas/versions/0/urls/0/priority",
                                            "type": "number",
                                            "default": 0
                                        }
                                    }
                                }
                            },
                            {
                                "type": "object",
                                "properties": {
                                    "url": {
                                        "id": "http://holi0317.net/schemas/versions/0/urls/0/url",
                                        "type": "string",
                                        "format": "uri"
                                    },
                                    "downloadType": {
                                        "id": "http://holi0317.net/schemas/versions/0/urls/0/downloadType",
                                        "type": "string",
                                        "enum": [
                                            "direct",
                                            "parallel",
                                            "sequential",
                                            "encoded"
                                        ],
                                        "default": "parallel"
                                    },
                                    "priority": {
                                        "id": "http://holi0317.net/schemas/versions/0/urls/0/priority",
                                        "type": "number"
                                    }
                                }
                            }
                        ]
                    },
                    "version": {
                        "id": "http://holi0317.net/schemas/versions/0/version",
                        "type": "string"
                    },
                    "name": {
                        "id": "http://holi0317.net/schemas/versions/0/name",
                        "type": "string"
                    },
                    "references": {
                        "id": "http://holi0317.net/schemas/versions/0/references",
                        "type": "array",
                        "items": {
                            "type": "object",
                            "properties": {
                                "depends": {
                                    "id": "http://holi0317.net/schemas/versions/0/references/0/depends",
                                    "type": "string"
                                },
                                "recommends": {
                                    "id": "http://holi0317.net/schemas/versions/0/references/0/recommends",
                                    "type": "string"
                                },
                                "suggests": {
                                    "id": "http://holi0317.net/schemas/versions/0/references/0/suggests",
                                    "type": "string"
                                },
                                "conflicts": {
                                    "id": "http://holi0317.net/schemas/versions/0/references/0/conflicts",
                                    "type": "string"
                                },
                                "provides": {
                                    "id": "http://holi0317.net/schemas/versions/0/references/0/provides",
                                    "type": "string"
                                }
                            }
                        }
                    },
                    "type": {
                        "id": "http://holi0317.net/schemas/versions/0/type",
                        "type": "string",
                        "default": "release"
                    },
                    "installType": {
                        "id": "http://holi0317.net/schemas/versions/0/installType",
                        "type": "string",
                        "enum": [
                            "forgeMod",
                            "forgeCoreMod",
                            "liteloaderMod",
                            "extract",
                            "group"
                        ],
                        "default": "forgeMod"
                    },
                    "sha1": {
                        "id": "http://holi0317.net/schemas/versions/0/sha1",
                        "type": "string"
                    }
                }
            }
        },
        "name": {
            "id": "http://holi0317.net/schemas/name",
            "type": "string"
        },
        "modId": {
            "id": "http://holi0317.net/schemas/modId",
            "type": "string"
        },
        "description": {
            "id": "http://holi0317.net/schemas/description",
            "type": "string"
        },
        "license": {
            "id": "http://holi0317.net/schemas/license",
            "type": "string"
        },
        "urls": {
            "id": "http://holi0317.net/schemas/urls",
            "type": "object",
            "additionalProperties": false,
            "properties": {
                "website": {
                    "id": "http://holi0317.net/schemas/urls/website",
                    "type": "array",
                    "items": {
                        "id": "http://holi0317.net/schemas/urls/website/0",
                        "type": "string",
                        "format": "uri"
                    }
                },
                "wiki": {
                    "id": "http://holi0317.net/schemas/urls/wiki",
                    "type": "array",
                    "items": {
                        "id": "http://holi0317.net/schemas/urls/wiki/0",
                        "type": "string",
                        "format": "uri"
                    }
                },
                "forum": {
                    "id": "http://holi0317.net/schemas/urls/forum",
                    "type": "array",
                    "items": {
                        "id": "http://holi0317.net/schemas/urls/forum/0",
                        "type": "string",
                        "format": "uri"
                    }
                },
                "donation": {
                    "id": "http://holi0317.net/schemas/urls/donation",
                    "type": "array",
                    "items": {
                        "id": "http://holi0317.net/schemas/urls/donation/0",
                        "type": "string",
                        "format": "uri"
                    }
                },
                "issues": {
                    "id": "http://holi0317.net/schemas/urls/issues",
                    "type": "array",
                    "items": {
                        "id": "http://holi0317.net/schemas/urls/issues/0",
                        "type": "string",
                        "format": "uri"
                    }
                },
                "source": {
                    "id": "http://holi0317.net/schemas/urls/source",
                    "type": "array",
                    "items": {
                        "id": "http://holi0317.net/schemas/urls/source/0",
                        "type": "string",
                        "format": "uri"
                    }
                },
                "icon": {
                    "id": "http://holi0317.net/schemas/urls/icon",
                    "type": "array",
                    "items": {
                        "id": "http://holi0317.net/schemas/urls/icon/0",
                        "type": "string",
                        "format": "uri"
                    }
                },
                "logo": {
                    "id": "http://holi0317.net/schemas/urls/logo",
                    "type": "array",
                    "items": {
                        "id": "http://holi0317.net/schemas/urls/logo/0",
                        "type": "string",
                        "format": "uri"
                    }
                }
            }
        },
        "tags": {
            "id": "http://holi0317.net/schemas/tags",
            "type": "array",
            "items": {
                "id": "http://holi0317.net/schemas/tags/0",
                "type": "string"
            }
        },
        "categories": {
            "id": "http://holi0317.net/schemas/categories",
            "type": "array",
            "items": {
                "id": "http://holi0317.net/schemas/categories/0",
                "type": "string"
            }
        },
        "authors": {
            "id": "http://holi0317.net/schemas/authors",
            "type": "object",
            "patternProperties": {
                ".+": {
                    "id": "http://holi0317.net/schemas/authors/",
                    "type": "string"
                }
            }
        },
        "references": {
            "id": "http://holi0317.net/schemas/references",
            "type": "object",
            "properties": {}
        }
    },
    "required": [
        "formatVersion",
        "updateUrl",
        "uid",
        "repo",
        "versions",
        "name"
    ]
}