Skip to content

NIP-52E/52R: private calendar events, busy lists and recurring event support#2351

Open
geralt-debugs wants to merge 2 commits into
nostr-protocol:masterfrom
geralt-debugs:calendar_nip_updates
Open

NIP-52E/52R: private calendar events, busy lists and recurring event support#2351
geralt-debugs wants to merge 2 commits into
nostr-protocol:masterfrom
geralt-debugs:calendar_nip_updates

Conversation

@geralt-debugs

@geralt-debugs geralt-debugs commented May 17, 2026

Copy link
Copy Markdown

Introduces two companion extensions to NIP-52:


NIP-52R - Recurring Events

Extends NIP-52 with RRULE-based recurrence using L/l label tags inside event payloads.


NIP-52E - Private Calendar Events

Adds a privacy layer on top of NIP-52 using a view key pattern (NIP-44 self-encryption):

  • 32678 - Private time-based calendar event (encrypted equivalent of 31923)
  • 32681 - Private day event (encrypted equivalent of 31922)
  • 1052 - Calendar event gift wrap (NIP-59) for distributing view keys to participants
  • 32123 - Private calendar list (self-encrypted, owner-only)
  • 31926 - Public busy list (signals unavailability without leaking event details)

Only the d tag is public; all event content lives in the encrypted content field. Participants receive the
viewKey (nsec) via gift wrap and can decrypt independently of the author.

Full protocol flows are specified for: creating a private event, receiving and accepting an invitation, and
loading calendar events at startup.


Closing #2027 in favour of this

@geralt-debugs geralt-debugs changed the title NIP-52E/52R: private calendar events and recurring event support NIP-52E/52R: private calendar events, busy lists and recurring event support May 17, 2026
@geralt-debugs

Copy link
Copy Markdown
Author

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant