upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/12.md
diff options
context:
space:
mode:
authorfiatjaf_ <fiatjaf@gmail.com>2023-08-13 13:47:45 -0300
committerGitHub <noreply@github.com>2023-08-13 13:47:45 -0300
commit72bb8a128b2d7d3c2c654644cd68d0d0fe58a3b1 (patch)
tree9d2ee236bf72d540b5eca364a1ff60449dd9aa04 /12.md
parenta5047326d4d7c28e66c5d1262c252b86a1c8fe67 (diff)
merge nips 12, 16, 20 and 33 into nip 01 (#703)
Co-authored-by: Viktor Vsk <me@viktorvsk.com>
Diffstat (limited to '12.md')
-rw-r--r--12.md37
1 files changed, 2 insertions, 35 deletions
diff --git a/12.md b/12.md
index 7d1f46e..9357977 100644
--- a/12.md
+++ b/12.md
@@ -4,39 +4,6 @@ NIP-12
4Generic Tag Queries 4Generic Tag Queries
5------------------- 5-------------------
6 6
7`draft` `optional` `author:scsibug` `author:fiatjaf` 7`final` `mandatory` `author:scsibug` `author:fiatjaf`
8 8
9Relays may support subscriptions over arbitrary tags. `NIP-01` requires relays to respond to queries for `e` and `p` tags. This NIP allows any single-letter tag present in an event to be queried. 9Moved to [NIP-01](01.md).
10
11The `<filters>` object described in `NIP-01` is expanded to contain arbitrary keys with a `#` prefix. Any single-letter key in a filter beginning with `#` is a tag query, and MUST have a value of an array of strings. The filter condition matches if the event has a tag with the same name, and there is at least one tag value in common with the filter and event. The tag name is the letter without the `#`, and the tag value is the second element. Subsequent elements are ignored for the purposes of tag queries. Note that tag names are case-sensitive.
12
13Example Subscription Filter
14---------------------------
15
16The following provides an example of a filter that matches events of kind `1` with an `r` tag set to either `foo` or `bar`.
17
18```
19{
20 "kinds": [1],
21 "#r": ["foo", "bar"]
22}
23```
24
25Client Behavior
26---------------
27
28Clients SHOULD use the `supported_nips` field to learn if a relay supports generic tag queries. Clients MAY send generic tag queries to any relay, if they are prepared to filter out extraneous responses from relays that do not support this NIP.
29
30Rationale
31---------
32
33The decision to reserve only single-letter tags to be usable in queries allow applications to make use of tags for all sorts of metadata, as it is their main purpose, without worrying that they might be bloating relay indexes. That also makes relays more lightweight, of course. And if some application or user is abusing single-letter tags with the intention of bloating relays that becomes easier to detect as single-letter tags will hardly be confused with some actually meaningful metadata some application really wanted to attach to the event with no spammy intentions.
34
35Suggested Use Cases
36-------------------
37
38Motivating examples for generic tag queries are provided below. This NIP does not promote or standardize the use of any specific tag for any purpose.
39
40* Decentralized Commenting System: clients can comment on arbitrary web pages, and easily search for other comments, by using a `r` ("reference", in this case an URL) tag and value.
41* Location-specific Posts: clients can use a `g` ("geohash") tag to associate a post with a physical location. Clients can search for a set of geohashes of varying precisions near them to find local content.
42* Hashtags: clients can use simple `t` ("hashtag") tags to associate an event with an easily searchable topic name. Since Nostr events themselves are not searchable through the protocol, this provides a mechanism for user-driven search.