Skip to content

Kind 31925: Calendar Event RSVP ​

Overview ​

A calendar event RSVP is a response to a calendar event that indicates a user's attendance intention. It allows users to specify whether they will attend, tentatively attend, or decline a calendar event, and optionally indicate their free/busy status during the event's timeframe.

Specification ​

PropertyValue
Kind Number31925
Event RangeAddressable
Defined inNIP-52

Content Format ​

The content field is optional and should contain a free-form note that adds more context to this calendar event response.

Tags ​

Tag NameDescriptionFormatRequired
aCoordinates to a calendar event being responded to["a", "<31922 or 31923>:<calendar event author pubkey>:<d-identifier of calendar event>", "<optional relay URL>"]Yes
eEvent ID of a calendar event being responded to["e", "<kind 31922 or 31923 event id>", "<optional recommended relay URL>"]No
dUniversally unique identifier (UUID)["d", "<UUID>"]Yes
statusAttendance status["status", "<accepted/declined/tentative>"]Yes
fbFree or busy status["fb", "<free/busy>"]No
pPubkey of the author of the calendar event["p", "<hex pubkey of kind 31922 or 31923 event>", "<optional recommended relay URL>"]No

Client Behavior ​

Clients should:

  • Generate a UUID when creating a new calendar event RSVP
  • Allow users to respond to calendar events with their attendance intention
  • Prompt users to RSVP if they are tagged in a calendar event
  • Optionally prompt calendar event creators to invite users who have RSVP'd but were not initially invited
  • Consider an RSVP with an e tag as applicable only to the specific revision of the calendar event
  • Ignore the fb tag if the status is set to declined

Relay Behavior ​

Relays should handle these events like any other addressable event, allowing them to be retrieved, updated, and deleted according to standard Nostr protocols.

Use Cases ​

  • Responding to meeting invitations
  • Tracking event attendance
  • Managing participant lists for calendar events
  • Determining if someone is available or busy during a specific timeframe

Example ​

json
{
  "id": "d71c61cf3ede31d79ca9bd863a39c0dcfd94ceff88ce74d03484ad41a9a8bd36",
  "pubkey": "fa984bd7dbb282f07e16e7ae87b26a2a7b9b90b7246a44771f0cf5ae58018f52",
  "created_at": 1671217800,
  "kind": 31925,
  "tags": [
    ["e", "e2c7909bd47fce336edee4ccd32894181d08ea2c4f33b27f1f80149ae28f4d56", "wss://relay.example.com"],
    ["a", "31923:79dff8f82963424e1852174ed276b6715c4ccc9777e489234a363a43d7c73143:7d9fea92-da3b-4f2d-9db8-e27c1b8cd391", "wss://relay.example.com"],
    ["d", "c9e8a2b1-d5c1-4f3a-b86e-7a98f3d2e1c5"],
    ["status", "accepted"],
    ["fb", "busy"],
    ["p", "79dff8f82963424e1852174ed276b6715c4ccc9777e489234a363a43d7c73143", "wss://relay.example.com"]
  ],
  "content": "I'll be attending and will prepare the demo we discussed.",
  "sig": "f2a1bc05e834e6c6c097d82a18b9c33f805ea8373f008d25a5b971ef6a08d729df152cf5394cb1b44a1fbd76a091a1ec95bc9bd7520505b7cfa0e1a7bb3db72f"
}

References ​

Notes ​

  • NIP-52 intentionally does not define who is authorized to attend a calendar event if the user who RSVP'd has not been tagged. It is up to the calendar event creator to determine the semantics.
  • NIP-52 also intentionally does not define what happens if a calendar event changes after an RSVP is submitted.
  • If an e tag is present, clients should interpret it as an indication that the RSVP is a response to that specific revision of the calendar event.