mirror of
https://github.com/nostr-protocol/nips.git
synced 2025-12-10 17:18:50 +00:00
Compare commits
1 Commits
kind-speci
...
kind-follo
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1187d2ba5d |
58
51.md
58
51.md
@@ -1,6 +1,8 @@
|
|||||||
# NIP-51
|
NIP-51
|
||||||
|
======
|
||||||
|
|
||||||
## Lists
|
Lists
|
||||||
|
-----
|
||||||
|
|
||||||
`draft` `optional`
|
`draft` `optional`
|
||||||
|
|
||||||
@@ -19,7 +21,7 @@ Standard lists use normal replaceable events, meaning users may only have a sing
|
|||||||
For example, _mute list_ can contain the public keys of spammers and bad actors users don't want to see in their feeds or receive annoying notifications from.
|
For example, _mute list_ can contain the public keys of spammers and bad actors users don't want to see in their feeds or receive annoying notifications from.
|
||||||
|
|
||||||
| name | kind | description | expected tag items |
|
| name | kind | description | expected tag items |
|
||||||
| ----------------- | ----- | ----------------------------------------------------------- | --------------------------------------------------------------------------------- |
|
| --- | --- | --- | --- |
|
||||||
| Mute list | 10000 | things the user doesn't want to see in their feeds | `"p"` (pubkeys), `"t"` (hashtags), `"word"` (lowercase string), `"e"` (threads) |
|
| Mute list | 10000 | things the user doesn't want to see in their feeds | `"p"` (pubkeys), `"t"` (hashtags), `"word"` (lowercase string), `"e"` (threads) |
|
||||||
| Pinned notes | 10001 | events the user intends to showcase in their profile page | `"e"` (kind:1 notes) |
|
| Pinned notes | 10001 | events the user intends to showcase in their profile page | `"e"` (kind:1 notes) |
|
||||||
| Bookmarks | 10003 | uncategorized, "global" list of things a user wants to save | `"e"` (kind:1 notes), `"a"` (kind:30023 articles), `"t"` (hashtags), `"r"` (URLs) |
|
| Bookmarks | 10003 | uncategorized, "global" list of things a user wants to save | `"e"` (kind:1 notes), `"a"` (kind:30023 articles), `"t"` (hashtags), `"r"` (URLs) |
|
||||||
@@ -42,25 +44,24 @@ For example, _relay sets_ can be displayed in a dropdown UI to give users the op
|
|||||||
|
|
||||||
Aside from their main identifier, the `"d"` tag, sets can optionally have a `"title"`, an `"image"` and a `"description"` tags that can be used to enhance their UI.
|
Aside from their main identifier, the `"d"` tag, sets can optionally have a `"title"`, an `"image"` and a `"description"` tags that can be used to enhance their UI.
|
||||||
|
|
||||||
| name | kind | description | expected tag items |
|
| name | kind | description | expected tag items |
|
||||||
| --------------------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
|
| --- | --- | --- | --- |
|
||||||
| Follow sets | 30000 | categorized groups of users a client may choose to check out in different circumstances | `"p"` (pubkeys) |
|
| Follow sets | 30000 | categorized groups of users a client may choose to check out in different circumstances | `"p"` (pubkeys) |
|
||||||
| Relay sets | 30002 | user-defined relay groups the user can easily pick and choose from during various operations | `"relay"` (relay URLs) |
|
| Relay sets | 30002 | user-defined relay groups the user can easily pick and choose from during various operations | `"relay"` (relay URLs) |
|
||||||
| Bookmark sets | 30003 | user-defined bookmarks categories , for when bookmarks must be in labeled separate groups | `"e"` (kind:1 notes), `"a"` (kind:30023 articles), `"t"` (hashtags), `"r"` (URLs) |
|
| Bookmark sets | 30003 | user-defined bookmarks categories , for when bookmarks must be in labeled separate groups | `"e"` (kind:1 notes), `"a"` (kind:30023 articles), `"t"` (hashtags), `"r"` (URLs) |
|
||||||
| Curation sets | 30004 | groups of articles picked by users as interesting and/or belonging to the same category | `"a"` (kind:30023 articles), `"e"` (kind:1 notes) |
|
| Curation sets | 30004 | groups of articles picked by users as interesting and/or belonging to the same category | `"a"` (kind:30023 articles), `"e"` (kind:1 notes) |
|
||||||
| Curation sets | 30005 | groups of videos picked by users as interesting and/or belonging to the same category | `"a"` (kind:34235 videos) |
|
| Curation sets | 30005 | groups of videos picked by users as interesting and/or belonging to the same category | `"a"` (kind:34235 videos) |
|
||||||
| Kind Curation sets | 30006 | groups of any kind of events picked by users as interesting and/or belonging to the same category<br>`"d"` tag MUST be the kind string | `"e"` or `"a"` |
|
| Kind mute sets | 30007 | mute pubkeys by kinds<br>`"d"` tag MUST be the kind string | `"p"` (pubkeys) |
|
||||||
| Kind mute sets | 30007 | mute pubkeys by kinds<br>`"d"` tag MUST be the kind string | `"p"` (pubkeys) |
|
| Interest sets | 30015 | interest topics represented by a bunch of "hashtags" | `"t"` (hashtags) |
|
||||||
| Interest sets | 30015 | interest topics represented by a bunch of "hashtags" | `"t"` (hashtags) |
|
| Emoji sets | 30030 | categorized emoji groups | `"emoji"` (see [NIP-30](30.md)) |
|
||||||
| Emoji sets | 30030 | categorized emoji groups | `"emoji"` (see [NIP-30](30.md)) |
|
| Release artifact sets | 30063 | groups of files of a software release | `"e"` (kind:1063 [file metadata](94.md) events), `"i"` (application identifier, typically reverse domain notation), `"version"` |
|
||||||
| Release artifact sets | 30063 | groups of files of a software release | `"e"` (kind:1063 [file metadata](94.md) events), `"i"` (application identifier, typically reverse domain notation), `"version"` |
|
|
||||||
|
|
||||||
## Deprecated standard lists
|
## Deprecated standard lists
|
||||||
|
|
||||||
Some clients have used these lists in the past, but they should work on transitioning to the [standard formats](#standard-lists) above.
|
Some clients have used these lists in the past, but they should work on transitioning to the [standard formats](#standard-lists) above.
|
||||||
|
|
||||||
| kind | "d" tag | use instead |
|
| kind | "d" tag | use instead |
|
||||||
| ----- | --------------- | ----------------------------- |
|
| --- | --- | --- |
|
||||||
| 30000 | `"mute"` | kind 10000 _mute list_ |
|
| 30000 | `"mute"` | kind 10000 _mute list_ |
|
||||||
| 30001 | `"pin"` | kind 10001 _pin list_ |
|
| 30001 | `"pin"` | kind 10001 _pin list_ |
|
||||||
| 30001 | `"bookmark"` | kind 10003 _bookmarks list_ |
|
| 30001 | `"bookmark"` | kind 10003 _bookmarks list_ |
|
||||||
@@ -96,26 +97,11 @@ Some clients have used these lists in the past, but they should work on transiti
|
|||||||
"tags": [
|
"tags": [
|
||||||
["d", "jvdy9i4"],
|
["d", "jvdy9i4"],
|
||||||
["name", "Yaks"],
|
["name", "Yaks"],
|
||||||
[
|
["picture", "https://cdn.britannica.com/40/188540-050-9AC748DE/Yak-Himalayas-Nepal.jpg"],
|
||||||
"picture",
|
["about", "The domestic yak, also known as the Tartary ox, grunting ox, or hairy cattle, is a species of long-haired domesticated cattle found throughout the Himalayan region of the Indian subcontinent, the Tibetan Plateau, Gilgit-Baltistan, Tajikistan and as far north as Mongolia and Siberia."],
|
||||||
"https://cdn.britannica.com/40/188540-050-9AC748DE/Yak-Himalayas-Nepal.jpg"
|
["a", "30023:26dc95542e18b8b7aec2f14610f55c335abebec76f3db9e58c254661d0593a0c:95ODQzw3ajNoZ8SyMDOzQ"],
|
||||||
],
|
["a", "30023:54af95542e18b8b7aec2f14610f55c335abebec76f3db9e58c254661d0593a0c:1-MYP8dAhramH9J5gJWKx"],
|
||||||
[
|
["a", "30023:f8fe95542e18b8b7aec2f14610f55c335abebec76f3db9e58c254661d0593a0c:D2Tbd38bGrFvU0bIbvSMt"],
|
||||||
"about",
|
|
||||||
"The domestic yak, also known as the Tartary ox, grunting ox, or hairy cattle, is a species of long-haired domesticated cattle found throughout the Himalayan region of the Indian subcontinent, the Tibetan Plateau, Gilgit-Baltistan, Tajikistan and as far north as Mongolia and Siberia."
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"a",
|
|
||||||
"30023:26dc95542e18b8b7aec2f14610f55c335abebec76f3db9e58c254661d0593a0c:95ODQzw3ajNoZ8SyMDOzQ"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"a",
|
|
||||||
"30023:54af95542e18b8b7aec2f14610f55c335abebec76f3db9e58c254661d0593a0c:1-MYP8dAhramH9J5gJWKx"
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"a",
|
|
||||||
"30023:f8fe95542e18b8b7aec2f14610f55c335abebec76f3db9e58c254661d0593a0c:D2Tbd38bGrFvU0bIbvSMt"
|
|
||||||
],
|
|
||||||
["e", "d78ba0d5dce22bfff9db0a9e996c9ef27e2c91051de0c4e1da340e0326b4941e"]
|
["e", "d78ba0d5dce22bfff9db0a9e996c9ef27e2c91051de0c4e1da340e0326b4941e"]
|
||||||
],
|
],
|
||||||
"content": "",
|
"content": "",
|
||||||
|
|||||||
45
FA.md
Normal file
45
FA.md
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
NIP-FA
|
||||||
|
======
|
||||||
|
|
||||||
|
Kind-scoped follows
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
`draft` `optional`
|
||||||
|
|
||||||
|
This NIP defines kind `967`, a kind-scoped follow event.
|
||||||
|
|
||||||
|
```jsonc
|
||||||
|
{
|
||||||
|
"kind": 967,
|
||||||
|
"tags": [
|
||||||
|
["p", "<followed-pubkey>", 'relay-url'],
|
||||||
|
["k", "<some-kind>"],
|
||||||
|
["k", "<some-other-kind>"]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Multiple `p` tags and multiple `k` tags are allowed.
|
||||||
|
|
||||||
|
The `k` tag(s) define the scope of the follows.
|
||||||
|
|
||||||
|
### Unfollow action
|
||||||
|
|
||||||
|
Unfollowing is done by deleting the follow event, copying over the `k` tags from the follow event.
|
||||||
|
|
||||||
|
```jsonc
|
||||||
|
{
|
||||||
|
"kind": 5,
|
||||||
|
"tags": [
|
||||||
|
["e", "<follow-event-id>"],
|
||||||
|
["k", "<some-kind>"],
|
||||||
|
["k", "<some-other-kind>"]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Constructing specialized follow lists
|
||||||
|
|
||||||
|
A client can fetch the events of the kinds they are interested in, and perhaps adjacent kinds if they choose to. For example, a client specialized in videos might also want to extend its computed follow list to include events related to live streams.
|
||||||
|
|
||||||
|
Clients can use the last `kind:967` and `kind:5` tagged with a `k` they care about and use the last `created_at` they have seen to REQ for updates.
|
||||||
Reference in New Issue
Block a user