diff options
| -rw-r--r-- | FA.md | 45 |
1 files changed, 45 insertions, 0 deletions
| @@ -0,0 +1,45 @@ | |||
| 1 | NIP-FA | ||
| 2 | ====== | ||
| 3 | |||
| 4 | Kind-scoped follows | ||
| 5 | ------------------- | ||
| 6 | |||
| 7 | `draft` `optional` | ||
| 8 | |||
| 9 | This NIP defines kind `967`, a kind-scoped follow event. | ||
| 10 | |||
| 11 | ```jsonc | ||
| 12 | { | ||
| 13 | "kind": 967, | ||
| 14 | "tags": [ | ||
| 15 | ["p", "<followed-pubkey>", 'relay-url'], | ||
| 16 | ["k", "<some-kind>"], | ||
| 17 | ["k", "<some-other-kind>"] | ||
| 18 | ] | ||
| 19 | } | ||
| 20 | ``` | ||
| 21 | |||
| 22 | Multiple `p` tags and multiple `k` tags are allowed. | ||
| 23 | |||
| 24 | The `k` tag(s) define the scope of the follows. | ||
| 25 | |||
| 26 | ### Unfollow action | ||
| 27 | |||
| 28 | Unfollowing is done by deleting the follow event, copying over the `k` tags from the follow event. | ||
| 29 | |||
| 30 | ```jsonc | ||
| 31 | { | ||
| 32 | "kind": 5, | ||
| 33 | "tags": [ | ||
| 34 | ["e", "<follow-event-id>"], | ||
| 35 | ["k", "<some-kind>"], | ||
| 36 | ["k", "<some-other-kind>"] | ||
| 37 | ] | ||
| 38 | } | ||
| 39 | ``` | ||
| 40 | |||
| 41 | ### Constructing specialized follow lists | ||
| 42 | |||
| 43 | 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. | ||
| 44 | |||
| 45 | 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. | ||