zmk/schema/hardware-metadata.schema.json
zhiayang 4bef4e98f5
feat(boards): Support board revisions in setup scripts.
* Make setup.sh/ps1 prompt for board revision for boards that have revisions
2024-03-30 19:12:37 -04:00

276 lines
5.8 KiB
JSON

{
"$id": "https://zmkfirmware.dev/zmk.metadata.json",
"title": "HardwareMetadata",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"oneOf": [
{
"$ref": "#/$defs/board"
},
{
"$ref": "#/$defs/shield"
},
{
"$ref": "#/$defs/interconnect"
}
],
"$defs": {
"id": {
"type": "string",
"pattern": "^[a-z0-9_]+(@([A-Z]|[0-9]+|([0-9]+(\\.[0-9]+){1,2})))?$"
},
"revision": {
"type": "string",
"pattern": "[A-Z]|[0-9]+|([0-9]+(\\.[0-9]+){1,2})"
},
"keyboard_siblings": {
"type": "array",
"items": {
"type": "string"
}
},
"variant": {
"oneOf": [
{
"type": "string"
},
{
"type": "object",
"required": ["id", "features"],
"properties": {
"id": {
"$ref": "#/$defs/id"
},
"features": {
"$ref": "#/$defs/features"
}
}
}
]
},
"features": {
"type": "array",
"items": {
"type": "string",
"enum": [
"keys",
"display",
"encoder",
"underglow",
"backlight",
"pointer"
]
}
},
"interconnects": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/$defs/id"
}
},
"sibling_details": {
"type": "object",
"additionalProperties": false,
"properties": {
"id": {
"$ref": "#/$defs/id"
},
"features": {
"$ref": "#/$defs/features"
},
"variants": {
"type": "array",
"items": {
"$ref": "#/$defs/variant"
}
}
}
},
"interconnect_node_labels": {
"title": "InterconnectNodeLabels",
"type": "object",
"additionalProperties": false,
"required": ["gpio"],
"properties": {
"gpio": { "type": "string" },
"i2c": { "type": "string" },
"spi": { "type": "string" },
"uart": { "type": "string" },
"adc": { "type": "string" }
}
},
"interconnect": {
"title": "Interconnect",
"type": "object",
"additionalProperties": false,
"required": ["file_format", "id", "name", "description", "url", "type"],
"properties": {
"file_format": {
"type": "string",
"const": "1"
},
"id": {
"$ref": "#/$defs/id"
},
"name": {
"type": "string"
},
"version": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
},
"description": {
"type": "string"
},
"node_labels": {
"$ref": "#/$defs/interconnect_node_labels"
},
"design_guideline": {
"type": "string"
},
"manufacturer": {
"type": "string"
},
"type": {
"type": "string",
"const": "interconnect"
}
}
},
"board": {
"title": "Board",
"type": "object",
"additionalProperties": false,
"required": [
"file_format",
"id",
"name",
"url",
"arch",
"type",
"outputs"
],
"properties": {
"file_format": {
"type": "string",
"const": "1"
},
"id": {
"$ref": "#/$defs/id"
},
"name": {
"type": "string"
},
"version": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
},
"description": {
"type": "string"
},
"manufacturer": {
"type": "string"
},
"arch": {
"type": "string",
"pattern": "^[a-z0-9_]+$"
},
"type": {
"type": "string",
"const": "board"
},
"siblings": {
"$ref": "#/$defs/keyboard_siblings"
},
"outputs": {
"type": "array",
"items": {
"type": "string",
"enum": ["usb", "ble"]
}
},
"features": {
"$ref": "#/$defs/features"
},
"variants": {
"type": "array",
"items": {
"$ref": "#/$defs/variant"
}
},
"exposes": {
"$ref": "#/$defs/interconnects"
},
"revisions": {
"type": "array",
"items": {
"$ref": "#/$defs/revision"
}
},
"default_revision": {
"$ref": "#/$defs/revision"
}
}
},
"shield": {
"title": "Shield",
"type": "object",
"additionalProperties": false,
"required": ["file_format", "id", "name", "url", "type", "requires"],
"properties": {
"file_format": {
"type": "string",
"const": "1"
},
"id": {
"$ref": "#/$defs/id"
},
"name": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
},
"description": {
"type": "string"
},
"manufacturer": {
"type": "string"
},
"version": {
"type": "string"
},
"type": {
"type": "string",
"const": "shield"
},
"features": {
"$ref": "#/$defs/features"
},
"variants": {
"type": "array",
"items": {
"$ref": "#/$defs/variant"
}
},
"siblings": {
"$ref": "#/$defs/keyboard_siblings"
},
"requires": {
"$ref": "#/$defs/interconnects"
},
"exposes": {
"$ref": "#/$defs/interconnects"
}
}
}
}
}