From 3760a6e3085b9ad7422e99c5b2045c6f3602fb2d Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 4 Sep 2025 10:50:33 -0400 Subject: [PATCH] NIP-53 Text Refinements and formatting fixes (#2052) --- 53.md | 49 +++++++++++++++++++++---------------------------- 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/53.md b/53.md index d64f3ef3..523a998b 100644 --- a/53.md +++ b/53.md @@ -6,13 +6,13 @@ Live Activities `draft` `optional` -Service providers want to offer live activities to the Nostr network in such a way that participants can easily log and query by clients. This NIP describes a general framework to advertise the involvement of pubkeys in such live activities. +This NIP introduces event kinds to advertise live spaces and the participation of pubkeys in them. -## Concepts +## Live Streaming -### Live Event +A special event with `kind:30311` "Live Streaming Event" is defined as an _addressable event_ whose tags advertise the content and participats of a live stream. -A special event with `kind:30311` "Live Event" is defined as an _addressable event_ of public `p` tags. Each `p` tag SHOULD have a **displayable** marker name for the current role (e.g. `Host`, `Speaker`, `Participant`) of the user in the event and the relay information MAY be empty. This event will be constantly updated as participants join and leave the activity. +Each `p` tag SHOULD have a **displayable** marker name for the current role (e.g. `Host`, `Speaker`, `Participant`) of the user in the event and the relay information MAY be empty. This event will be constantly updated as participants join and leave the activity. For example: @@ -69,7 +69,7 @@ Event `kind:1311` is live chat's channel message. Clients MUST include the `a` t { "kind": 1311, "tags": [ - ["a", "30311::", "", "root"], + ["a", "30311::", ""], ], "content": "Zaps to live streams is beautiful.", // other fields... @@ -84,13 +84,9 @@ Event `kind:1311` is live chat's channel message. Clients MUST include the `a` t Hosts may choose to pin one or more live chat messages by updating the `pinned` tags in the live event kind `30311`. -## Use Cases +### Examples -Common use cases include meeting rooms/workshops, watch-together activities, or event spaces, such as [zap.stream](https://zap.stream). - -## Example - -### Live Streaming +#### Live Streaming ```json { @@ -114,7 +110,7 @@ Common use cases include meeting rooms/workshops, watch-together activities, or } ``` -### Live Streaming chat message +#### Live Streaming chat message ```json { @@ -130,18 +126,13 @@ Common use cases include meeting rooms/workshops, watch-together activities, or } ``` -## Interactive Rooms and Meetings ------ +## Meeting Spaces -`draft` `optional` +Meeting spaces contain one or more video/audio rooms where users can join and participate in the streaming. -Service providers want to offer Interactive Rooms to the Nostr network in such a way that participants can easily log and query by clients. This NIP describes a general framework to advertise rooms and their associated events. +### Meeting Space Event (kind:30312) -## Concepts - -### Interactive Room (kind:30312) - -A special event with `kind:30312` "Interactive Room" defines the configuration and properties of a virtual interactive space. Each room has a unique identifier and can host multiple events/meetings. +A special event with `kind:30312` "Space Host" defines the configuration and properties of a virtual interactive space. Each space has a unique identifier and can host multiple events/meetings. ```jsonc { @@ -162,19 +153,20 @@ A special event with `kind:30312` "Interactive Room" defines the configuration a } ``` -Room properties: +Space properties: * MUST be either open, private or closed. Closed means the room is not in operation. * MAY specify access control policy for private rooms (e.g. invite-only, payment required) * MAY persist when not in use * MUST have at least one provider with "Host" role * MAY have multiple providers with different roles + Provider roles (p tags): * Host: Full room management capabilities * Moderator: Room moderation capabilities * Speaker: Allowed to present/speak * Optional proof field for role verification -### Room Meeting (kind:30313) +### Meeting Room Events (kind:30313) A special event with kind:30313 represents a scheduled or ongoing meeting within a room. It MUST reference its parent room using the d tag. @@ -183,7 +175,7 @@ A special event with kind:30313 represents a scheduled or ongoing meeting within "kind": 30313, "tags": [ ["d", ""], // Required: Event identifier - ["a", "30312::", "wss://nostr.example.com"], // Required: Reference to parent room, 'd' from 30312 + ["a", "30312::", "wss://nostr.example.com"], // Required: Reference to parent space, 'd' from 30312 ["title", ""], // Required: Meeting title ["summary", ""], // Optional: Meeting description ["image", ""], // Optional: Meeting image @@ -204,14 +196,15 @@ Event properties: * MUST have a start time * MAY track participant counts * MAY include participant roles specific to the event + Event management: * Clients SHOULD update event status regularly when live * Events without updates for 1 hour MAY be considered ended * starts and ends timestamps SHOULD be updated when status changes -Examples +### Examples -Interactive Room (kind:30312) +#### Meeting Space (kind:30312) ```jsonc { @@ -233,7 +226,7 @@ Interactive Room (kind:30312) } ``` -Conference Event (kind:30313) +#### Meeting room (kind:30313) ```jsonc { @@ -254,7 +247,7 @@ Conference Event (kind:30313) "content": "" } ``` -## Room Presence +### Room Presence New `kind: 10312` provides an event which signals presence of a listener.