35 lines
1.4 KiB
JSON
35 lines
1.4 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://vendoo.local/contracts/module.schema.json",
|
|
"title": "Vendoo Module Manifest",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"required": ["schemaVersion", "id", "name", "version", "type", "status", "requires", "permissions", "provides", "consumes", "owns"],
|
|
"properties": {
|
|
"schemaVersion": { "const": 1 },
|
|
"id": { "type": "string", "pattern": "^vendoo\\.[a-z][a-z0-9-]*$" },
|
|
"name": { "type": "string", "minLength": 1, "maxLength": 80 },
|
|
"version": { "type": "string", "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[0-9A-Za-z.-]+)?$" },
|
|
"type": { "enum": ["core", "feature", "adapter", "extension-host"] },
|
|
"status": { "enum": ["native", "legacy-bridge", "disabled"] },
|
|
"description": { "type": "string", "maxLength": 500 },
|
|
"requires": { "$ref": "#/$defs/moduleIds" },
|
|
"permissions": { "$ref": "#/$defs/capabilities" },
|
|
"provides": { "$ref": "#/$defs/capabilities" },
|
|
"consumes": { "$ref": "#/$defs/capabilities" },
|
|
"owns": { "$ref": "#/$defs/capabilities" }
|
|
},
|
|
"$defs": {
|
|
"moduleIds": {
|
|
"type": "array",
|
|
"uniqueItems": true,
|
|
"items": { "type": "string", "pattern": "^vendoo\\.[a-z][a-z0-9-]*$" }
|
|
},
|
|
"capabilities": {
|
|
"type": "array",
|
|
"uniqueItems": true,
|
|
"items": { "type": "string", "pattern": "^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9-]*)+$" }
|
|
}
|
|
}
|
|
}
|