{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "numbl-instrument-v1.schema.json", "title": "numbl instrument bundle, format numbl-instrument-v1", "type": "object", "required": ["format", "id", "name", "knobs", "files"], "additionalProperties": false, "properties": { "format": { "const": "numbl-instrument-v1" }, "id": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]*$" }, "name": { "type": "string", "minLength": 1 }, "description": { "type": "string" }, "source": { "type": "string" }, "knobs": { "type": "array", "items": { "type": "object", "required": ["key", "label", "min", "max", "default"], "additionalProperties": false, "properties": { "key": { "type": "string", "minLength": 1 }, "label": { "type": "string", "minLength": 1 }, "min": { "type": "number" }, "max": { "type": "number" }, "default": { "type": "number" }, "step": { "type": "number", "exclusiveMinimum": 0 }, "scale": { "const": "log" } } } }, "files": { "type": "array", "minItems": 1, "items": { "type": "object", "required": ["name", "content"], "additionalProperties": false, "properties": { "name": { "type": "string", "pattern": "^[^/]+\\.m$" }, "content": { "type": "string", "minLength": 1 } } } } } }