Plugin Index Data API

One request returns a lightweight summary of every collected plugin — verification level, security status, risk level, and counts. Built for agents and tooling (dsh-plugin-finder and friends).

Endpoints
URLDescriptionUpdate
/plugins-index.jsonRegistry summary — every plugin's status / risk level / counts (no per-finding detail). Single request, whole registry.rebuilt on each deploy (the registry index is rebuilt with the site)
/plugins-index.slim.jsonSelection subset of the same registry — enough to filter by verification level, sort by stars, watch risk level and follow repoHealth.renamedTo. Drops description, evidence URLs, security counts, capability and install badge, so it is roughly a third of the transfer size.rebuilt on each deploy

JSON endpoints allow cross-origin reads: Access-Control-Allow-Origin: *. No API key or registration is required.

Pick /plugins-index.slim.json when you only need to select plugins (level, stars, risk, health) and then fetch per-plugin detail; pick /plugins-index.json when you also need descriptions, capability samples, per-rule scan counts or the evidence links. Both carry the same id/alias/generatedAt, so a cached copy of either stays addressable against the other.

Response fields
FieldTypeSemantics
generatedstring (YYYY-MM-DD)Build date of this index
generatedAtstring (ISO)Build timestamp — preserve it alongside any cached copy
sourcestringThe registry page this index is derived from
countnumberNumber of plugin entries
plugins[]arrayOne entry per collected plugin (fields below)
plugins[].idstringPlugin id (matches plugins.json ids and artifact slugs)
plugins[].aliasstring | nullThe plugin's @author/plugin address — the only addressing accepted by the single-plugin endpoints (/artifact/, /data/install/, /plugin/); also embedded in each entry's evidence links
plugins[].namestringDisplay name
plugins[].descriptionstringRepository description, truncated to 300 characters
plugins[].starsnumberGitHub star count (0 when unknown)
plugins[].topicsstring[]Matched use-case / capability topic tags
plugins[].installstring | nullCopy-paste install command (dsh plugin --profile web add …). null = not installable via dsh plugin add (ecosystem app — see kind); ecosystem plugins do carry a command (they install, but mount no plugin capability)
plugins[].kindstring (optional)Present only on non-plugin entries: ecosystem-app = desktop / web shell or L4-unknown, no install command; ecosystem-plugin = installs via dsh plugin add but declares no dsh.bundle and mounts no capability
plugins[].sourcestring (optional)Source repository URL — present on non-plugin entries, where the install slot falls back to the repo page
plugins[].downloadstring (optional)Latest GitHub release URL for the entry, when one exists (non-plugin entries)
plugins[].urlstringAbsolute plugin detail page URL
plugins[].verificationobjectlevel (1–5), label (human-readable), lastVerifiedAt — derived by the same shared artifact layer as the registry UI, so the index always matches what the site shows
plugins[].securityobjectstatus, riskLevel, scannedAt, plus counts and filesScanned when present. No findings detail — use /artifact/@author/plugin.json for the full scan record
plugins[].repoHealthobject (optional)Repository health markers: status (renamed / deleted / topic-removed) and renamedTo when applicable — so machine consumers can react to moved plugins
licenseobjectProvenance and reuse terms — aggregated from public sources, attribution required

Honesty rule: verification and security values are computed by the same shared derivation layer as the registry UI (src/data/artifacts.ts) — the index can never disagree with the site. Entries the UI hides (repoHealth-flagged) stay in the index with their marker attached.

Usage

Fetch the whole index (or open /plugins-index.json in a browser):

curl https://www.dsh.so/plugins-index.json

Consumers: filter by verification.level, sort by stars, watch security.riskLevel, and honor repoHealth.renamedTo redirects.

Fields in plugins[] above describe /plugins-index.json; /plugins-index.slim.json carries the subset id, alias, name, stars, topics, install, kind, source, download, url, verification{level,label,lastVerifiedAt}, security{status,riskLevel,scannedAt}, repoHealth — the same values, projected (never recomputed). The index is rebuilt on every deploy from the append-only verification records and public registry data. Fields are add-only: existing fields will not be removed or renamed. Free to reference with attribution to dsh.so; new fields are announced in the changelog.

Was this page helpful?