Files
libretro/schemas/pack-manifest.schema.json
T
Abdessamad Derraz 25c356669b fix: record each platform's own list version
install/<platform>.json wrote the constant "1.0" as the version of the
list it was built from. The manifest now carries the version the platform
YAML records, and generate_pack refuses a YAML without one.

inherits: no longer passes a parent's version to a child: Lakka was
published as RetroArch v1.22.2 in its manifest, pack name and site page.
lakka.yml records v6.1, the Lakka-LibreELEC tag its target list is read
at. The MiSTer scraper refuses a BiosDB without a timestamp instead of
writing an empty version.

A pack's manifest.json records list_version, so an install from the pack
alone knows it too. Manifests regenerated twice and compared: only
version and generated changed.
2026-10-27 19:10:39 +01:00

60 lines
2.6 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://abdess.github.io/retrobios/api/v1/schemas/pack-manifest.schema.json",
"title": "RetroBIOS pack integrity manifest",
"type": "object",
"additionalProperties": false,
"required": ["schema_version", "version", "generator", "generated", "files", "summary", "errors"],
"properties": {
"schema_version": { "const": 1 },
"version": { "const": 1 },
"generator": { "const": "retrobios generate_pack.py" },
"generated": { "type": "string", "format": "date-time" },
"files": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"required": ["path", "sha1", "md5", "size", "status", "name"],
"properties": {
"path": { "type": "string", "minLength": 1 },
"sha1": { "type": "string", "pattern": "^[a-f0-9]{40}$" },
"md5": { "type": "string", "pattern": "^[a-f0-9]{32}$" },
"size": { "type": "integer", "minimum": 0 },
"status": { "enum": ["verified", "verified_md5", "verified_rebuild", "verified_data", "verified_members", "untracked"] },
"name": { "type": "string" },
"systems": { "type": "array", "items": { "type": "string", "minLength": 1 } }
}
}
},
"summary": {
"type": "object",
"additionalProperties": false,
"required": ["total_files", "verified", "untracked", "errors"],
"properties": {
"total_files": { "type": "integer", "minimum": 0 },
"verified": { "type": "integer", "minimum": 0 },
"untracked": { "type": "integer", "minimum": 0 },
"errors": { "type": "integer", "minimum": 0 }
}
},
"errors": { "type": "array", "items": { "type": "string" } },
"system_titles": { "type": "object", "additionalProperties": { "type": "string" } },
"system_names": {
"type": "object",
"additionalProperties": { "type": "array", "items": { "type": "string" } }
},
"list_version": {
"description": "Version of the platform's list the pack was built from, the version of its install manifest. The installer compares it with the version the machine runs when it installs from the pack alone. The version key above numbers this file's format.",
"type": "string",
"minLength": 1
},
"list_records": {
"description": "What the platform's install list narrows by: the installer names that list as the remedy for --core or --region given with the pack alone only when it records them.",
"type": "array",
"uniqueItems": true,
"items": { "enum": ["systems", "cores", "regions"] }
}
}
}