mirror of
https://github.com/nostr-protocol/nips.git
synced 2025-12-08 16:18:50 +00:00
Compare commits
3 Commits
kind-speci
...
semisol/eo
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
10d8a749e9 | ||
|
|
053d07e0ef | ||
|
|
46f8133cd4 |
52
91.md
Normal file
52
91.md
Normal file
@@ -0,0 +1,52 @@
|
||||
NIP-91
|
||||
======
|
||||
|
||||
EOSE Extensions
|
||||
---------------
|
||||
|
||||
`draft` `optional`
|
||||
|
||||
This NIP defines an extension to the EOSE message that allows relays to convey additional information to clients.
|
||||
|
||||
## Extended EOSE
|
||||
|
||||
An extended EOSE is an EOSE message, with the 2nd parameter being the "extensions object". For example: `["EOSE","example-sub",{"example_ext":"example value"}]`
|
||||
|
||||
An EOSE extension is a field in the extensions object. This may contain any value.
|
||||
|
||||
Clients MUST NOT rely on relays implementing any extensions.
|
||||
|
||||
## Extensions
|
||||
|
||||
This NIP defines a set of standard extensions.
|
||||
|
||||
### `next_created_at`
|
||||
`recommended`
|
||||
|
||||
The value of this extension MUST be an integer if present, and should specify the next `until` value the client should use for pagination.
|
||||
This MAY be higher or lower than the lowest `created_at`, and the clients SHOULD NOT perform any modifications to this value.
|
||||
|
||||
### `cursor`
|
||||
|
||||
The value of this extension MUST be a string or `null` if present, and represents a cursor the client can use to paginate this query.
|
||||
If the value is `null`, then it indicates that no more events are available for the given set of filters.
|
||||
To get more events, the client MUST send a `REQ` with the same filters (except limit, which can be changed), and the `cursor` string
|
||||
in the 1st filter with the key `cursor`. Example:
|
||||
```jsonc
|
||||
< ["REQ", "examplereq1", {"kinds": [1], "limit": 1}, {"authors": ["..."], "limit": 1}]
|
||||
> ["EVENT", "examplereq1", ...]
|
||||
> ["EOSE", "examplereq1", {"cursor": "example-cursor-string", ...}]
|
||||
< ["CLOSE", "examplereq1"]
|
||||
< ["REQ", "examplereq2", {"kinds": [1], "limit": 5, "cursor": "example-cursor-string"}, {"authors": ["..."], "limit": 5}]
|
||||
> ["EVENT", "examplereq2", ...]
|
||||
...
|
||||
```
|
||||
|
||||
This cursor MUST be valid for the duration of the connection, and MAY be valid in a new connection. A relay may indicate a cursor is no longer valid
|
||||
by sending a CLOSED with the prefix `bad-cursor: `.
|
||||
|
||||
### `auth_recommended`
|
||||
|
||||
The value of this extension MUST be a boolean if present, and indicates if the client should `AUTH` to get more events that match this query.
|
||||
This is a less disruptive alternative to `CLOSED` with `auth-required:` for filters that don't explicitly ask for access controlled events,
|
||||
but may match them.
|
||||
Reference in New Issue
Block a user