{ "$id": "http://scoop.sh/draft/schema#", "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "definitions": { "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" }, "jsonPathPattern": { "pattern": "^\\$[.\\[].*$", "type": "string" }, "hash": { "anyOf": [ { "$ref": "#/definitions/hashPattern" }, { "items": { "$ref": "#/definitions/hashPattern" }, "minItems": 1, "type": "array", "uniqueItems": true } ] }, "hashExtraction": { "additionalProperties": false, "properties": { "find": { "format": "regex", "type": "string", "description": "Same as 'regex'" }, "regex": { "format": "regex", "type": "string" }, "jp": { "$ref": "#/definitions/jsonPathPattern", "description": "Same as 'jsonpath'" }, "jsonpath": { "$ref": "#/definitions/jsonPathPattern" }, "xpath": { "type": "string" }, "mode": { "enum": [ "download", "extract", "json", "xpath", "rdf", "metalink", "fosshub", "sourceforge" ] }, "type": { "enum": [ "md5", "sha1", "sha256", "sha512" ], "description": "Deprecated, hash type is determined automatically" }, "url": { "anyOf": [ { "format": "uri", "type": "string" }, { "pattern": "^(\\$url|\\$baseurl).[\\w\\d]+$", "type": "string" }, { "pattern": "^.*(\\$url|\\$baseurl).*$", "type": "string" } ] } }, "type": "object" }, "hashExtractionOrArrayOfHashExtractions": { "anyOf": [ { "$ref": "#/definitions/hashExtraction" }, { "items": { "$ref": "#/definitions/hashExtraction" }, "minItems": 1, "type": "array", "uniqueItems": false } ] }, "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" }, "post_install": { "$ref": "#/definitions/stringOrArrayOfStrings" }, "post_uninstall": { "$ref": "#/definitions/stringOrArrayOfStrings" }, "pre_install": { "$ref": "#/definitions/stringOrArrayOfStrings" }, "pre_uninstall": { "$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" }, "shortcutsArray": { "items": { "items": { "type": "string" }, "minItems": 2, "maxItems": 4, "type": "array" }, "minItems": 1, "type": "array" }, "autoupdateArch": { "type": "object", "additionalProperties": false, "properties": { "bin": { "$ref": "#/definitions/stringOrArrayOfStringsOrAnArrayOfArrayOfStrings" }, "env_add_path": { "$ref": "#/definitions/stringOrArrayOfStrings" }, "env_set": { "type": "object" }, "extract_dir": { "$ref": "#/definitions/stringOrArrayOfStrings" }, "hash": { "$ref": "#/definitions/hashExtractionOrArrayOfHashExtractions" }, "installer": { "type": "object", "additionalProperties": false, "properties": { "file": { "type": "string" } } }, "shortcuts": { "$ref": "#/definitions/shortcutsArray" }, "url": { "$ref": "#/definitions/autoupdateUriOrArrayOfAutoupdateUris" } } }, "autoupdate": { "type": "object", "additionalProperties": false, "properties": { "architecture": { "type": "object", "additionalProperties": false, "properties": { "32bit": { "$ref": "#/definitions/autoupdateArch" }, "64bit": { "$ref": "#/definitions/autoupdateArch" }, "arm64": { "$ref": "#/definitions/autoupdateArch" } } }, "bin": { "$ref": "#/definitions/stringOrArrayOfStringsOrAnArrayOfArrayOfStrings" }, "env_add_path": { "$ref": "#/definitions/stringOrArrayOfStrings" }, "env_set": { "type": "object" }, "extract_dir": { "$ref": "#/definitions/stringOrArrayOfStrings" }, "hash": { "$ref": "#/definitions/hashExtractionOrArrayOfHashExtractions" }, "installer": { "type": "object", "additionalProperties": false, "properties": { "file": { "type": "string" } } }, "license": { "$ref": "#/definitions/license" }, "notes": { "$ref": "#/definitions/stringOrArrayOfStrings" }, "persist": { "$ref": "#/definitions/stringOrArrayOfStringsOrAnArrayOfArrayOfStrings" }, "psmodule": { "type": "object", "additionalProperties": false, "properties": { "name": { "type": "string" } } }, "shortcuts": { "$ref": "#/definitions/shortcutsArray" }, "url": { "$ref": "#/definitions/autoupdateUriOrArrayOfAutoupdateUris" } } }, "checkver": { "anyOf": [ { "format": "regex", "type": "string" }, { "additionalProperties": false, "properties": { "github": { "format": "uri", "type": "string" }, "re": { "format": "regex", "type": "string", "description": "Same as 'regex'" }, "regex": { "format": "regex", "type": "string" }, "url": { "format": "uri", "type": "string" }, "jp": { "$ref": "#/definitions/jsonPathPattern", "description": "Same as 'jsonpath'" }, "jsonpath": { "$ref": "#/definitions/jsonPathPattern" }, "xpath": { "type": "string" }, "reverse": { "description": "Reverse the order of regex matches", "type": "boolean" }, "replace": { "description": "Allows rearrange the regexp matches", "type": "string" }, "useragent": { "type": "string" }, "script": { "$ref": "#/definitions/stringOrArrayOfStrings", "description": "Custom PowerShell script to retrieve application version using more complex approach." }, "sourceforge": { "anyOf": [ { "type": "string" }, { "additionalProperties": false, "properties": { "project": { "type": "string" }, "path": { "type": "string" } }, "type": "object" } ] } }, "type": "object" } ] }, "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" }, "script": { "$ref": "#/definitions/stringOrArrayOfStrings" }, "keep": { "type": "boolean" } }, "type": "object" }, "stringOrArrayOfStrings": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "minItems": 1, "type": "array" } ] }, "stringOrArrayOfStringsOrAnArrayOfArrayOfStrings": { "anyOf": [ { "type": "string" }, { "items": { "$ref": "#/definitions/stringOrArrayOfStrings" }, "minItems": 1, "type": "array" } ] }, "uninstaller": { "properties": { "args": { "$ref": "#/definitions/stringOrArrayOfStrings" }, "file": { "type": "string" }, "script": { "$ref": "#/definitions/stringOrArrayOfStrings" } }, "oneOf": [ { "required": [ "file" ] }, { "required": [ "script" ] } ], "type": "object" }, "uriOrArrayOfUris": { "anyOf": [ { "format": "uri", "not": { "pattern": "(\\$)" }, "type": "string" }, { "items": { "format": "uri", "not": { "pattern": "(\\$)" }, "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true } ] }, "autoupdateUriOrArrayOfAutoupdateUris": { "anyOf": [ { "format": "uri", "type": "string" }, { "items": { "format": "uri", "type": "string" }, "minItems": 1, "type": "array", "uniqueItems": true } ] }, "licenseIdentifiers": { "type": "string", "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" ] }, "license": { "anyOf": [ { "$ref": "#/definitions/licenseIdentifiers" }, { "additionalProperties": false, "properties": { "url": { "format": "uri", "type": "string" }, "identifier": { "$ref": "#/definitions/licenseIdentifiers" } }, "required": [ "identifier" ], "type": "object" } ] } }, "properties": { "$schema": { "type": "string", "format": "uri" }, "_comment": { "description": "Deprecated. Use ## instead.", "$ref": "#/definitions/stringOrArrayOfStrings" }, "##": { "description": "A comment.", "$ref": "#/definitions/stringOrArrayOfStrings" }, "architecture": { "additionalProperties": false, "properties": { "32bit": { "$ref": "#/definitions/architecture" }, "64bit": { "$ref": "#/definitions/architecture" }, "arm64": { "$ref": "#/definitions/architecture" } }, "type": "object" }, "autoupdate": { "$ref": "#/definitions/autoupdate" }, "bin": { "$ref": "#/definitions/stringOrArrayOfStringsOrAnArrayOfArrayOfStrings" }, "persist": { "$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/ScoopInstaller/Main/search?l=JSON&q=innosetup", "type": "boolean" }, "installer": { "$ref": "#/definitions/installer" }, "license": { "$ref": "#/definitions/license" }, "notes": { "$ref": "#/definitions/stringOrArrayOfStrings" }, "post_install": { "$ref": "#/definitions/stringOrArrayOfStrings" }, "post_uninstall": { "$ref": "#/definitions/stringOrArrayOfStrings" }, "pre_install": { "$ref": "#/definitions/stringOrArrayOfStrings" }, "pre_uninstall": { "$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" } }, "if": { "properties": { "architecture": { "properties": { "64bit": { "properties": { "url": false } }, "32bit": { "properties": { "url": false } }, "arm64": { "properties": { "url": false } } } } } }, "then": { "required": [ "url" ] }, "required": [ "version", "homepage", "license" ], "title": "scoop app manifest schema", "type": "object" }