mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-11-11 12:33:53 -06:00
82 lines
2.9 KiB
JSON
82 lines
2.9 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://abdess.github.io/retrobios/api/v1/schemas/game-catalog.schema.json",
|
|
"title": "RetroBIOS game catalog of one system",
|
|
"description": "Games of one No-Intro or Redump DAT, keyed by what identifies a game file (games/catalogs/<source>/<system>.json, written by python -m scripts.scraper.game_dat_importer). A row's region is the market the DAT names, never the value a core computes.",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["source", "system", "dat", "version", "fetched_from", "fetched", "archive", "licence", "fields", "regions", "games"],
|
|
"properties": {
|
|
"source": { "enum": ["no-intro", "redump"] },
|
|
"system": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" },
|
|
"dat": { "type": "string", "minLength": 1 },
|
|
"version": { "type": "string" },
|
|
"fetched_from": { "type": "string" },
|
|
"fetched": { "type": "string" },
|
|
"archive": {
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"member": { "type": "string" },
|
|
"file": { "type": "string" },
|
|
"dat_date": { "type": "string" },
|
|
"asset_updated_at": { "type": "string" }
|
|
}
|
|
},
|
|
"licence": {
|
|
"type": "object",
|
|
"required": ["terms_url", "read", "quote"],
|
|
"properties": {
|
|
"terms_url": { "type": "string", "pattern": "^https://" },
|
|
"terms_title": { "type": "string" },
|
|
"terms_updated": { "type": "string" },
|
|
"read": { "type": "string" },
|
|
"quote": { "type": "string", "minLength": 1 },
|
|
"mirror": {
|
|
"type": "object",
|
|
"required": ["repo", "licence", "scope"],
|
|
"properties": {
|
|
"repo": { "type": "string" },
|
|
"licence": { "type": "string" },
|
|
"scope": { "type": "string" }
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"fields": {
|
|
"oneOf": [
|
|
{ "const": ["crc32", "size", "sha1", "region", "title"] },
|
|
{ "const": ["crc32", "size", "sha1", "region", "title", "serials"] }
|
|
]
|
|
},
|
|
"regions": {
|
|
"type": "array",
|
|
"description": "Region slug lists (scripts/region.py vocabulary) a row's region index points into.",
|
|
"items": {
|
|
"type": "array",
|
|
"minItems": 1,
|
|
"items": { "type": "string", "pattern": "^[a-z][a-z-]*$" },
|
|
"uniqueItems": true
|
|
}
|
|
},
|
|
"serial_note": { "type": "string" },
|
|
"games": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "array",
|
|
"minItems": 5,
|
|
"maxItems": 6,
|
|
"prefixItems": [
|
|
{ "type": "string", "pattern": "^[0-9a-f]{8}$" },
|
|
{ "type": "integer", "minimum": 0 },
|
|
{ "type": "string", "pattern": "^([0-9a-f]{40})?$" },
|
|
{ "type": ["integer", "null"], "minimum": 0 },
|
|
{ "type": "string", "minLength": 1 },
|
|
{ "type": "array", "items": { "type": "string", "minLength": 1 } }
|
|
],
|
|
"items": false
|
|
}
|
|
}
|
|
}
|
|
}
|