{ "$schema": "http://json-schema.org/draft-07/schema#", "title": "Balatro Mod Metadata", "type": "object", "properties": { "title": { "type": "string" }, "requires-steamodded": { "type": "boolean" }, "requires-talisman": { "type": "boolean" }, "categories": { "type": "array", "items": { "type": "string", "enum": [ "Content", "Joker", "Quality of Life", "Technical", "Miscellaneous", "Resource Packs", "API" ] }, "minItems": 1, "uniqueItems": true }, "author": { "type": "string" }, "repo": { "type": "string", "format": "uri" }, "downloadURL": { "type": "string", "format": "uri" }, "folderName": { "type": "string", "pattern": "^[^<>:\"/\\|?*]+$" }, "version": { "type": "string" }, "automatic-version-check": { "type": "boolean" }, "fixed-release-tag-updates": { "type": "boolean" }, "last-updated": { "type": "integer", "minimum": 0, "exclusiveMaximum": 18446744073709551616 } }, "required": [ "title", "requires-steamodded", "requires-talisman", "categories", "author", "repo", "downloadURL", "version" ], "allOf": [ { "$comment": "This rule prevents accidental freezing of updates", "not": { "allOf": [ { "$comment": "'automatic-version-check' is true", "properties": { "automatic-version-check": { "const": true } }, "required": [ "automatic-version-check" ] }, { "$comment": "'downloadURL' points to a specific release asset", "properties": { "downloadURL": { "pattern": "^https?://github\\.com/[^/]+/[^/]+/releases/download/[^/]+/.+$" } }, "required": [ "downloadURL" ] }, { "$comment": "'fixed-release-tag-updates' is NOT true (i.e., it's false, or it's completely missing)", "not": { "properties": { "fixed-release-tag-updates": { "const": true } }, "required": [ "fixed-release-tag-updates" ] } } ] }, "errorMessage": "When 'downloadURL' points to a specific GitHub release asset AND 'automatic-version-check' is true, 'fixed-release-tag-updates' must also be true. This prevents accidental update freezing." }, { "$comment": "This rule checks the value of 'fixed-release-tag-updates' and guarantees consistency", "if": { "properties": { "fixed-release-tag-updates": { "const": true } }, "required": [ "fixed-release-tag-updates" ] }, "then": { "$comment": "Conditions when 'fixed-release-tag-updates' is true", "properties": { "automatic-version-check": { "const": true, "errorMessage": "'automatic-version-check' must be true when 'fixed-release-tag-updates' is true." }, "downloadURL": { "pattern": "^https?://github\\.com/[^/]+/[^/]+/releases/download/[^/]+/.+$", "errorMessage": "When 'fixed-release-tag-updates' is true, 'downloadURL' must point to a specific GitHub specific release asset (e.g., '/releases/download/v1.0.0/asset.zip'), NOT a branch head or latest release URL." } }, "required": [ "automatic-version-check" ], "errorMessage": "When 'fixed-release-tag-updates' 'automatic-version-check' must be true, and 'downloadURL' must point to a specific release asset." } } ] }