summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/schemas/api_keyboard.jsonschema35
-rw-r--r--data/schemas/false.jsonschema1
-rw-r--r--data/schemas/keyboard.jsonschema232
-rw-r--r--data/schemas/true.jsonschema1
4 files changed, 269 insertions, 0 deletions
diff --git a/data/schemas/api_keyboard.jsonschema b/data/schemas/api_keyboard.jsonschema
new file mode 100644
index 0000000000..d570ee9990
--- /dev/null
+++ b/data/schemas/api_keyboard.jsonschema
@@ -0,0 +1,35 @@
+{
+ "allOf": [
+ { "$ref": "qmk.keyboard.v1" },
+ {
+ "$id": "qmk.api.keyboard.v1",
+ "keymaps": {
+ "type": "string"
+ },
+ "parse_errors": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "parse_warnings": {
+ "type": "array",
+ "items": {
+ "type": "string"
+ }
+ },
+ "processor_type": {
+ "type": "string"
+ },
+ "protocol": {
+ "type": "string"
+ },
+ "keyboard_folder": {
+ "type": "string"
+ },
+ "platform": {
+ "type": "string"
+ }
+ }
+ ]
+}
diff --git a/data/schemas/false.jsonschema b/data/schemas/false.jsonschema
new file mode 100644
index 0000000000..c508d5366f
--- /dev/null
+++ b/data/schemas/false.jsonschema
@@ -0,0 +1 @@
+false
diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema
new file mode 100644
index 0000000000..75e792b646
--- /dev/null
+++ b/data/schemas/keyboard.jsonschema
@@ -0,0 +1,232 @@
+{
+ "$schema": "http://json-schema.org/schema#",
+ "$id": "qmk.keyboard.v1",
+ "title": "Keyboard Information",
+ "type": "object",
+ "properties": {
+ "keyboard_name": {
+ "type": "string",
+ "minLength": 2,
+ "maxLength": 250
+ },
+ "maintainer": {
+ "type": "string",
+ "minLength": 2,
+ "maxLength": 250
+ },
+ "manufacturer": {
+ "type": "string",
+ "minLength": 2,
+ "maxLength": 250
+ },
+ "url": {
+ "type": "string",
+ "format": "uri"
+ },
+ "processor": {
+ "type": "string",
+ "enum": ["MK20DX128", "MK20DX256", "MKL26Z64", "STM32F042", "STM32F072", "STM32F103", "STM32F303", "STM32F401", "STM32F411", "at90usb1286", "at90usb646", "atmega16u2", "atmega328p", "atmega32a", "atmega32u2", "atmega32u4", "attiny85", "cortex-m4"]
+ },
+ "bootloader": {
+ "type": "string",
+ "enum": ["atmel-dfu", "bootloadHID", "caterina", "halfkay", "kiibohd", "lufa-dfu", "lufa-ms", "micronucleus", "qmk-dfu", "stm32-dfu", "stm32duino", "unknown", "USBasp"]
+ },
+ "diode_direction": {
+ "type": "string",
+ "enum": ["COL2ROW", "ROW2COL"]
+ },
+ "debounce": {
+ "type": "number",
+ "min": 0,
+ "multipleOf": 1
+ },
+ "height": {
+ "type": "number",
+ "min": 0.25
+ },
+ "width": {
+ "type": "number",
+ "min": 0.25
+ },
+ "community_layouts": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "minLength": 2,
+ "pattern": "^[0-9a-z_]*$"
+ }
+ },
+ "features": {
+ "type": "object",
+ "additionalProperties": {"type": "boolean"}
+ },
+ "indicators": {
+ "type": "object",
+ "properties": {
+ "caps_lock": {
+ "type": "string",
+ "pattern": "^[A-K]\\d{1,2}$"
+ },
+ "num_lock": {
+ "type": "string",
+ "pattern": "^[A-K]\\d{1,2}$"
+ },
+ "scroll_lock": {
+ "type": "string",
+ "pattern": "^[A-K]\\d{1,2}$"
+ }
+ }
+ },
+ "layout_aliases": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "string",
+ "pattern": "^LAYOUT_[0-9a-z_]*$"
+ }
+ },
+ "layouts": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "c_macro": {
+ "type": "boolean"
+ },
+ "key_count": {
+ "type": "number",
+ "min": 0,
+ "multipleOf": 1
+ },
+ "layout": {
+ "type": "array",
+ "items": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "label": {"type": "string"},
+ "matrix": {
+ "type": "array",
+ "minItems": 2,
+ "maxItems": 2,
+ "items": {
+ "type": "number",
+ "min": 0,
+ "multipleOf": 1
+ }
+ },
+ "h": {
+ "type": "number",
+ "min": 0.25
+ },
+ "w": {
+ "type": "number",
+ "min": 0.25
+ },
+ "x": {
+ "type": "number",
+ "min": 0
+ },
+ "y": {
+ "type": "number",
+ "min": 0
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "matrix_pins": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "direct": {
+ "type": "array",
+ "items": {
+ "type": "array",
+ "items": {
+ "oneOf": [
+ {
+ "type": "string",
+ "pattern": "^[A-K]\\d{1,2}$"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ }
+ },
+ "cols": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "pattern": "^[A-K]\\d{1,2}$"
+ }
+ },
+ "rows": {
+ "type": "array",
+ "items": {
+ "type": "string",
+ "pattern": "^[A-K]\\d{1,2}$"
+ }
+ }
+ }
+ },
+ "rgblight": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "animations": {
+ "type": "object",
+ "additionalProperties": {
+ "type": "boolean"
+ }
+ },
+ "brightness_steps": {
+ "type": "number",
+ "min": 0,
+ "multipleOf": 1
+ },
+ "hue_steps": {
+ "type": "number",
+ "min": 0,
+ "multipleOf": 1
+ },
+ "led_count": {
+ "type": "number",
+ "min": 0,
+ "multipleOf": 1
+ },
+ "pin": {
+ "type": "string",
+ "pattern": "^[A-K]\\d{1,2}$"
+ },
+ "saturation_steps": {
+ "type": "number",
+ "min": 0,
+ "multipleOf": 1
+ }
+ }
+ },
+ "usb": {
+ "type": "object",
+ "additionalProperties": false,
+ "properties": {
+ "device_ver": {
+ "type": "string",
+ "pattern": "^[0-9A-F]x[0-9A-F][0-9A-F][0-9A-F][0-9A-F]"
+ },
+ "pid": {
+ "type": "string",
+ "pattern": "^[0-9A-F]x[0-9A-F][0-9A-F][0-9A-F][0-9A-F]"
+ },
+ "vid": {
+ "type": "string",
+ "pattern": "^[0-9A-F]x[0-9A-F][0-9A-F][0-9A-F][0-9A-F]"
+ }
+ }
+ }
+ }
+}
diff --git a/data/schemas/true.jsonschema b/data/schemas/true.jsonschema
new file mode 100644
index 0000000000..27ba77ddaf
--- /dev/null
+++ b/data/schemas/true.jsonschema
@@ -0,0 +1 @@
+true