NIP-86-Verwaltung

Die JSON-RPC-Verwaltungs-API: Moderation, Zugriffslisten, Relay-Identität, Rollen, Einladungscodes und delegierte Methodenzuweisungen, mit Bearer- oder NIP-98-Authentifizierung.

Aktivieren

NIP-86 ist eine JSON-RPC-API zur Verwaltung des Relays. Sie benötigt eine von zwei Authentifizierungsmethoden, andernfalls wird jeder Aufruf abgelehnt:

MethodeEinrichtung
Bearer-TokenSetzen Sie rpc.management_token und senden Sie Authorization: Bearer <token>
NIP-98Setzen Sie rpc.admin_pubkey und senden Sie ein NIP-98-Auth-Event (Kind 27235), signiert mit dem Admin-Schlüssel, in Authorization: Nostr <base64> — ein payload-Tag ist erforderlich; jedes Event ist innerhalb seines 60-Sekunden-Fensters nur einmal verwendbar

API aufrufen

POST / mit Content-Type: application/nostr+json+rpc:

sh
curl -X POST http://127.0.0.1:8080/ \
  -H "Content-Type: application/nostr+json+rpc" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{"method":"supportedmethods","params":[]}'

Methoden

MethodeParameterBeschreibung
supportedmethods[]Liste der unterstützten Methoden
banpubkey["pubkey", "reason (optional)"]Einen Pubkey für das Veröffentlichen sperren (entfernt ihn auch von der Allowlist)
unbanpubkey["pubkey"]Einen Pubkey entsperren
listbannedpubkeys[]Gesperrte Pubkeys und Gründe auflisten
allowpubkey["pubkey", "reason (optional)"]Zur Allowlist hinzufügen (hebt auch die Sperre auf)
unallowpubkey["pubkey"]Von der Allowlist entfernen
listallowedpubkeys[]Die Allowlist auflisten
allowkind / disallowkind[kind]Einen Kind erlauben / verbieten
listallowedkinds / listdisallowedkinds[]Erlaubte / verbotene Kinds auflisten
changerelayname / changerelaydescription / changerelayicon["new value"]Relay-Namen / Beschreibung / Icon ändern (wird in die Konfigurationsdatei gespeichert; meldet einen Fehler, wenn die Datei nicht geschrieben werden kann)
createrole / editrole / deleterole[id, label, description, color, order]NIP-43-Rollenverwaltung (falsch typisierte Felder werden abgelehnt; das Löschen einer fehlenden Rolle gelingt)
assignrole / unassignrole["pubkey", "role id"]Eine Rolle zuweisen / entziehen (eine doppelte Zuweisung oder fehlende Entziehung gelingt)
assignmethod / unassignmethod["pubkey", "method"]Eine NIP-86-Methode an einen Nicht-Admin-Pubkey vergeben / entziehen — nur Moderations- und Lesemethoden sind übertragbar
listmethodassignees[]Methodenzuweisungen auflisten ([{pubkey, methods}])
blockip / unblockip["ip", "reason (optional)"]Eine IP blockieren / entblockieren (Blockieren trennt auch bestehende Verbindungen)
listblockedips[]Blockierte IPs auflisten
banevent["event id", "reason (optional)"]Ein Event sperren (das Sperren einer unbekannten ID sperrt sie vorab; entfernt sie auch von der Allow-Liste)
allowevent["event id", "reason (optional)"]Ein Event zur Allow-Liste hinzufügen (hebt auch die Sperre auf; das Erlauben einer unbekannten ID erlaubt sie vorab)
unallowevent / unbanevent["event id"]Ein Event von der Allow- / Ban-Liste entfernen (ein fehlender Eintrag gelingt)
listbannedevents[]Gesperrte Events auflisten (eine fehlgeschlagene Suche meldet einen Fehler, niemals eine leere Liste)
listallowedevents[]Erlaubte Events auflisten
listeventsneedingmoderation[]Events, die auf Moderation warten (auf diesem Relay immer leer)
listclaims[]NIP-43-Einladungscodes auflisten
createclaim / deleteclaim["claim"]Einen NIP-43-Einladungscode ausstellen / widerrufen (ein Kind:28934 mit einem gelisteten Code lässt seinen Autor zu)
Delegierte Administration
rpc.admin_pubkey (und das Verwaltungstoken) bleiben der Root-Zugang mit allen Methoden. Andere Pubkeys authentifizieren sich mit NIP-98 und dürfen nur ihre per assignmethod zugewiesenen Methoden ausführen (supportedmethods zeigt ihre eigene Teilmenge). Berechtigungs-, Rollen-, Einladungscode- und Relay-Identitätsverwaltung bleiben Admin-only, sodass ein Begünstigter niemals eskalieren kann. Ein gesperrter Pubkey wird selbst mit Zuweisungen abgelehnt.
Bereitgestellt auf den öffentlichen POST /-Routen
Die NIP-86-RPC ist auf den öffentlichen POST /-Routen des Relays eingebunden. Änderungen werden in einem ratenbegrenzten Audit-Log (höchstens 600 Einträge pro Minute) mit der authentifizierten Identität aufgezeichnet. Anfragen über rpc.max_admin_body_bytes werden mit 413 abgelehnt.