Skip to content

JSON Output

Pass --json to any venpm command to get structured output instead of human-readable text. This is useful for scripting, CI pipelines, and tool integrations.

Envelope Format

Every JSON response follows the same envelope:

Success

json
{
  "success": true,
  "data": { /* command-specific payload */ }
}

Error

json
{
  "success": false,
  "error": "Human-readable error message"
}

Output is a single JSON line written to stdout. Human-readable messages (warnings, progress) go to stderr when --json is active, so they don't interfere with JSON parsing.

Per-Command Data Shapes

venpm list --json

json
{
  "success": true,
  "data": {
    "plugins": [
      {
        "name": "channelTabs",
        "version": "0.1.0",
        "repo": "kamaras-plugins",
        "method": "git",
        "pinned": false
      }
    ]
  }
}

venpm search --json

json
{
  "success": true,
  "data": {
    "results": [
      {
        "name": "channelTabs",
        "version": "0.1.0",
        "description": "Quick-access tab bar for channels and DMs",
        "repo": "kamaras-plugins"
      }
    ]
  }
}

venpm info --json

json
{
  "success": true,
  "data": {
    "name": "channelTabs",
    "version": "0.1.0",
    "description": "Quick-access tab bar for channels and DMs",
    "authors": [{ "name": "kamaras", "id": "123456789012345678" }],
    "license": "MIT",
    "repo": "kamaras-plugins",
    "dependencies": [],
    "optionalDependencies": ["settingsHub"],
    "source": { "git": "https://...", "path": "plugins/channelTabs" }
  }
}

venpm install --json

json
{
  "success": true,
  "data": {
    "installed": "channelTabs",
    "version": "0.1.0",
    "dependencies": ["settingsHub"]
  }
}

venpm validate --json

json
{
  "success": true,
  "data": {
    "path": "plugins.json",
    "valid": true,
    "errors": []
  }
}

On validation failure:

json
{
  "success": false,
  "error": "Validation failed",
  "data": {
    "path": "plugins.json",
    "valid": false,
    "errors": [
      "plugins.BetterFolders.source: must have required property 'git' or 'tarball'"
    ]
  }
}

venpm doctor --json

json
{
  "success": true,
  "data": {
    "checks": {
      "git": { "ok": true, "version": "2.47.0" },
      "pnpm": { "ok": true, "version": "9.15.0" },
      "vencord": { "ok": true, "path": "/home/you/src/Vencord" },
      "discord": { "ok": true, "binary": "/usr/bin/discord" },
      "repos": { "ok": true, "count": 1 },
      "venpm": { "ok": true, "version": "0.1.0" }
    }
  }
}

Scripting Examples

bash
# List all installed plugin names
venpm list --json | jq -r '.data.plugins[].name'

# Check if a specific plugin is installed
venpm list --json | jq -e '.data.plugins[] | select(.name == "channelTabs")' > /dev/null

# Install without prompts and check result
venpm install channelTabs --yes --json | jq '.success'

# Validate and extract errors
venpm validate plugins.json --json | jq '.data.errors[]'