Registry-API
semrel-registry stellt eine öffentliche JSON-REST-API zum Finden und Herunterladen von semrel-Plugins bereit. Die Basis-URL der offiziellen Registry ist https://registry.semrel.io.
Plugin-Suche
Abschnitt betitelt „Plugin-Suche“GET /plugins.json
Abschnitt betitelt „GET /plugins.json“Gibt den vollständigen Plugin-Katalog als JSON-Dokument zurück — das ist der primäre Endpunkt, den die semrel-CLI nutzt.
# Offizielle Registrycurl https://registry.semrel.io/plugins.json
# Eigene Registry (über SEMREL_REGISTRY_URL konfigurierbar)curl $SEMREL_REGISTRY_URL/plugins.jsonDas Antwortformat ist im Plugin-Metadaten-Schema dokumentiert.
GET /api/v1/plugins
Abschnitt betitelt „GET /api/v1/plugins“Listet Plugins mit Paginierung und Filtern auf.
Query-Parameter
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
page | integer | 1 | Seitennummer |
limit | integer | 20 | Ergebnisse pro Seite (max. 100) |
category | string | — | Nach Kategorie filtern (analyzer, generator, provider, condition, hook, updater, packager, publisher) |
search | string | — | Volltextsuche über Name, Beschreibung und Tags |
Antwort
{ "plugins": [ { "namespace": "@semrel", "name": "github", "description": "Publishes GitHub releases and uploads assets.", "category": "provider", "repository": "https://github.com/SemRels/provider-github", "license": "Apache-2.0", "tags": ["github", "release"], "latestVersion": "1.2.0", "downloads": 4891 } ], "total": 27, "page": 1, "limit": 20}GET /api/v1/plugins/@:namespace/:name
Abschnitt betitelt „GET /api/v1/plugins/@:namespace/:name“Gibt ein Plugin über Namespace und Name zurück.
curl https://registry.semrel.io/api/v1/plugins/@semrel/provider-githubGET /api/v1/plugins/:id/versions
Abschnitt betitelt „GET /api/v1/plugins/:id/versions“Listet alle veröffentlichten Versionen eines Plugins auf.
[ { "version": "1.2.0", "changelog": "## 1.2.0\n\n- Added asset upload support", "downloadUrl": "https://github.com/SemRels/provider-github/releases/download/v1.2.0/plugin-linux-amd64", "checksums": { "linux_amd64": "3b4cde…" }, "prerelease": false, "downloads": 1240, "createdAt": "2024-03-20T14:30:00Z" }]GET /api/v1/plugins/:id/versions/:version/downloads POST
Abschnitt betitelt „GET /api/v1/plugins/:id/versions/:version/downloads “Protokolliert ein Download-Ereignis. Wird automatisch von semrel plugin install aufgerufen — kein manueller Aufruf erforderlich.
Plugin einreichen
Abschnitt betitelt „Plugin einreichen“Plugin-Autoren können ein Community-Plugin zur Prüfung einreichen:
POST /api/v1/plugins/submit Auth nötig
Abschnitt betitelt „POST /api/v1/plugins/submit “Reicht ein Plugin zur Prüfung ein. Das Plugin erhält zunächst status: pending bis es freigegeben wird.
Request-Body
{ "name": "my-analyzer", "description": "A custom commit analyzer.", "category": "analyzer", "repository": "https://github.com/you/my-analyzer", "license": "Apache-2.0", "tags": ["analyzer"]}Authentifizierung über GitHub OAuth — https://registry.semrel.io aufrufen und einloggen.
Webhook (für Plugin-Release-Workflows)
Abschnitt betitelt „Webhook (für Plugin-Release-Workflows)“POST /api/v1/webhooks/release
Abschnitt betitelt „POST /api/v1/webhooks/release“Release-Workflows von Plugins rufen diesen Endpunkt auf, um die Registry über eine neue Version zu informieren. Diesen Schritt im Release-Workflow des Plugins ergänzen:
- name: semrel-Registry benachrichtigen run: | curl -s -X POST https://registry.semrel.io/api/v1/webhooks/release \ -H "Content-Type: application/json" \ -H "X-Semrel-Signature: ${{ secrets.SEMREL_WEBHOOK_SECRET }}" \ -d '{"repository": "${{ github.repository }}", "tag": "${{ github.ref_name }}"}'Das Webhook-Secret wird Plugin-Maintainern separat bereitgestellt. Siehe die Plugin-Publishing-Anleitung für den vollständigen Release-Workflow.
Schema-Endpunkte
Abschnitt betitelt „Schema-Endpunkte“GET /schemas/core/v1.json
Abschnitt betitelt „GET /schemas/core/v1.json“Gibt das JSON-Schema für .semrel.yaml zurück. In jedem LSP-fähigen Editor für Inline-Validierung nutzbar:
# yaml-language-server: $schema=https://registry.semrel.io/schemas/core/v1.jsonGET /schemas/plugins/{name}/v1.json
Abschnitt betitelt „GET /schemas/plugins/{name}/v1.json“Gibt das JSON-Schema für die args:-Konfiguration eines bestimmten Plugins zurück.
GET /schemas/plugins/{name}/latest.json
Abschnitt betitelt „GET /schemas/plugins/{name}/latest.json“Leitet (HTTP 301) zur aktuellsten Schema-Version des benannten Plugins weiter.
Ratenbegrenzung
Abschnitt betitelt „Ratenbegrenzung“Öffentliche Endpunkte sind pro Client-IP rate-limitiert:
| Endpunktgruppe | Limit |
|---|---|
| Plugin-Leseendpunkte | 60 Anfragen/Min. |
/plugins.json | 10 Anfragen/Min. |
| OAuth-Endpunkte | 20 Anfragen/Min. |
Antworten oberhalb des Limits liefern HTTP 429 Too Many Requests mit dem Header Retry-After: 60.
Eigene Registry betreiben
Abschnitt betitelt „Eigene Registry betreiben“Die Registry ist Open Source. Zum Betrieb einer eigenen Instanz siehe das semrel-registry-Repository. Die CLI per SEMREL_REGISTRY_URL auf die eigene Instanz zeigen lassen.