upleb.uk

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

summaryrefslogtreecommitdiff
path: root/72.md
diff options
context:
space:
mode:
authorJon Staab <shtaab@gmail.com>2024-01-08 09:53:23 -0800
committerJon Staab <shtaab@gmail.com>2024-05-30 12:22:40 -0700
commit0ff2fa3212ca66e3f7177da431084d4fde9386cd (patch)
tree54a64604fdfbd2b528b190fea908448b7153879a /72.md
parentb765b3c0301958d46115b834872bbd0c8bac588c (diff)
Add title to NIP 72, mention cross-posting and clarify moderation options
Diffstat (limited to '72.md')
-rw-r--r--72.md29
1 files changed, 20 insertions, 9 deletions
diff --git a/72.md b/72.md
index 4bafce0..968a9ed 100644
--- a/72.md
+++ b/72.md
@@ -10,7 +10,7 @@ The goal of this NIP is to create moderator-approved public communities around a
10 10
11# Community Definition 11# Community Definition
12 12
13`kind:34550` SHOULD include any field that helps define the community and the set of moderators. `relay` tags MAY be used to describe the preferred relay to download requests and approvals. 13`Kind:34550` SHOULD include any field that helps define the community and the set of moderators. `relay` tags MAY be used to describe the preferred relay to download requests and approvals. A community definition event's `d` tag MAY double as its name, but if a `name` tag is provided, it SHOULD be displayed instead of the `d` tag.
14 14
15```jsonc 15```jsonc
16{ 16{
@@ -18,6 +18,7 @@ The goal of this NIP is to create moderator-approved public communities around a
18 "kind": 34550, 18 "kind": 34550,
19 "tags": [ 19 "tags": [
20 ["d", "<community-d-identifier>"], 20 ["d", "<community-d-identifier>"],
21 ["name", "<Community name>"],
21 ["description", "<Community description>"], 22 ["description", "<Community description>"],
22 ["image", "<Community image url>", "<Width>x<Height>"], 23 ["image", "<Community image url>", "<Width>x<Height>"],
23 24
@@ -38,9 +39,9 @@ The goal of this NIP is to create moderator-approved public communities around a
38} 39}
39``` 40```
40 41
41# New Post Request 42# Community Posts
42 43
43Any Nostr event can be submitted to a community by anyone for approval. Clients MUST add the community's `a` tag to the new post event in order to be presented for the moderator's approval. 44Any Nostr event can be posted to a community. Clients MUST add one or more community `a` tags, each with a recommended relay.
44 45
45```jsonc 46```jsonc
46{ 47{
@@ -53,11 +54,13 @@ Any Nostr event can be submitted to a community by anyone for approval. Clients
53} 54}
54``` 55```
55 56
56Community management clients MAY filter all mentions to a given `kind:34550` event and request moderators to approve each submission. Moderators MAY delete his/her approval of a post at any time using event deletions (See [NIP-09](09.md)). 57# Moderation
57 58
58# Post Approval by moderators 59An approval event MUST include one or more community `a` tags, an `e` or `a` tag pointing to the post, and the `p` tag of the author of the post (for approval notifications). `a` tag prefixes can be used to disambiguate between community and replaceable event pointers (community `a` tags always begin with `34550`).
59 60
60The post-approval event MUST include `a` tags of the communities the moderator is posting into (one or more), the `e` tag of the post and `p` tag of the author of the post (for approval notifications). The event SHOULD also include the stringified `post request` event inside the `.content` ([NIP-18-style](18.md)) and a `k` tag with the original post's event kind to allow filtering of approved posts by kind. 61The event SHOULD also include the JSON-stringified `post request` event inside the `.content`, and a `k` tag with the original post's event kind to allow filtering of approved posts by kind.
62
63Moderators MAY delete their approval of a post at any time using NIP 09 event deletions.
61 64
62```jsonc 65```jsonc
63{ 66{
@@ -76,13 +79,21 @@ The post-approval event MUST include `a` tags of the communities the moderator i
76 79
77It's recommended that multiple moderators approve posts to avoid deleting them from the community when a moderator is removed from the owner's list. In case the full list of moderators must be rotated, the new moderator set must sign new approvals for posts in the past or the community will restart. The owner can also periodically copy and re-sign of each moderator's approval events to make sure posts don't disappear with moderators. 80It's recommended that multiple moderators approve posts to avoid deleting them from the community when a moderator is removed from the owner's list. In case the full list of moderators must be rotated, the new moderator set must sign new approvals for posts in the past or the community will restart. The owner can also periodically copy and re-sign of each moderator's approval events to make sure posts don't disappear with moderators.
78 81
79Post Approvals of replaceable events can be created in three ways: (i) by tagging the replaceable event as an `e` tag if moderators want to approve each individual change to the repleceable event; (ii) by tagging the replaceable event as an `a` tag if the moderator authorizes the replaceable event author to make changes without additional approvals and (iii) by tagging the replaceable event with both its `e` and `a` tag which empowers clients to display the original and updated versions of the event, with appropriate remarks in the UI. Since relays are instructed to delete old versions of a replaceable event, the `.content` of an `e`-approval MUST have the specific version of the event or Clients might not be able to find that version of the content anywhere. 82Approvals of replaceable events can be created in three ways:
83
841. By tagging the replaceable event as an `e` tag if moderators want to approve each individual change to the replaceable event
852. By tagging the replaceable event as an `a` tag if the moderator authorizes the replaceable event author to make changes without additional approvals and
863. By tagging the replaceable event with both its `e` and `a` tag which empowers clients to display the original and updated versions of the event, with appropriate remarks in the UI.
87
88Since relays are instructed to delete old versions of a replaceable event, the `content` of an approval using an `e` tag MUST have the specific version of the event or clients might not be able to find that version of the content anywhere.
89
90# Cross-posting
80 91
81Clients SHOULD evaluate any non-`34550:*` `a` tag as posts to be included in all `34550:*` `a` tags. 92Clients MAY support cross-posting between communities by posting a NIP 18 `kind 6` or `kind 16` repost to one or more communities using `a` tags as described above. The `content` of the repost MUST be the original event, not the approval event.
82 93
83# Displaying 94# Displaying
84 95
85Community clients SHOULD display posts that have been approved by at least 1 moderator or by the community owner. 96Clients SHOULD display posts that have been approved by at least 1 moderator or by the community owner. Clients MAY disregard moderation and fetch community posts directly.
86 97
87The following filter displays the approved posts. 98The following filter displays the approved posts.
88 99