Zum Inhalt springen

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.


Gibt den vollständigen Plugin-Katalog als JSON-Dokument zurück — das ist der primäre Endpunkt, den die semrel-CLI nutzt.

Terminal-Fenster
# Offizielle Registry
curl https://registry.semrel.io/plugins.json
# Eigene Registry (über SEMREL_REGISTRY_URL konfigurierbar)
curl $SEMREL_REGISTRY_URL/plugins.json

Das Antwortformat ist im Plugin-Metadaten-Schema dokumentiert.


Listet Plugins mit Paginierung und Filtern auf.

Query-Parameter

ParameterTypStandardBeschreibung
pageinteger1Seitennummer
limitinteger20Ergebnisse pro Seite (max. 100)
categorystringNach Kategorie filtern (analyzer, generator, provider, condition, hook, updater, packager, publisher)
searchstringVolltextsuche ü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
}

Gibt ein Plugin über Namespace und Name zurück.

Terminal-Fenster
curl https://registry.semrel.io/api/v1/plugins/@semrel/provider-github

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-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.


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.


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.json

Gibt das JSON-Schema für die args:-Konfiguration eines bestimmten Plugins zurück.

Leitet (HTTP 301) zur aktuellsten Schema-Version des benannten Plugins weiter.


Öffentliche Endpunkte sind pro Client-IP rate-limitiert:

EndpunktgruppeLimit
Plugin-Leseendpunkte60 Anfragen/Min.
/plugins.json10 Anfragen/Min.
OAuth-Endpunkte20 Anfragen/Min.

Antworten oberhalb des Limits liefern HTTP 429 Too Many Requests mit dem Header Retry-After: 60.


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.