mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-12-22 16:35:52 -05:00
67 lines
1.9 KiB
Markdown
67 lines
1.9 KiB
Markdown
|
NIP-43
|
||
|
======
|
||
|
|
||
|
Relay Access Requests
|
||
|
---------------------
|
||
|
|
||
|
`draft` `optional`
|
||
|
|
||
|
This NIP defines a way for clients to request admission to relays enforcing
|
||
|
authentication as defined in NIP 42 by signing an ephemeral event.
|
||
|
|
||
|
## Join Request
|
||
|
|
||
|
This NIP defines kind `28934` events which are intended to allow clients to
|
||
|
request admission to a relay. It MUST have a `claim` tag containing an invite
|
||
|
code.
|
||
|
|
||
|
The event's `created_at` MUST be now, plus or minus a few minutes. Clients MAY
|
||
|
send a claim at any time, but MUST check for relay support via NIP 11. This is
|
||
|
to avoid non-compliant relays broadcasting invites to subscribers.
|
||
|
|
||
|
This event should be sent to a relay using the standard `EVENT` verb.
|
||
|
|
||
|
```jsonc
|
||
|
{
|
||
|
"kind": 28934,
|
||
|
"tags": [
|
||
|
["claim", "<invite code>"]
|
||
|
],
|
||
|
// ...other fields
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Upon receiving a claim, a relay MUST notify the client as to what the status
|
||
|
of the claim is using an `OK` message. Failed claims SHOULD use the same
|
||
|
standard `"restricted: "` prefix specified by NIP 42.
|
||
|
|
||
|
Some examples:
|
||
|
|
||
|
```
|
||
|
["OK", <event-id>, false, "restricted: That invite code is expired."]
|
||
|
["OK", <event-id>, false, "restricted: That is an invalid invite code."]
|
||
|
["OK", <event-id>, true, "claim-ignored: You are already a member of this relay."]
|
||
|
["OK", <event-id>, true, "claim-accepted: Welcome to wss://relay.bunk.skunk!"]
|
||
|
```
|
||
|
|
||
|
## Invite Request
|
||
|
|
||
|
Users may request a claim string from a relay by making a request for `kind 28935`
|
||
|
events. These events MUST NOT be considered valid unless signed by the same pubkey
|
||
|
as exists in the relay's NIP 11 document.
|
||
|
|
||
|
```jsonc
|
||
|
{
|
||
|
"kind": 28935,
|
||
|
"tags": [
|
||
|
["claim", "<invite code>"]
|
||
|
],
|
||
|
// ...other fields
|
||
|
}
|
||
|
```
|
||
|
|
||
|
Note that these events are in the `ephemeral` range, which means relays must explicitly
|
||
|
opt-in to this behavior by generating claims on the fly when requested. This allows relays
|
||
|
to improve security by issuing a different claim for each request, only issuing claims
|
||
|
to certain users, or expiring claims.
|