Signed-off-by: Yonle <yonle@lecturify.net>
2.1 KiB
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.