nips/37.md
2024-12-19 15:23:12 +00:00

1.8 KiB

NIP-37

Draft Events

draft optional

This NIP defines kind 31234 as a private wrap for drafts of any other event kind.

The draft event is JSON-stringified, NIP44-encrypted to the signer's public key and placed inside the .content of the event.

An additional k tag identifies the kind of the draft event.

{
  "kind": 31234,
  "tags": [
    ["d", "<identifier>"],
    ["k", "<kind of the draft event>"],
    ["e", "<anchor event event id>", "<relay-url>"],
    ["a", "<anchor event address>", "<relay-url>"],
  ],
  "content": nip44Encrypt(JSON.stringify(draft_event)),
  // other fields
}

A blanked .content means this draft has been deleted by a client but relays still have the event.

Tags e and a identify one or more anchor events, such as parent events on replies.

Checkpoints

kind:1234 defines checkpoints that belong to a parent kind:31234 event. These can serve to provide a revision history of a parent event.

{
  "kind": 1234,
  "tags": [
    ["a", "31234:<pubkey>:<identifier>"]
  ],
  "content": nip44Encrypt(JSON.stringify(draft_event)),
}

Relay List for Private Content

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.

{
  "kind": 10013,
  "tags": [],
  "content": nip44Encrypt(JSON.stringify([
    ["relay", "wss://myrelay.mydomain.com"]
  ]))
  //...other fields
}

Relays listed in this event SHOULD be authed and only allow downloads to events signed by the authed user.

Clients SHOULD publish kind 10013 events to the author's NIP-65 write relays.