nips/87.md
2024-06-23 14:13:47 -03:00

1.8 KiB

NIP-87

Relay Management API

draft optional

Relays may provide an API for performing management tasks. This is made available as a JSON-RPC-like request-response protocol over HTTP, on the same URI as the relay's websocket.

When a relay receives an HTTP(s) request with an Authorization header and a Content-Type header of application/nostr+json+rpc to a URI supporting WebSocket upgrades, it should parse the request as a JSON document with the following fields:

{
  "method": "<method-name>",
  "params": ["<array>", "<of>", "<parameters>"]
}

Then it should return a response in the format

{
  "result": {"<arbitrary>": "<value>"},
  "error": "<optional error message, if the call has errored>"
}

This is the list of methods that may be supported:

  • supportedmethods:
    • params: []
    • result: ["<method-name>", "<method-name>", ...] (an array with the names of all the other supported methods)
  • banpubkey:
    • params: ["<a 32-byte hex public key>", "<optional reason>"]
    • result: true (a boolean always set to true)
  • listbannedpubkeys:
    • params: []
    • result: [{"pubkey": "<32-byte hex>", "reason": "<optional reason>"}, ...], an array of objects
  • allowpubkey:
    • params: ["<a 32-byte hex public key>", "<optional reason>"]
    • result: true (a boolean always set to true)
  • listallowedpubkeys:
    • params: []
    • result: [{"pubkey": "<32-byte hex>", "reason": "<optional reason>"}, ...], an array of objects
  • banevent:
    • params: ["<a 32-byte hex event id>", "<optional reason>"]
    • result: true (a boolean always set to true)
  • listbannedevents:
    • params: []
    • result: [{"id": "<32-byte hex>", "reason": "<optional reason>"}, ...], an array of objects