NIP-86 管理

JSON-RPC 管理 API:审核、访问列表、中继身份、角色、邀请码和委派方法授权,支持 Bearer 或 NIP-98 认证。

启用

NIP-86 是用于管理中继的 JSON-RPC API。它需要两种认证方式之一, 否则每次调用都会被拒绝:

方式设置
Bearer token设置 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)"]封禁公钥使其不能发布(同时将其从白名单移除)
unbanpubkey["pubkey"]解封公钥
listbannedpubkeys[]列出被封禁的公钥及原因
allowpubkey["pubkey", "reason (optional)"]加入白名单(同时解除封禁)
unallowpubkey["pubkey"]从白名单移除
listallowedpubkeys[]列出白名单
allowkind / disallowkind[kind]允许 / 禁止某个类型
listallowedkinds / listdisallowedkinds[]列出允许 / 禁止的类型
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 方法 — 只有审核和读取方法可被授予
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 会接纳其作者)
委派管理
rpc.admin_pubkey(和管理令牌)仍是拥有所有方法的根登录。其他 公钥用 NIP-98 认证,并且只能运行通过 assignmethod 授予它们的方法 (supportedmethods 显示它们自己的子集)。权限、角色、邀请码和中继身份 管理保持仅管理员,因此被授权者永远无法提权。被封禁的公钥即使有授权也会被拒绝。
在公共 POST / 路由上提供
NIP-86 RPC 挂载在中继的公共 POST / 路由上。变更会以已认证身份记录在 限速审计日志中(每分钟最多 600 条)。超过 rpc.max_admin_body_bytes 的请求 会被 413 拒绝。