Appearance
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
Property | Value |
---|---|
Kind Number | 31925 |
Event Range | Addressable |
Defined in | NIP-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 Name | Description | Format | Required |
---|---|---|---|
a | Coordinates to a calendar event being responded to | ["a", "<31922 or 31923>:<calendar event author pubkey>:<d-identifier of calendar event>", "<optional relay URL>"] | Yes |
e | Event ID of a calendar event being responded to | ["e", "<kind 31922 or 31923 event id>", "<optional recommended relay URL>"] | No |
d | Universally unique identifier (UUID) | ["d", "<UUID>"] | Yes |
status | Attendance status | ["status", "<accepted/declined/tentative>"] | Yes |
fb | Free or busy status | ["fb", "<free/busy>"] | No |
p | Pubkey 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 thestatus
is set todeclined
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
Related Kinds
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.