nips/200.md
Yonle 3e201f5352 add NIP-200: Nostr Over HTTP(S) (NoH)
Signed-off-by: Yonle <yonle@lecturify.net>
2024-01-05 21:56:18 +07:00

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.