diff --git a/plugin-schema.json b/plugin-schema.json new file mode 100644 index 0000000..d9a6804 --- /dev/null +++ b/plugin-schema.json @@ -0,0 +1,42 @@ +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "required": [ + "id", + "version", + "supported_versions", + "file", + "args" + ], + "properties": { + "id": { + "type": "string", + "description": "Unique plugin identifier (recommended to be lowercase and use author/plugin format)", + "minLength": 1 + }, + "version": { + "type": "string", + "description": "Plugin version", + "pattern": "^\\d+\\.\\d+\\.\\d+$" + }, + "supported_versions": { + "type": "array", + "description": "List of supported host versions", + "items": { + "type": "string" + } + }, + "file": { + "type": "string", + "description": "Executable or runtime used to launch the plugin" + }, + "args": { + "type": "array", + "description": "Arguments passed to the executable", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false +} diff --git a/src/types.rs b/src/types.rs index f6d7961..a28b3bd 100644 --- a/src/types.rs +++ b/src/types.rs @@ -129,6 +129,7 @@ pub mod message { /// WebSocket wrapper #[derive(Debug, Clone, Serialize)] + #[serde(tag = "type", content = "params", rename_all = "snake_case")] pub enum WsMessage Deserialize<'de>> { Message(T), Binary(Vec),