full diff

place.stream.livestream

stream.place +5 −0
From
bafyreiatfgiklalqv7hufdjhofh33lwkfprtzprrhhrbyjlrtpimlc4xma indexed 2026-11-04 01:29 UTC View this version
To
bafyreid6xkwqfqw374stldddzmbuk675k6jfykvpb3jypzki2622ju4vbu indexed 2026-11-06 02:31 UTC View this version

Compatibility

backward compatible Backward compatible. 2 non-breaking changes.

Non-breaking changes (2)
  • AddedVertex AddedVertex { vertex_id: "place.stream.livestream#viewerCount.presence" }
  • AddedEdge AddedEdge { src: "place.stream.livestream#viewerCount", tgt: "place.stream.livestream#viewerCount.presence", kind: "prop", name: Some("presence") }

Migration guidance

Added

  • AddedVertex { vertex_id: "place.stream.livestream#viewerCount.presence" }

Notes

  • Non-breaking: AddedEdge { src: "place.stream.livestream#viewerCount", tgt: "place.stream.livestream#viewerCount.presence", kind: "prop", name: Some("presence") }

Changes

11{
22 "$type": "com.atproto.lexicon.schema",
33 "defs": {
44 "livestreamView": {
55 "properties": {
66 "author": {
77 "ref": "app.bsky.actor.defs#profileViewBasic",
88 "type": "ref"
99 },
1010 "cid": {
1111 "format": "cid",
1212 "type": "string"
1313 },
1414 "indexedAt": {
1515 "format": "datetime",
1616 "type": "string"
1717 },
1818 "record": {
1919 "type": "unknown"
2020 },
2121 "uri": {
2222 "format": "at-uri",
2323 "type": "string"
2424 },
2525 "viewerCount": {
2626 "description": "The number of viewers watching this livestream. Use when you can't reasonably use #viewerCount directly.",
2727 "ref": "#viewerCount",
2828 "type": "ref"
2929 }
3030 },
3131 "required": [
3232 "uri",
3333 "cid",
3434 "author",
3535 "record",
3636 "indexedAt"
3737 ],
3838 "type": "object"
3939 },
4040 "main": {
4141 "description": "Record announcing a livestream is happening",
4242 "key": "tid",
4343 "record": {
4444 "properties": {
4545 "activity": {
4646 "description": "The game or activity being streamed.",
4747 "refs": [
4848 "place.stream.defs#activityGame",
4949 "place.stream.defs#activityLabel"
5050 ],
5151 "type": "union"
5252 },
5353 "agent": {
5454 "description": "The source of the livestream, if available, in a User Agent format: `<product> / <product-version> <comment>` e.g. Streamplace/0.7.5 iOS",
5555 "type": "string"
5656 },
5757 "canonicalUrl": {
5858 "description": "The primary URL where this livestream can be viewed, if available.",
5959 "format": "uri",
6060 "type": "string"
6161 },
6262 "createdAt": {
6363 "description": "Client-declared timestamp when this livestream started.",
6464 "format": "datetime",
6565 "type": "string"
6666 },
6767 "endedAt": {
6868 "description": "Client-declared timestamp when this livestream ended. Ended livestreams are not supposed to start up again.",
6969 "format": "datetime",
7070 "type": "string"
7171 },
7272 "idleTimeoutSeconds": {
7373 "description": "Time in seconds after which this livestream should be automatically ended if idle. Zero means no timeout.",
7474 "type": "integer"
7575 },
7676 "lastSeenAt": {
7777 "description": "Client-declared timestamp when this livestream was last seen by the Streamplace station.",
7878 "format": "datetime",
7979 "type": "string"
8080 },
8181 "notificationSettings": {
8282 "ref": "place.stream.livestream#notificationSettings",
8383 "type": "ref"
8484 },
8585 "post": {
8686 "description": "The post that announced this livestream.",
8787 "ref": "com.atproto.repo.strongRef",
8888 "type": "ref"
8989 },
9090 "tags": {
9191 "description": "Freeform tags for this stream. Each tag must be alphanumeric (a-z, A-Z, 0-9) plus colon. Tags with colons indicate a specific tag group (e.g. 'lang:en' indicates the stream's primary language).",
9292 "items": {
9393 "maxGraphemes": 64,
9494 "maxLength": 640,
9595 "type": "string"
9696 },
9797 "maxLength": 10,
9898 "type": "array"
9999 },
100100 "thumb": {
101101 "accept": [
102102 "image/*"
103103 ],
104104 "maxSize": 1000000,
105105 "type": "blob"
106106 },
107107 "title": {
108108 "description": "The title of the livestream, as it will be announced to followers.",
109109 "maxGraphemes": 140,
110110 "maxLength": 1400,
111111 "type": "string"
112112 },
113113 "url": {
114114 "description": "The URL where this stream can be found. This is primarily a hint for other Streamplace nodes to locate and replicate the stream.",
115115 "format": "uri",
116116 "type": "string"
117117 }
118118 },
119119 "required": [
120120 "title",
121121 "createdAt"
122122 ],
123123 "type": "object"
124124 },
125125 "type": "record"
126126 },
127127 "notificationSettings": {
128128 "properties": {
129129 "pushNotification": {
130130 "description": "Whether this livestream should trigger a push notification to followers.",
131131 "type": "boolean"
132132 }
133133 },
134134 "required": [],
135135 "type": "object"
136136 },
137137 "streamplaceAnything": {
138138 "properties": {
139139 "livestream": {
140140 "refs": [
141141 "#livestreamView",
142142 "#viewerCount",
143143 "#teleportArrival",
144144 "#teleportCanceled",
145145 "place.stream.defs#blockView",
146146 "place.stream.defs#renditions",
147147 "place.stream.defs#rendition",
148148 "place.stream.chat.defs#messageView",
149149 "place.stream.chat.defs#pinnedRecordView"
150150 ],
151151 "type": "union"
152152 }
153153 },
154154 "required": [
155155 "livestream"
156156 ],
157157 "type": "object"
158158 },
159159 "teleportArrival": {
160160 "properties": {
161161 "chatProfile": {
162162 "description": "The chat profile of the source streamer",
163163 "ref": "place.stream.chat.profile",
164164 "type": "ref"
165165 },
166166 "source": {
167167 "description": "The streamer who is teleporting their viewers here",
168168 "ref": "app.bsky.actor.defs#profileViewBasic",
169169 "type": "ref"
170170 },
171171 "startsAt": {
172172 "description": "When this teleport started",
173173 "format": "datetime",
174174 "type": "string"
175175 },
176176 "teleportUri": {
177177 "description": "The URI of the teleport record",
178178 "format": "at-uri",
179179 "type": "string"
180180 },
181181 "viewerCount": {
182182 "description": "How many viewers are arriving from this teleport",
183183 "type": "integer"
184184 }
185185 },
186186 "required": [
187187 "teleportUri",
188188 "source",
189189 "viewerCount",
190190 "startsAt"
191191 ],
192192 "type": "object"
193193 },
194194 "teleportCanceled": {
195195 "properties": {
196196 "reason": {
197197 "description": "Why this teleport was canceled",
198198 "enum": [
199199 "deleted",
200200 "denied",
201201 "expired"
202202 ],
203203 "type": "string"
204204 },
205205 "teleportUri": {
206206 "description": "The URI of the teleport record that was canceled",
207207 "format": "at-uri",
208208 "type": "string"
209209 }
210210 },
211211 "required": [
212212 "teleportUri",
213213 "reason"
214214 ],
215215 "type": "object"
216216 },
217217 "viewerCount": {
218218 "properties": {
219219 "count": {
220220 "description": "Viewers watching right now.",
221221 "type": "integer"
222222 },
223 "presence": {
224 "description": "Current channel WebSocket connections on this node, including while offline. Counts connections, not unique people, separately from playback viewers.",
225 "minimum": 0,
226 "type": "integer"
227 },
223228 "total": {
224229 "description": "Running number of playback sessions this livestream has had (cumulative, session-based; the X-style 'views' beside the concurrent count).",
225230 "type": "integer"
226231 }
227232 },
228233 "required": [
229234 "count"
230235 ],
231236 "type": "object"
232237 }
233238 },
234239 "id": "place.stream.livestream",
235240 "lexicon": 1
236241}

Compare other versions