···2424| `title` | `string` | ✅ | The title of the livestream, as it will be announced to followers. | Max Length: 1400<br/>Max Graphemes: 140 |
2525| `url` | `string` | ❌ | The URL where this stream can be found. This is primarily a hint for other Streamplace nodes to locate and replicate the stream. | Format: `uri` |
2626| `createdAt` | `string` | ✅ | Client-declared timestamp when this livestream started. | Format: `datetime` |
2727-| `lastSeenAt` | `string` | ❌ | Client-declared timestamp when this livestream was last seen by the user. | Format: `datetime` |
2727+| `lastSeenAt` | `string` | ❌ | Client-declared timestamp when this livestream was last seen by the Streamplace station. | Format: `datetime` |
2828+| `endedAt` | `string` | ❌ | Client-declared timestamp when this livestream ended. Ended livestreams are not supposed to start up again. | Format: `datetime` |
2829| `post` | [`com.atproto.repo.strongRef`](https://github.com/bluesky-social/atproto/tree/main/lexicons/com/atproto/repo/strongref.json#undefined) | ❌ | The post that announced this livestream. | |
2930| `agent` | `string` | ❌ | The source of the livestream, if available, in a User Agent format: `<product> / <product-version> <comment>` e.g. Streamplace/0.7.5 iOS | |
3031| `canonicalUrl` | `string` | ❌ | The primary URL where this livestream can be viewed, if available. | Format: `uri` |
···161162 "lastSeenAt": {
162163 "type": "string",
163164 "format": "datetime",
164164- "description": "Client-declared timestamp when this livestream was last seen by the user."
165165+ "description": "Client-declared timestamp when this livestream was last seen by the Streamplace station."
166166+ },
167167+ "endedAt": {
168168+ "type": "string",
169169+ "format": "datetime",
170170+ "description": "Client-declared timestamp when this livestream ended. Ended livestreams are not supposed to start up again."
165171 },
166172 "post": {
167173 "type": "ref",
+6-1
lexicons/place/stream/livestream.json
···2929 "lastSeenAt": {
3030 "type": "string",
3131 "format": "datetime",
3232- "description": "Client-declared timestamp when this livestream was last seen by the user."
3232+ "description": "Client-declared timestamp when this livestream was last seen by the Streamplace station."
3333+ },
3434+ "endedAt": {
3535+ "type": "string",
3636+ "format": "datetime",
3737+ "description": "Client-declared timestamp when this livestream ended. Ended livestreams are not supposed to start up again."
3338 },
3439 "post": {
3540 "type": "ref",
···2525 CanonicalUrl *string `json:"canonicalUrl,omitempty" cborgen:"canonicalUrl,omitempty"`
2626 // createdAt: Client-declared timestamp when this livestream started.
2727 CreatedAt string `json:"createdAt" cborgen:"createdAt"`
2828- // lastSeenAt: Client-declared timestamp when this livestream was last seen by the user.
2828+ // endedAt: Client-declared timestamp when this livestream ended. Ended livestreams are not supposed to start up again.
2929+ EndedAt *string `json:"endedAt,omitempty" cborgen:"endedAt,omitempty"`
3030+ // lastSeenAt: Client-declared timestamp when this livestream was last seen by the Streamplace station.
2931 LastSeenAt *string `json:"lastSeenAt,omitempty" cborgen:"lastSeenAt,omitempty"`
3032 NotificationSettings *Livestream_NotificationSettings `json:"notificationSettings,omitempty" cborgen:"notificationSettings,omitempty"`
3133 // post: The post that announced this livestream.