mirror of
https://github.com/nostr-protocol/nips.git
synced 2024-12-23 00:45:53 -05:00
add NIP-200: Nostr Over HTTP(S) (NoH)
Signed-off-by: Yonle <yonle@lecturify.net>
This commit is contained in:
parent
27fef638e2
commit
3e201f5352
15
11.md
15
11.md
|
@ -267,6 +267,21 @@ A URL pointing to an image to be used as an icon for the relay. Recommended to b
|
|||
}
|
||||
```
|
||||
|
||||
### NoH endpoints
|
||||
|
||||
URL Paths to NoH endpoints.
|
||||
|
||||
```json
|
||||
{
|
||||
"noh": {
|
||||
"req": "http://my-relay/__nostr/req",
|
||||
"publish": "http://my-relay/__nostr/pub",
|
||||
"auth": "http://my-relay/__nostr/auth"
|
||||
},
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
### Examples
|
||||
|
||||
As of 2 May 2023 the following command provided these results:
|
||||
|
|
46
200.md
Normal file
46
200.md
Normal file
|
@ -0,0 +1,46 @@
|
|||
NIP-200
|
||||
=======
|
||||
|
||||
Nostr relay communication over HTTP(s) (NoH)
|
||||
--------------------------------------------
|
||||
|
||||
`draft` `optional` `author:yonle`
|
||||
|
||||
This NIP describes the basic of communicating to relays over HTTP(S) requests.
|
||||
|
||||
## Communication between clients and relays
|
||||
|
||||
Relays may expose NoH endpoints that client could reach. Client may make HTTP requests to each relays endpoint for specified tasks as specified in `noh` field at `/.well-known/nostr.json`. Relays MAY limit number of requests from specific IP/Client/etc.
|
||||
|
||||
### From client to relay: getting events and sending event
|
||||
|
||||
In `noh` field at `/.well-known/nostr.json`, Client could make a request to `req` or `publish` endpoint.
|
||||
|
||||
When fetching events, Client can optionally specify filters directly into the URI search query:
|
||||
- `<req>?<filter>`
|
||||
|
||||
`<filter>` is a querystrings that determines what events will be received in that request. it can have the following attributes:
|
||||
|
||||
```
|
||||
ids=<a list of event ids separated by commas>&
|
||||
authors=<a list of lowercase pubkeys separated by commas>&
|
||||
kinds=<a list of kinds numbers separated by commas>&
|
||||
%23<single-letter (a-zA-Z)>=<a list of tag values separated by commas. for %23e — a list of event ids, for %23p — a list of event pubkeys>&
|
||||
since=<an integer unix timestamp in seconds, events must be newer than this to pass>&
|
||||
until=<an integer unix timestamp in seconds, events must be older than this to pass>&
|
||||
limit=<maximum number of events relays SHOULD return in the initial query>
|
||||
```
|
||||
|
||||
Request URL Examples:
|
||||
- `https://my-relay.com/__nostr/req?kinds=0,1&limit=10`
|
||||
- `https://my-relay.com/__nostr/req?authors=12345,67890`
|
||||
|
||||
To send event to relay, Client will need to make POST request to `publish` endpoint with POST body containing the JSON of the event.
|
||||
|
||||
### From relay to client: sending responses and notices
|
||||
|
||||
Every NoH response is a JSON body that contain the following JSON field:
|
||||
|
||||
- `status`: Request status code in integer. `0` means OK, `1` means invalid request, `2` means relay error.
|
||||
- `results`: Array of relay response. Usually contain events requested by client.
|
||||
- `notice`: Human readable error.
|
Loading…
Reference in New Issue
Block a user