NIP-53 Text Refinements and formatting fixes (#2052)

This commit is contained in:
Vitor Pamplona 2025-09-04 10:50:33 -04:00 committed by GitHub
parent 8c45ff5d96
commit 3760a6e308
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 21 additions and 28 deletions

49
53.md
View File

@ -6,13 +6,13 @@ Live Activities
`draft` `optional` `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: For example:
@ -69,7 +69,7 @@ Event `kind:1311` is live chat's channel message. Clients MUST include the `a` t
{ {
"kind": 1311, "kind": 1311,
"tags": [ "tags": [
["a", "30311:<Community event author pubkey>:<d-identifier of the community>", "<Optional relay url>", "root"], ["a", "30311:<Community event author pubkey>:<d-identifier of the community>", "<Optional relay url>"],
], ],
"content": "Zaps to live streams is beautiful.", "content": "Zaps to live streams is beautiful.",
// other fields... // 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`. 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). #### Live Streaming
## Example
### Live Streaming
```json ```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 ```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 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.
### 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.
```jsonc ```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. * 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 specify access control policy for private rooms (e.g. invite-only, payment required)
* MAY persist when not in use * MAY persist when not in use
* MUST have at least one provider with "Host" role * MUST have at least one provider with "Host" role
* MAY have multiple providers with different roles * MAY have multiple providers with different roles
Provider roles (p tags): Provider roles (p tags):
* Host: Full room management capabilities * Host: Full room management capabilities
* Moderator: Room moderation capabilities * Moderator: Room moderation capabilities
* Speaker: Allowed to present/speak * Speaker: Allowed to present/speak
* Optional proof field for role verification * 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. 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, "kind": 30313,
"tags": [ "tags": [
["d", "<event-unique-identifier>"], // Required: Event identifier ["d", "<event-unique-identifier>"], // Required: Event identifier
["a", "30312:<pubkey>:<room-id>", "wss://nostr.example.com"], // Required: Reference to parent room, 'd' from 30312 ["a", "30312:<pubkey>:<room-id>", "wss://nostr.example.com"], // Required: Reference to parent space, 'd' from 30312
["title", "<meeting-title>"], // Required: Meeting title ["title", "<meeting-title>"], // Required: Meeting title
["summary", "<description>"], // Optional: Meeting description ["summary", "<description>"], // Optional: Meeting description
["image", "<preview image url>"], // Optional: Meeting image ["image", "<preview image url>"], // Optional: Meeting image
@ -204,14 +196,15 @@ Event properties:
* MUST have a start time * MUST have a start time
* MAY track participant counts * MAY track participant counts
* MAY include participant roles specific to the event * MAY include participant roles specific to the event
Event management: Event management:
* Clients SHOULD update event status regularly when live * Clients SHOULD update event status regularly when live
* Events without updates for 1 hour MAY be considered ended * Events without updates for 1 hour MAY be considered ended
* starts and ends timestamps SHOULD be updated when status changes * starts and ends timestamps SHOULD be updated when status changes
Examples ### Examples
Interactive Room (kind:30312) #### Meeting Space (kind:30312)
```jsonc ```jsonc
{ {
@ -233,7 +226,7 @@ Interactive Room (kind:30312)
} }
``` ```
Conference Event (kind:30313) #### Meeting room (kind:30313)
```jsonc ```jsonc
{ {
@ -254,7 +247,7 @@ Conference Event (kind:30313)
"content": "" "content": ""
} }
``` ```
## Room Presence ### Room Presence
New `kind: 10312` provides an event which signals presence of a listener. New `kind: 10312` provides an event which signals presence of a listener.