placeStreamLivestream top-level constant
place.stream.livestream
Implementation
const placeStreamLivestream = <String, dynamic>{
"lexicon": 1,
"id": "place.stream.livestream",
"defs": {
"main": {
"type": "record",
"description": "Record announcing a livestream is happening",
"key": "tid",
"record": {
"type": "object",
"required": ["title", "createdAt"],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description":
"The URL where this stream can be found. This is primarily a hint for other Streamplace nodes to locate and replicate the stream.",
},
"post": {
"type": "ref",
"description": "The post that announced this livestream.",
"ref": "com.atproto.repo.strongRef",
},
"tags": {
"type": "array",
"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).",
"items": {"type": "string", "maxLength": 640, "maxGraphemes": 64},
"maxLength": 10,
},
"agent": {
"type": "string",
"description":
"The source of the livestream, if available, in a User Agent format: `<product> / <product-version> <comment>` e.g. Streamplace/0.7.5 iOS",
},
"thumb": {
"type": "blob",
"accept": ["image/*"],
"maxSize": 1000000,
},
"title": {
"type": "string",
"description":
"The title of the livestream, as it will be announced to followers.",
"maxLength": 1400,
"maxGraphemes": 140,
},
"endedAt": {
"type": "string",
"format": "datetime",
"description":
"Client-declared timestamp when this livestream ended. Ended livestreams are not supposed to start up again.",
},
"activity": {
"type": "union",
"description": "The game or activity being streamed.",
"refs": [
"place.stream.defs#activityGame",
"place.stream.defs#activityLabel",
],
},
"createdAt": {
"type": "string",
"format": "datetime",
"description":
"Client-declared timestamp when this livestream started.",
},
"lastSeenAt": {
"type": "string",
"format": "datetime",
"description":
"Client-declared timestamp when this livestream was last seen by the Streamplace station.",
},
"canonicalUrl": {
"type": "string",
"format": "uri",
"description":
"The primary URL where this livestream can be viewed, if available.",
},
"idleTimeoutSeconds": {
"type": "integer",
"description":
"Time in seconds after which this livestream should be automatically ended if idle. Zero means no timeout.",
},
"notificationSettings": {
"type": "ref",
"ref": "place.stream.livestream#notificationSettings",
},
},
},
},
"viewerCount": {
"type": "object",
"required": ["count"],
"properties": {
"count": {"type": "integer"},
},
},
"livestreamView": {
"type": "object",
"required": ["uri", "cid", "author", "record", "indexedAt"],
"properties": {
"cid": {"type": "string", "format": "cid"},
"uri": {"type": "string", "format": "at-uri"},
"author": {
"type": "ref",
"ref": "app.bsky.actor.defs#profileViewBasic",
},
"record": {"type": "unknown"},
"indexedAt": {"type": "string", "format": "datetime"},
"viewerCount": {
"type": "ref",
"description":
"The number of viewers watching this livestream. Use when you can't reasonably use #viewerCount directly.",
"ref": "#viewerCount",
},
},
},
"teleportArrival": {
"type": "object",
"required": ["teleportUri", "source", "viewerCount", "startsAt"],
"properties": {
"source": {
"type": "ref",
"description": "The streamer who is teleporting their viewers here",
"ref": "app.bsky.actor.defs#profileViewBasic",
},
"startsAt": {
"type": "string",
"format": "datetime",
"description": "When this teleport started",
},
"chatProfile": {
"type": "ref",
"description": "The chat profile of the source streamer",
"ref": "place.stream.chat.profile",
},
"teleportUri": {
"type": "string",
"format": "at-uri",
"description": "The URI of the teleport record",
},
"viewerCount": {
"type": "integer",
"description": "How many viewers are arriving from this teleport",
},
},
},
"teleportCanceled": {
"type": "object",
"required": ["teleportUri", "reason"],
"properties": {
"reason": {
"type": "string",
"description": "Why this teleport was canceled",
"enum": ["deleted", "denied", "expired"],
},
"teleportUri": {
"type": "string",
"format": "at-uri",
"description": "The URI of the teleport record that was canceled",
},
},
},
"streamplaceAnything": {
"type": "object",
"required": ["livestream"],
"properties": {
"livestream": {
"type": "union",
"refs": [
"#livestreamView",
"#viewerCount",
"#teleportArrival",
"#teleportCanceled",
"place.stream.defs#blockView",
"place.stream.defs#renditions",
"place.stream.defs#rendition",
"place.stream.chat.defs#messageView",
"place.stream.chat.defs#pinnedRecordView",
],
},
},
},
"notificationSettings": {
"type": "object",
"properties": {
"pushNotification": {
"type": "boolean",
"description":
"Whether this livestream should trigger a push notification to followers.",
},
},
},
},
};