2024-06-24 14:35:12 -04:00
NIP-86
2024-06-23 13:13:47 -04:00
======
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.
2024-07-16 13:57:42 -04:00
When a relay receives an HTTP(s) request with 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:
2024-06-23 13:13:47 -04:00
```json
{
"method": "< method-name > ",
"params": ["< array > ", "< of > ", "< parameters > "]
}
```
Then it should return a response in the format
```json
{
"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` :
2024-06-24 14:44:28 -04:00
- params: `["<32-byte-hex-public-key>", "<optional-reason>"]`
2024-06-23 13:13:47 -04:00
- result: `true` (a boolean always set to `true` )
* `listbannedpubkeys` :
- params: `[]`
2024-06-24 14:44:28 -04:00
- result: `[{"pubkey": "<32-byte-hex>", "reason": "<optional-reason>"}, ...]` , an array of objects
2024-06-23 13:13:47 -04:00
* `allowpubkey` :
2024-06-24 14:44:28 -04:00
- params: `["<32-byte-hex-public-key>", "<optional-reason>"]`
2024-06-23 13:13:47 -04:00
- result: `true` (a boolean always set to `true` )
* `listallowedpubkeys` :
- params: `[]`
2024-06-24 14:44:28 -04:00
- result: `[{"pubkey": "<32-byte-hex>", "reason": "<optional-reason>"}, ...]` , an array of objects
* `listeventsneedingmoderation` :
- params: `[]`
- result: `[{"id": "<32-byte-hex>", "reason": "<optional-reason>"}]` , an array of objects
* `allowevent` :
- params: `["<32-byte-hex-event-id>", "<optional-reason>"]`
- result: `true` (a boolean always set to `true` )
2024-06-23 13:13:47 -04:00
* `banevent` :
2024-06-24 14:44:28 -04:00
- params: `["<32-byte-hex-event-id>", "<optional-reason>"]`
2024-06-23 13:13:47 -04:00
- result: `true` (a boolean always set to `true` )
* `listbannedevents` :
- params: `[]`
2024-06-24 14:44:28 -04:00
- result: `[{"id": "<32-byte hex>", "reason": "<optional-reason>"}, ...]` , an array of objects
* `changerelayname` :
- params: `["<new-name>"]`
- result: `true` (a boolean always set to `true` )
* `changerelaydescription` :
- params: `["<new-description>"]`
- result: `true` (a boolean always set to `true` )
* `changerelayicon` :
- params: `["<new-icon-url>"]`
- result: `true` (a boolean always set to `true` )
* `allowkind` :
- params: `[<kind-number>]`
- result: `true` (a boolean always set to `true` )
* `disallowkind` :
- params: `[<kind-number>]`
- result: `true` (a boolean always set to `true` )
* `listallowedkinds` :
- params: `[]`
- result: `[<kind-number>, ...]` , an array of numbers
* `blockip` :
- params: `["<ip-address>", "<optional-reason>"]`
- result: `true` (a boolean always set to `true` )
* `unblockip` :
- params: `["<ip-address>"]`
- result: `true` (a boolean always set to `true` )
* `listblockedips` :
- params: `[]`
- result: `[{"ip": "<ip-address>", "reason": "<optional-reason>"}, ...]` , an array of objects
2024-07-09 16:05:23 -04:00
### Authorization
2024-07-16 13:56:52 -04:00
The request must contain an `Authorization` header with a valid [NIP-98 ](./98.md ) event, except the `payload` tag is required. The `u` tag is the relay URL.
If `Authorization` is not provided or is invalid, the endpoint should return a 401 response.