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 拒絕。