Whistle · Schema

Whistle Plugin

A Whistle proxy plugin definition.

Debugging ProxyProxyNetwork DebuggingHTTPHTTPSWebSocketDeveloper Tools

Properties

Name Type Description
name string The plugin name (must start with 'whistle.').
version string Plugin version following semantic versioning.
description string A brief description of what the plugin does.
homepage string URL to plugin documentation or homepage.
scripts object Plugin lifecycle scripts.
engines object
View JSON Schema on GitHub

JSON Schema

whistle-plugin-schema.json Raw ↑
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://raw.githubusercontent.com/api-evangelist/whistle/main/json-schema/whistle-plugin-schema.json",
  "title": "Whistle Plugin",
  "description": "A Whistle proxy plugin definition.",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "The plugin name (must start with 'whistle.').",
      "pattern": "^whistle\\..+"
    },
    "version": {
      "type": "string",
      "description": "Plugin version following semantic versioning."
    },
    "description": {
      "type": "string",
      "description": "A brief description of what the plugin does."
    },
    "homepage": {
      "type": "string",
      "format": "uri",
      "description": "URL to plugin documentation or homepage."
    },
    "scripts": {
      "type": "object",
      "description": "Plugin lifecycle scripts.",
      "properties": {
        "server": {
          "type": "string",
          "description": "Path to the server-side plugin script."
        },
        "uiServer": {
          "type": "string",
          "description": "Path to the UI server plugin script."
        },
        "rules": {
          "type": "string",
          "description": "Path to custom rules module."
        }
      }
    },
    "engines": {
      "type": "object",
      "properties": {
        "whistle": {
          "type": "string",
          "description": "Required Whistle version range."
        },
        "node": {
          "type": "string",
          "description": "Required Node.js version range."
        }
      }
    }
  },
  "required": ["name", "version", "description"],
  "additionalProperties": true
}