{
    "additionalProperties": false,
    "definitions": {
        "architecture": {
            "additionalProperties": false,
            "properties": {
                "bin": {
                    "$ref": "#/definitions/stringOrArrayOfStringsOrAnArrayOfArrayOfStrings"
                },
                "checkver": {
                    "$ref": "#/definitions/checkver"
                },
                "env_add_path": {
                    "$ref": "#/definitions/stringOrArrayOfStrings"
                },
                "env_set": {
                    "type": "object"
                },
                "extract_dir": {
                    "$ref": "#/definitions/stringOrArrayOfStrings"
                },
                "hash": {
                    "$ref": "#/definitions/hash"
                },
                "installer": {
                    "$ref": "#/definitions/installer"
                },
                "msi": {
                    "$ref": "#/definitions/stringOrArrayOfStrings",
                    "description": "Deprecated"
                },
                "post_install": {
                    "$ref": "#/definitions/stringOrArrayOfStrings"
                },
                "pre_install": {
                    "$ref": "#/definitions/stringOrArrayOfStrings"
                },
                "shortcuts": {
                    "$ref": "#/definitions/shortcutsArray"
                },
                "uninstaller": {
                    "$ref": "#/definitions/uninstaller"
                },
                "url": {
                    "$ref": "#/definitions/uriOrArrayOfUris"
                }
            },
            "type": "object"
        },
        "arrayOfArrayOfStrings": {
            "items": {
                "items": {
                    "type": "string"
                },
                "minItems": 1,
                "type": "array"
            },
            "minItems": 1,
            "type": "array"
        },
        "autoupdate": {
            "additionalProperties": false,
            "properties": {
                "architecture": {
                    "additionalProperties": false,
                    "properties": {
                        "32bit": {
                            "additionalProperties": false,
                            "properties": {
                                "extract_dir": {
                                    "type": "string"
                                },
                                "hash": {
                                    "$ref": "#/definitions/hashExtraction"
                                },
                                "url": {
                                    "_format": "uri",
                                    "type": "string"
                                }
                            },
                            "type": "object"
                        },
                        "64bit": {
                            "additionalProperties": false,
                            "properties": {
                                "extract_dir": {
                                    "type": "string"
                                },
                                "hash": {
                                    "$ref": "#/definitions/hashExtraction"
                                },
                                "url": {
                                    "_format": "uri",
                                    "type": "string"
                                }
                            },
                            "type": "object"
                        }
                    },
                    "type": "object"
                },
                "extract_dir": {
                    "type": "string"
                },
                "hash": {
                    "$ref": "#/definitions/hashExtraction"
                },
                "note": {
                    "$ref": "#/definitions/stringOrArrayOfStrings"
                },
                "url": {
                    "_format": "uri",
                    "type": "string"
                }
            },
            "type": "object"
        },
        "checkver": {
            "anyOf": [
                {
                    "_format": "regex",
                    "type": "string"
                },
                {
                    "additionalProperties": false,
                    "properties": {
                        "github": {
                            "_format": "uri",
                            "type": "string"
                        },
                        "jp": {
                            "description": "Same as 'jsonpath'",
                            "pattern": "^\\$[.\\[].*$",
                            "type": "string"
                        },
                        "jsonpath": {
                            "pattern": "^\\$[.\\[].*$",
                            "type": "string"
                        },
                        "re": {
                            "_format": "regex",
                            "description": "Same as 'regex'",
                            "type": "string"
                        },
                        "regex": {
                            "_format": "regex",
                            "type": "string"
                        },
                        "replace": {
                            "description": "Allows rearrange the regexp matches",
                            "type": "string"
                        },
                        "reverse": {
                            "description": "Reverse the order of regex matches",
                            "type": "boolean"
                        },
                        "url": {
                            "_format": "uri",
                            "type": "string"
                        },
                        "useragent": {
                            "type": "string"
                        },
                        "xpath": {
                            "type": "string"
                        }
                    },
                    "type": "object"
                }
            ]
        },
        "hash": {
            "anyOf": [
                {
                    "$ref": "#/definitions/hashPattern"
                },
                {
                    "items": {
                        "$ref": "#/definitions/hashPattern"
                    },
                    "minItems": 1,
                    "type": "array",
                    "_uniqueItems": true
                }
            ]
        },
        "hashExtraction": {
            "additionalProperties": false,
            "properties": {
                "find": {
                    "_format": "regex",
                    "description": "Same as 'regex'",
                    "type": "string"
                },
                "jp": {
                    "description": "Same as 'jsonpath'",
                    "pattern": "^\\$[.\\[].*$",
                    "type": "string"
                },
                "jsonpath": {
                    "pattern": "^\\$[.\\[].*$",
                    "type": "string"
                },
                "mode": {
                    "enum": [
                        "download",
                        "extract",
                        "json",
                        "xpath",
                        "rdf",
                        "metalink",
                        "fosshub",
                        "sourceforge"
                    ]
                },
                "regex": {
                    "_format": "regex",
                    "type": "string"
                },
                "type": {
                    "description": "Deprecated, hash type is determined automatically",
                    "enum": [
                        "md5",
                        "sha1",
                        "sha256",
                        "sha512"
                    ]
                },
                "url": {
                    "anyOf": [
                        {
                            "_format": "uri",
                            "type": "string"
                        },
                        {
                            "pattern": "^(\\$url|\\$baseurl).[\\w\\d]+$",
                            "type": "string"
                        },
                        {
                            "pattern": "^.*(\\$url|\\$baseurl).*$",
                            "type": "string"
                        }
                    ]
                },
                "xpath": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "hashPattern": {
            "pattern": "^([a-fA-F0-9]{64}|(sha1|sha256|sha512|md5):([a-fA-F0-9]{32}|[a-fA-F0-9]{40}|[a-fA-F0-9]{64}|[a-fA-F0-9]{128}))$",
            "type": "string"
        },
        "installer": {
            "additionalProperties": false,
            "properties": {
                "_comment": {
                    "description": "Undocumented: only used in scoop-extras/oraclejdk* and scoop-extras/appengine-go",
                    "type": "string"
                },
                "args": {
                    "$ref": "#/definitions/stringOrArrayOfStrings"
                },
                "file": {
                    "type": "string"
                },
                "keep": {
                    "type": "boolean"
                },
                "script": {
                    "$ref": "#/definitions/stringOrArrayOfStrings"
                }
            },
            "type": "object"
        },
        "licenseIdentifiers": {
            "description": "License identifier based on SPDX License List https://spdx.org/licenses/",
            "examples": [
                "Apache-2.0",
                "BSD-3-Clause",
                "Freeware",
                "GPL-2.0-only",
                "GPL-2.0-or-later",
                "GPL-3.0-only",
                "GPL-3.0-or-later",
                "ISC",
                "LGPL-2.0-only",
                "LGPL-2.0-or-later",
                "LGPL-2.1-only",
                "LGPL-2.1-or-later",
                "LGPL-3.0-only",
                "LGPL-3.0-or-later",
                "MIT",
                "MS-PL",
                "Proprietary",
                "Public Domain",
                "Shareware",
                "Unlicense"
            ],
            "type": "string"
        },
        "shortcutsArray": {
            "items": {
                "items": {
                    "type": "string"
                },
                "maxItems": 4,
                "minItems": 2,
                "type": "array"
            },
            "minItems": 1,
            "type": "array"
        },
        "stringOrArrayOfStrings": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "items": {
                        "type": "string"
                    },
                    "minItems": 1,
                    "type": "array"
                }
            ]
        },
        "stringOrArrayOfStringsOrAnArrayOfArrayOfStrings": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "items": {
                        "$ref": "#/definitions/stringOrArrayOfStrings"
                    },
                    "minItems": 1,
                    "type": "array"
                }
            ]
        },
        "uninstaller": {
            "oneOf": [
                {
                    "required": [
                        "file"
                    ]
                },
                {
                    "required": [
                        "script"
                    ]
                }
            ],
            "properties": {
                "args": {
                    "$ref": "#/definitions/stringOrArrayOfStrings"
                },
                "file": {
                    "type": "string"
                },
                "script": {
                    "$ref": "#/definitions/stringOrArrayOfStrings"
                }
            },
            "type": "object"
        },
        "uriOrArrayOfUris": {
            "anyOf": [
                {
                    "_format": "uri",
                    "not": {
                        "pattern": "(\\$)"
                    },
                    "type": "string"
                },
                {
                    "items": {
                        "_format": "uri",
                        "not": {
                            "pattern": "(\\$)"
                        },
                        "type": "string"
                    },
                    "minItems": 1,
                    "type": "array",
                    "_uniqueItems": true
                }
            ]
        }
    },
    "properties": {
        "##": {
            "$ref": "#/definitions/stringOrArrayOfStrings",
            "description": "A comment."
        },
        "_comment": {
            "$ref": "#/definitions/stringOrArrayOfStrings",
            "description": "Deprecated. Use ## instead."
        },
        "architecture": {
            "additionalProperties": false,
            "properties": {
                "32bit": {
                    "$ref": "#/definitions/architecture"
                },
                "64bit": {
                    "$ref": "#/definitions/architecture"
                }
            },
            "type": "object"
        },
        "autoupdate": {
            "$ref": "#/definitions/autoupdate"
        },
        "bin": {
            "$ref": "#/definitions/stringOrArrayOfStringsOrAnArrayOfArrayOfStrings"
        },
        "checkver": {
            "$ref": "#/definitions/checkver"
        },
        "cookie": {
            "description": "Undocumented: Found at https://github.com/se35710/scoop-java/search?l=JSON&q=cookie",
            "type": "object"
        },
        "depends": {
            "$ref": "#/definitions/stringOrArrayOfStrings"
        },
        "description": {
            "type": "string"
        },
        "env_add_path": {
            "$ref": "#/definitions/stringOrArrayOfStrings"
        },
        "env_set": {
            "type": "object"
        },
        "extract_dir": {
            "$ref": "#/definitions/stringOrArrayOfStrings"
        },
        "extract_to": {
            "$ref": "#/definitions/stringOrArrayOfStrings"
        },
        "hash": {
            "$ref": "#/definitions/hash"
        },
        "homepage": {
            "_format": "uri",
            "type": "string"
        },
        "innosetup": {
            "description": "True if the installer InnoSetup based. Found in https://github.com/lukesampson/scoop/search?l=JSON&q=innosetup",
            "type": "boolean"
        },
        "installer": {
            "$ref": "#/definitions/installer"
        },
        "license": {
            "anyOf": [
                {
                    "$ref": "#/definitions/licenseIdentifiers"
                },
                {
                    "additionalProperties": false,
                    "properties": {
                        "identifier": {
                            "$ref": "#/definitions/licenseIdentifiers"
                        },
                        "url": {
                            "_format": "uri",
                            "type": "string"
                        }
                    },
                    "required": [
                        "identifier"
                    ],
                    "type": "object"
                }
            ]
        },
        "msi": {
            "$ref": "#/definitions/stringOrArrayOfStrings",
            "description": "Deprecated"
        },
        "notes": {
            "$ref": "#/definitions/stringOrArrayOfStrings"
        },
        "persist": {
            "$ref": "#/definitions/stringOrArrayOfStringsOrAnArrayOfArrayOfStrings"
        },
        "post_install": {
            "$ref": "#/definitions/stringOrArrayOfStrings"
        },
        "pre_install": {
            "$ref": "#/definitions/stringOrArrayOfStrings"
        },
        "psmodule": {
            "additionalProperties": false,
            "properties": {
                "name": {
                    "type": "string"
                }
            },
            "type": "object"
        },
        "shortcuts": {
            "$ref": "#/definitions/shortcutsArray"
        },
        "suggest": {
            "additionalProperties": false,
            "patternProperties": {
                "^(.*)$": {
                    "$ref": "#/definitions/stringOrArrayOfStrings"
                }
            },
            "type": "object"
        },
        "uninstaller": {
            "$ref": "#/definitions/uninstaller"
        },
        "url": {
            "$ref": "#/definitions/uriOrArrayOfUris"
        },
        "version": {
            "pattern": "^[\\w\\.\\-_]+$",
            "type": "string"
        }
    },
    "required": [
        "version"
    ],
    "title": "scoop app manifest schema",
    "type": "object"
}