diff options
| author | Pablo Fernandez <pfer@me.com> | 2024-12-19 15:17:55 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-19 15:17:55 +0000 |
| commit | 8d144906923132a245e50951464e1841478c923b (patch) | |
| tree | fb54da10e9eccd2ee36dc9e2a40ca9b8f2ceac8a | |
| parent | 561059ff85c171b87a12b8381b724b4afc569a97 (diff) | |
| parent | 306be43fabf7a95b3eef9d5363e1c3411055337f (diff) | |
Merge pull request #1124 from vitorpamplona/draft-event
Generic Draft Event
| -rw-r--r-- | 37.md | 50 | ||||
| -rw-r--r-- | README.md | 2 |
2 files changed, 52 insertions, 0 deletions
| @@ -0,0 +1,50 @@ | |||
| 1 | NIP-37 | ||
| 2 | ====== | ||
| 3 | |||
| 4 | Draft Events | ||
| 5 | ------------ | ||
| 6 | |||
| 7 | `draft` `optional` | ||
| 8 | |||
| 9 | This NIP defines kind `31234` as a private wrap for drafts of any other event kind. | ||
| 10 | |||
| 11 | The draft event is JSON-stringified, [NIP44-encrypted](44.md) to the signer's public key and placed inside the `.content` of the event. | ||
| 12 | |||
| 13 | An additional `k` tag identifies the kind of the draft event. | ||
| 14 | |||
| 15 | ```js | ||
| 16 | { | ||
| 17 | "kind": 31234, | ||
| 18 | "tags": [ | ||
| 19 | ["d", "<identifier>"], | ||
| 20 | ["k", "<kind of the draft event>"], | ||
| 21 | ["e", "<anchor event event id>", "<relay-url>"], | ||
| 22 | ["a", "<anchor event address>", "<relay-url>"], | ||
| 23 | ], | ||
| 24 | "content": nip44Encrypt(JSON.stringify(draft_event)), | ||
| 25 | // other fields | ||
| 26 | } | ||
| 27 | ``` | ||
| 28 | |||
| 29 | A blanked `.content` means this draft has been deleted by a client but relays still have the event. | ||
| 30 | |||
| 31 | Tags `e` and `a` identify one or more anchor events, such as parent events on replies. | ||
| 32 | |||
| 33 | ## Relay List for Private Content | ||
| 34 | |||
| 35 | Kind `10013` indicates the user's preferred relays to store private events like Drafts. The event MUST include a list of `relay` URLs in private tags. Private tags are JSON Stringified, NIP-44-encrypted to the signer's keys and placed inside the .content of the event. | ||
| 36 | |||
| 37 | ```js | ||
| 38 | { | ||
| 39 | "kind": 10013, | ||
| 40 | "tags": [], | ||
| 41 | "content": nip44Encrypt(JSON.stringify([ | ||
| 42 | ["relay", "wss://myrelay.mydomain.com"] | ||
| 43 | ])) | ||
| 44 | //...other fields | ||
| 45 | } | ||
| 46 | ``` | ||
| 47 | |||
| 48 | Relays listed in this event SHOULD be authed and only allow downloads to events signed by the authed user. | ||
| 49 | |||
| 50 | Clients SHOULD publish kind `10013` events to the author's [NIP-65](65.md) `write` relays. | ||
| @@ -54,6 +54,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos | |||
| 54 | - [NIP-34: `git` stuff](34.md) | 54 | - [NIP-34: `git` stuff](34.md) |
| 55 | - [NIP-35: Torrents](35.md) | 55 | - [NIP-35: Torrents](35.md) |
| 56 | - [NIP-36: Sensitive Content](36.md) | 56 | - [NIP-36: Sensitive Content](36.md) |
| 57 | - [NIP-37: Draft Events](37.md) | ||
| 57 | - [NIP-38: User Statuses](38.md) | 58 | - [NIP-38: User Statuses](38.md) |
| 58 | - [NIP-39: External Identities in Profiles](39.md) | 59 | - [NIP-39: External Identities in Profiles](39.md) |
| 59 | - [NIP-40: Expiration Timestamp](40.md) | 60 | - [NIP-40: Expiration Timestamp](40.md) |
| @@ -213,6 +214,7 @@ They exist to document what may be implemented by [Nostr](https://github.com/nos | |||
| 213 | | `30618` | Repository state announcements | [34](34.md) | | 214 | | `30618` | Repository state announcements | [34](34.md) | |
| 214 | | `30818` | Wiki article | [54](54.md) | | 215 | | `30818` | Wiki article | [54](54.md) | |
| 215 | | `30819` | Redirects | [54](54.md) | | 216 | | `30819` | Redirects | [54](54.md) | |
| 217 | | `31234` | Draft Event | [37](37.md) | | ||
| 216 | | `31388` | Link Set | [Corny Chat][cornychat-linkset] | | 218 | | `31388` | Link Set | [Corny Chat][cornychat-linkset] | |
| 217 | | `31890` | Feed | [NUD: Custom Feeds][NUD: Custom Feeds] | | 219 | | `31890` | Feed | [NUD: Custom Feeds][NUD: Custom Feeds] | |
| 218 | | `31922` | Date-Based Calendar Event | [52](52.md) | | 220 | | `31922` | Date-Based Calendar Event | [52](52.md) | |