diff options
| -rw-r--r-- | 53.md | 49 |
1 files changed, 21 insertions, 28 deletions
| @@ -6,13 +6,13 @@ Live Activities | |||
| 6 | 6 | ||
| 7 | `draft` `optional` | 7 | `draft` `optional` |
| 8 | 8 | ||
| 9 | 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. | 9 | This NIP introduces event kinds to advertise live spaces and the participation of pubkeys in them. |
| 10 | 10 | ||
| 11 | ## Concepts | 11 | ## Live Streaming |
| 12 | 12 | ||
| 13 | ### Live Event | 13 | 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. |
| 14 | 14 | ||
| 15 | 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. | 15 | 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. |
| 16 | 16 | ||
| 17 | For example: | 17 | For example: |
| 18 | 18 | ||
| @@ -69,7 +69,7 @@ Event `kind:1311` is live chat's channel message. Clients MUST include the `a` t | |||
| 69 | { | 69 | { |
| 70 | "kind": 1311, | 70 | "kind": 1311, |
| 71 | "tags": [ | 71 | "tags": [ |
| 72 | ["a", "30311:<Community event author pubkey>:<d-identifier of the community>", "<Optional relay url>", "root"], | 72 | ["a", "30311:<Community event author pubkey>:<d-identifier of the community>", "<Optional relay url>"], |
| 73 | ], | 73 | ], |
| 74 | "content": "Zaps to live streams is beautiful.", | 74 | "content": "Zaps to live streams is beautiful.", |
| 75 | // other fields... | 75 | // other fields... |
| @@ -84,13 +84,9 @@ Event `kind:1311` is live chat's channel message. Clients MUST include the `a` t | |||
| 84 | 84 | ||
| 85 | Hosts may choose to pin one or more live chat messages by updating the `pinned` tags in the live event kind `30311`. | 85 | Hosts may choose to pin one or more live chat messages by updating the `pinned` tags in the live event kind `30311`. |
| 86 | 86 | ||
| 87 | ## Use Cases | 87 | ### Examples |
| 88 | 88 | ||
| 89 | Common use cases include meeting rooms/workshops, watch-together activities, or event spaces, such as [zap.stream](https://zap.stream). | 89 | #### Live Streaming |
| 90 | |||
| 91 | ## Example | ||
| 92 | |||
| 93 | ### Live Streaming | ||
| 94 | 90 | ||
| 95 | ```json | 91 | ```json |
| 96 | { | 92 | { |
| @@ -114,7 +110,7 @@ Common use cases include meeting rooms/workshops, watch-together activities, or | |||
| 114 | } | 110 | } |
| 115 | ``` | 111 | ``` |
| 116 | 112 | ||
| 117 | ### Live Streaming chat message | 113 | #### Live Streaming chat message |
| 118 | 114 | ||
| 119 | ```json | 115 | ```json |
| 120 | { | 116 | { |
| @@ -130,18 +126,13 @@ Common use cases include meeting rooms/workshops, watch-together activities, or | |||
| 130 | } | 126 | } |
| 131 | ``` | 127 | ``` |
| 132 | 128 | ||
| 133 | ## Interactive Rooms and Meetings | 129 | ## Meeting Spaces |
| 134 | ----- | ||
| 135 | |||
| 136 | `draft` `optional` | ||
| 137 | 130 | ||
| 138 | 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. | 131 | Meeting spaces contain one or more video/audio rooms where users can join and participate in the streaming. |
| 139 | 132 | ||
| 140 | ## Concepts | 133 | ### Meeting Space Event (kind:30312) |
| 141 | 134 | ||
| 142 | ### Interactive Room (kind:30312) | 135 | 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. |
| 143 | |||
| 144 | 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. | ||
| 145 | 136 | ||
| 146 | ```jsonc | 137 | ```jsonc |
| 147 | { | 138 | { |
| @@ -162,19 +153,20 @@ A special event with `kind:30312` "Interactive Room" defines the configuration a | |||
| 162 | } | 153 | } |
| 163 | ``` | 154 | ``` |
| 164 | 155 | ||
| 165 | Room properties: | 156 | Space properties: |
| 166 | * MUST be either open, private or closed. Closed means the room is not in operation. | 157 | * MUST be either open, private or closed. Closed means the room is not in operation. |
| 167 | * MAY specify access control policy for private rooms (e.g. invite-only, payment required) | 158 | * MAY specify access control policy for private rooms (e.g. invite-only, payment required) |
| 168 | * MAY persist when not in use | 159 | * MAY persist when not in use |
| 169 | * MUST have at least one provider with "Host" role | 160 | * MUST have at least one provider with "Host" role |
| 170 | * MAY have multiple providers with different roles | 161 | * MAY have multiple providers with different roles |
| 162 | |||
| 171 | Provider roles (p tags): | 163 | Provider roles (p tags): |
| 172 | * Host: Full room management capabilities | 164 | * Host: Full room management capabilities |
| 173 | * Moderator: Room moderation capabilities | 165 | * Moderator: Room moderation capabilities |
| 174 | * Speaker: Allowed to present/speak | 166 | * Speaker: Allowed to present/speak |
| 175 | * Optional proof field for role verification | 167 | * Optional proof field for role verification |
| 176 | 168 | ||
| 177 | ### Room Meeting (kind:30313) | 169 | ### Meeting Room Events (kind:30313) |
| 178 | 170 | ||
| 179 | 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. | 171 | 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. |
| 180 | 172 | ||
| @@ -183,7 +175,7 @@ A special event with kind:30313 represents a scheduled or ongoing meeting within | |||
| 183 | "kind": 30313, | 175 | "kind": 30313, |
| 184 | "tags": [ | 176 | "tags": [ |
| 185 | ["d", "<event-unique-identifier>"], // Required: Event identifier | 177 | ["d", "<event-unique-identifier>"], // Required: Event identifier |
| 186 | ["a", "30312:<pubkey>:<room-id>", "wss://nostr.example.com"], // Required: Reference to parent room, 'd' from 30312 | 178 | ["a", "30312:<pubkey>:<room-id>", "wss://nostr.example.com"], // Required: Reference to parent space, 'd' from 30312 |
| 187 | ["title", "<meeting-title>"], // Required: Meeting title | 179 | ["title", "<meeting-title>"], // Required: Meeting title |
| 188 | ["summary", "<description>"], // Optional: Meeting description | 180 | ["summary", "<description>"], // Optional: Meeting description |
| 189 | ["image", "<preview image url>"], // Optional: Meeting image | 181 | ["image", "<preview image url>"], // Optional: Meeting image |
| @@ -204,14 +196,15 @@ Event properties: | |||
| 204 | * MUST have a start time | 196 | * MUST have a start time |
| 205 | * MAY track participant counts | 197 | * MAY track participant counts |
| 206 | * MAY include participant roles specific to the event | 198 | * MAY include participant roles specific to the event |
| 199 | |||
| 207 | Event management: | 200 | Event management: |
| 208 | * Clients SHOULD update event status regularly when live | 201 | * Clients SHOULD update event status regularly when live |
| 209 | * Events without updates for 1 hour MAY be considered ended | 202 | * Events without updates for 1 hour MAY be considered ended |
| 210 | * starts and ends timestamps SHOULD be updated when status changes | 203 | * starts and ends timestamps SHOULD be updated when status changes |
| 211 | 204 | ||
| 212 | Examples | 205 | ### Examples |
| 213 | 206 | ||
| 214 | Interactive Room (kind:30312) | 207 | #### Meeting Space (kind:30312) |
| 215 | 208 | ||
| 216 | ```jsonc | 209 | ```jsonc |
| 217 | { | 210 | { |
| @@ -233,7 +226,7 @@ Interactive Room (kind:30312) | |||
| 233 | } | 226 | } |
| 234 | ``` | 227 | ``` |
| 235 | 228 | ||
| 236 | Conference Event (kind:30313) | 229 | #### Meeting room (kind:30313) |
| 237 | 230 | ||
| 238 | ```jsonc | 231 | ```jsonc |
| 239 | { | 232 | { |
| @@ -254,7 +247,7 @@ Conference Event (kind:30313) | |||
| 254 | "content": "" | 247 | "content": "" |
| 255 | } | 248 | } |
| 256 | ``` | 249 | ``` |
| 257 | ## Room Presence | 250 | ### Room Presence |
| 258 | 251 | ||
| 259 | New `kind: 10312` provides an event which signals presence of a listener. | 252 | New `kind: 10312` provides an event which signals presence of a listener. |
| 260 | 253 | ||