Gestione NIP-86

L’API di gestione JSON-RPC: moderazione, liste di accesso, identità del relay, ruoli, codici di invito e deleghe di metodi, con autenticazione Bearer o NIP-98.

Abilitazione

NIP-86 è un’API JSON-RPC per gestire il relay. Richiede uno dei due metodi di autenticazione, altrimenti ogni chiamata viene rifiutata:

MetodoConfigurazione
Token BearerImposta rpc.management_token e invia Authorization: Bearer <token>
NIP-98Imposta rpc.admin_pubkey e invia un evento di autenticazione NIP-98 (kind 27235) firmato dalla chiave admin in Authorization: Nostr <base64> — è richiesto un tag payload; ogni evento è monouso entro la sua finestra di 60 secondi

Chiamare l’API

POST / con 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":[]}'

Metodi

MetodoParametriDescrizione
supportedmethods[]Elenco dei metodi supportati
banpubkey["pubkey", "reason (optional)"]Bannare una pubkey dalla pubblicazione (la rimuove anche dalla allowlist)
unbanpubkey["pubkey"]Rimuovere il ban di una pubkey
listbannedpubkeys[]Elencare le pubkey bannate e i motivi
allowpubkey["pubkey", "reason (optional)"]Aggiungere alla allowlist (rimuove anche il ban)
unallowpubkey["pubkey"]Rimuovere dalla allowlist
listallowedpubkeys[]Elencare la allowlist
allowkind / disallowkind[kind]Consentire / vietare un kind
listallowedkinds / listdisallowedkinds[]Elencare i kind consentiti / vietati
changerelayname / changerelaydescription / changerelayicon["new value"]Cambiare nome / descrizione / icona del relay (persistito nel file di configurazione; segnala un errore quando il file non può essere scritto)
createrole / editrole / deleterole[id, label, description, color, order]Gestione dei ruoli NIP-43 (i campi con tipo errato vengono rifiutati; eliminare un ruolo mancante riesce)
assignrole / unassignrole["pubkey", "role id"]Assegnare / revocare un ruolo (una concessione duplicata o una revoca mancante riesce)
assignmethod / unassignmethod["pubkey", "method"]Concedere / revocare un metodo NIP-86 a una pubkey non admin — solo i metodi di moderazione e lettura sono delegabili
listmethodassignees[]Elencare le concessioni di metodi ([{pubkey, methods}])
blockip / unblockip["ip", "reason (optional)"]Bloccare / sbloccare un IP (il blocco interrompe anche le connessioni esistenti)
listblockedips[]Elencare gli IP bloccati
banevent["event id", "reason (optional)"]Bannare un evento (bannare un id sconosciuto lo pre-banna; lo rimuove anche dalla allowlist)
allowevent["event id", "reason (optional)"]Aggiungere un evento alla allowlist (toglie anche il ban; consentire un id sconosciuto lo pre-consente)
unallowevent / unbanevent["event id"]Rimuovere un evento dalla allowlist/banlist (una voce mancante riesce)
listbannedevents[]Elencare gli eventi bannati (una ricerca fallita restituisce un errore, mai una lista vuota)
listallowedevents[]Elencare gli eventi consentiti
listeventsneedingmoderation[]Eventi in attesa di moderazione (sempre vuoto su questo relay)
listclaims[]Elencare i codici di invito NIP-43
createclaim / deleteclaim["claim"]Emettere / revocare un codice di invito NIP-43 (un kind:28934 con un codice elencato ammette il suo autore)
Amministrazione delegata
rpc.admin_pubkey (e il token di gestione) resta l’accesso root con tutti i metodi. Le altre pubkey si autenticano con NIP-98 e possono eseguire solo i metodi concessi via assignmethod (supportedmethods mostra il proprio sottoinsieme). La gestione di permessi, ruoli, codici di invito e identità del relay resta solo admin, quindi un beneficiario non può mai escalare. Una pubkey bannata viene rifiutata anche con concessioni.
Servito sulle rotte pubbliche POST /
L’RPC NIP-86 è montato sulle rotte pubbliche POST / del relay. Le modifiche sono registrate in un audit log con limitazione della frequenza (al massimo 600 voci al minuto), con l’identità autenticata. Le richieste oltre rpc.max_admin_body_bytes vengono rifiutate con 413.