{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://alga.example.com/schemas/extension-manifest.v2.schema.json", "title": "Alga Extension Manifest v2", "type": "object", "additionalProperties": false, "required": [ "name", "publisher", "version", "runtime", "ui" ], "properties": { "name": { "type": "string", "minLength": 1 }, "publisher": { "type": "string", "minLength": 1 }, "version": { "type": "string", "minLength": 1 }, "runtime": { "type": "string", "enum": ["wasm-js@1"] }, "capabilities": { "type": "array", "items": { "type": "string", "enum": [ "http.fetch", "storage.kv", "secrets.get", "events.emit", "events.subscribe", "log", "metrics" ] }, "uniqueItems": true, "default": [] }, "ui": { "type": "object", "additionalProperties": false, "required": ["type", "entry"], "properties": { "type": { "type": "string", "enum": ["iframe"] }, "entry": { "type": "string", "minLength": 1 }, "hooks": { "type": "object", "additionalProperties": true, "properties": { "appMenu": { "type": "object", "additionalProperties": false, "required": ["label"], "properties": { "label": { "type": "string", "minLength": 1 } } } } }, "routes": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": ["path", "iframePath"], "properties": { "path": { "type": "string", "minLength": 1 }, "iframePath": { "type": "string", "minLength": 1 } } } } } }, "events": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": ["topic", "handler"], "properties": { "topic": { "type": "string", "minLength": 1 }, "handler": { "type": "string", "minLength": 1 } } } }, "precompiled": { "type": "object", "additionalProperties": { "type": "string" }, "description": "Target-triple to cwasm path map" }, "api": { "type": "object", "additionalProperties": false, "required": ["endpoints"], "properties": { "endpoints": { "type": "array", "minItems": 1, "items": { "type": "object", "additionalProperties": false, "required": ["method", "path", "handler"], "properties": { "method": { "type": "string", "enum": ["GET", "POST", "PUT", "PATCH", "DELETE"] }, "path": { "type": "string", "minLength": 1 }, "handler": { "type": "string", "minLength": 1 } } } } } }, "assets": { "type": "array", "items": { "type": "string" }, "description": "Glob patterns for UI/static files" }, "sbom": { "type": "string" } } }