Управление NIP-86
API управления JSON-RPC: модерация, списки доступа, идентичность релея, роли, пригласительные коды и делегированные разрешения на методы, с аутентификацией Bearer или NIP-98.
Включение
NIP-86 — это JSON-RPC API для управления релеем. Требуется один из двух методов аутентификации, иначе каждый вызов отклоняется:
| Метод | Настройка |
|---|---|
| Bearer-токен | Установите rpc.management_token и отправляйте Authorization: Bearer
<token> |
| NIP-98 | Установите rpc.admin_pubkey и отправляйте событие аутентификации NIP-98 (kind 27235), подписанное ключом администратора, в Authorization: Nostr <base64> — тег payload обязателен; каждое событие одноразовое в пределах своего 60-секундного окна |
Вызов API
POST / с 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":[]}'Методы
| Метод | Параметры | Описание |
|---|---|---|
supportedmethods | [] | Список поддерживаемых методов |
banpubkey | ["pubkey", "reason (optional)"] | Заблокировать pubkey для публикаций (также удаляет его из списка разрешённых) |
unbanpubkey | ["pubkey"] | Разблокировать pubkey |
listbannedpubkeys | [] | Список заблокированных pubkey и причин |
allowpubkey | ["pubkey", "reason (optional)"] | Добавить в список разрешённых (также снимает блокировку) |
unallowpubkey | ["pubkey"] | Удалить из списка разрешённых |
listallowedpubkeys | [] | Список разрешённых |
allowkind / disallowkind | [kind] | Разрешить / запретить kind |
listallowedkinds / listdisallowedkinds | [] | Список разрешённых / запрещённых kind |
changerelayname / changerelaydescription / changerelayicon | ["new value"] | Изменить имя / описание / значок релея (сохраняется в файл конфигурации; при невозможности записи файла сообщается об ошибке) |
createrole / editrole / deleterole | [id, label, description, color, order] | Управление ролями NIP-43 (поля с неверным типом отклоняются; удаление отсутствующей роли завершается успешно) |
assignrole / unassignrole | ["pubkey", "role id"] | Назначить / снять роль (повторное назначение или отсутствующее снятие завершается успешно) |
assignmethod / unassignmethod | ["pubkey", "method"] | Предоставить / отозвать метод NIP-86 для pubkey без прав администратора — делегировать можно только методы модерации и чтения |
listmethodassignees | [] | Список разрешений на методы ([{pubkey, methods}]) |
blockip / unblockip | ["ip", "reason (optional)"] | Заблокировать / разблокировать IP (блокировка также разрывает существующие соединения) |
listblockedips | [] | Список заблокированных IP |
banevent | ["event id", "reason (optional)"] | Заблокировать событие (блокировка неизвестного id предварительно блокирует его; также удаляет его из списка разрешённых) |
allowevent | ["event id", "reason (optional)"] | Добавить событие в список разрешённых (также снимает блокировку; разрешение неизвестного id предварительно разрешает его) |
unallowevent / unbanevent | ["event id"] | Удалить событие из списка разрешённых / заблокированных (отсутствующая запись завершается успешно) |
listbannedevents | [] | Список заблокированных событий (неудачный поиск возвращает ошибку, а не пустой список) |
listallowedevents | [] | Список разрешённых событий |
listeventsneedingmoderation | [] | События, ожидающие модерации (на этом релее всегда пусто) |
listclaims | [] | Список пригласительных кодов NIP-43 |
createclaim / deleteclaim | ["claim"] | Выпустить / отозвать пригласительный код NIP-43 (kind:28934 с кодом из списка допускает его автора) |