{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://schema.stella-ops.org/plugin-manifest/v2.json", "title": "StellaOps Plugin Manifest", "description": "Schema for plugin.json manifest files (v2.0)", "type": "object", "required": ["id", "name", "assembly"], "properties": { "schemaVersion": { "type": "string", "description": "Schema version. Current version is 2.0", "default": "2.0", "enum": ["1.0", "2.0"] }, "id": { "type": "string", "description": "Unique plugin identifier in format: stellaops.{module}.{plugin}", "pattern": "^[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9-]*)*$", "examples": ["stellaops.router.tcp", "stellaops.scanner.lang.dotnet"] }, "name": { "type": "string", "description": "Human-readable display name", "minLength": 1, "maxLength": 100 }, "version": { "type": "string", "description": "Plugin version (SemVer)", "default": "1.0.0", "pattern": "^\\d+\\.\\d+\\.\\d+(?:-[a-zA-Z0-9.]+)?(?:\\+[a-zA-Z0-9.]+)?$" }, "assembly": { "$ref": "#/$defs/assemblyDescriptor" }, "type": { "type": "string", "description": "Entry point type for plugin initialization (fully qualified type name)", "examples": ["StellaOps.Router.Tcp.TcpTransportPlugin"] }, "capabilities": { "type": "array", "description": "Plugin capabilities", "items": { "type": "string", "pattern": "^[a-z][a-z0-9-]*(?::[a-zA-Z0-9*.-]+)?$" }, "examples": [["signing:ES256", "transport:tcp", "analyzer:dotnet"]] }, "platforms": { "type": "array", "description": "Supported platforms. Empty array means all platforms", "items": { "type": "string", "enum": ["*", "linux", "linux-x64", "linux-arm64", "win", "win-x64", "win-arm64", "osx", "osx-x64", "osx-arm64"] }, "default": [] }, "compliance": { "type": "array", "description": "Compliance standards", "items": { "type": "string" }, "examples": [["NIST", "FIPS-140-3", "GOST", "eIDAS", "KCMVP", "GM/T"]] }, "jurisdiction": { "type": "string", "description": "Jurisdiction restriction", "enum": ["world", "russia", "china", "eu", "korea", "usa"], "default": "world" }, "priority": { "type": "integer", "description": "Loading priority (0-100). Higher priority plugins are loaded first", "minimum": 0, "maximum": 100, "default": 100 }, "enabled": { "type": "boolean", "description": "Whether the plugin is enabled by default", "default": true }, "enabledByDefault": { "type": "boolean", "description": "Whether the plugin is enabled by default in new installations", "default": false }, "options": { "type": "object", "description": "Plugin-specific configuration options", "additionalProperties": true }, "metadata": { "type": "object", "description": "Additional metadata", "additionalProperties": { "type": "string" }, "properties": { "author": { "type": "string", "description": "Plugin author" }, "license": { "type": "string", "description": "License identifier (SPDX)" }, "homepage": { "type": "string", "format": "uri", "description": "Plugin homepage URL" }, "repository": { "type": "string", "format": "uri", "description": "Source repository URL" } } }, "dependencies": { "type": "array", "description": "Plugin dependencies (other plugin IDs)", "items": { "type": "string" } }, "conditionalCompilation": { "type": "string", "description": "Conditional compilation symbol required to build this plugin" } }, "$defs": { "assemblyDescriptor": { "type": "object", "description": "Descriptor for the plugin assembly location", "required": ["path"], "properties": { "path": { "type": "string", "description": "Relative path to the assembly DLL from the plugin directory", "examples": ["StellaOps.Router.Tcp.dll"] }, "sha256": { "type": "string", "description": "SHA256 hash of the assembly for integrity verification", "pattern": "^[a-fA-F0-9]{64}$" }, "signaturePath": { "type": "string", "description": "Path to signature file (.sig) for cosign verification" } } } } }