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:
Diffstat (limited to '72.md')
-rw-r--r--72.md12
1 files changed, 6 insertions, 6 deletions
diff --git a/72.md b/72.md
index c0fffff..5a8be0a 100644
--- a/72.md
+++ b/72.md
@@ -12,7 +12,7 @@ The goal of this NIP is to create moderator-approved public communities around a
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.
14 14
15```json 15```jsonc
16{ 16{
17 "created_at": <Unix timestamp in seconds>, 17 "created_at": <Unix timestamp in seconds>,
18 "kind": 34550, 18 "kind": 34550,
@@ -42,14 +42,14 @@ The goal of this NIP is to create moderator-approved public communities around a
42 42
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. 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.
44 44
45```json 45```jsonc
46{ 46{
47 "kind": 1, 47 "kind": 1,
48 "tags": [ 48 "tags": [
49 ["a", "34550:<community event author pubkey>:<community-d-identifier>", "<optional-relay-url>"], 49 ["a", "34550:<community event author pubkey>:<community-d-identifier>", "<optional-relay-url>"],
50 ], 50 ],
51 "content": "hello world", 51 "content": "hello world",
52 ... 52 // ...
53} 53}
54``` 54```
55 55
@@ -59,7 +59,7 @@ Community management clients MAY filter all mentions to a given `kind:34550` eve
59 59
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. 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.
61 61
62```json 62```jsonc
63{ 63{
64 "pubkey": "<32-bytes lowercase hex-encoded public key of the event creator>", 64 "pubkey": "<32-bytes lowercase hex-encoded public key of the event creator>",
65 "kind": 4550, 65 "kind": 4550,
@@ -70,13 +70,13 @@ The post-approval event MUST include `a` tags of the communities the moderator i
70 ["k", "<post-request-kind>"] 70 ["k", "<post-request-kind>"]
71 ], 71 ],
72 "content": "<the full approved event, JSON-encoded>", 72 "content": "<the full approved event, JSON-encoded>",
73 ... 73 // ...
74} 74}
75``` 75```
76 76
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. 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.
78 78
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. 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 replaceable 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.
80 80
81Clients SHOULD evaluate any non-`34550:*` `a` tag as posts to be included in all `34550:*` `a` tags. 81Clients SHOULD evaluate any non-`34550:*` `a` tag as posts to be included in all `34550:*` `a` tags.
82 82