place.stream.media.viewCount
A streamplace node's report of view counts for one place.stream.video over a closed time window. Published in the reporting node's server repo (not the streamer's), so a video served by multiple nodes accumulates multiple records — consumers are expected to sum across trusted reporters. The rkey is conventionally `<windowStart-as-tid>-<video-rkey>` so re-running the aggregator over the same window is idempotent. Counts represent the reporting node's best effort given the data it has; the `tracks` array carries the objective byte / duration totals it observed.
Details · record, key any
| Kind | record |
|---|---|
| Record key | any |
| Authority | media.stream.place |
| Indexed |
Showing version bafyreievtulq273ls7aq5oyhtjsc2cpfkl5axx75j2frcaujw2tfe5f5wq. Show the latest
Checks
Valid Lint pass{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "A streamplace node's report of view counts for one place.stream.video over a closed time window. Published in the reporting node's server repo (not the streamer's), so a video served by multiple nodes accumulates multiple records — consumers are expected to sum across trusted reporters. The rkey is conventionally `<windowStart-as-tid>-<video-rkey>` so re-running the aggregator over the same window is idempotent. Counts represent the reporting node's best effort given the data it has; the `tracks` array carries the objective byte / duration totals it observed.",
"key": "any",
"record": {
"properties": {
"count": {
"description": "Number of distinct sessions the reporting node observed as a view over [windowStart, windowEnd).",
"minimum": 0,
"type": "integer"
},
"indexedAt": {
"description": "When the reporting node ran this aggregation. Useful for ordering successive reports.",
"format": "datetime",
"type": "string"
},
"tracks": {
"description": "Per-track totals of bytes + playback duration the reporting node served over the window. Each entry references the place.stream.media.track record whose bytes were transferred, so user-contributed tracks (transcripts, transcodes published by other accounts) attribute naturally to their own records.",
"items": {
"ref": "#trackUsage",
"type": "ref"
},
"type": "array"
},
"video": {
"description": "AT-URI of the place.stream.video this count is for.",
"format": "at-uri",
"type": "string"
},
"windowEnd": {
"description": "Exclusive upper bound of the aggregation window.",
"format": "datetime",
"type": "string"
},
"windowStart": {
"description": "Inclusive lower bound of the aggregation window.",
"format": "datetime",
"type": "string"
}
},
"required": [
"video",
"count",
"windowStart",
"windowEnd",
"indexedAt"
],
"type": "object"
},
"type": "record"
},
"trackUsage": {
"description": "One row of the tracks array: bytes + duration transferred for a single place.stream.media.track record over the window.",
"properties": {
"bytes": {
"description": "Total bytes served from this track over the window. Sum across attributed segment_requests' Range intersections with the track's segment offsets in the metafile.",
"minimum": 0,
"type": "integer"
},
"durationMs": {
"description": "Total playback duration served from this track, in milliseconds. Per HLS segment in the range: (overlap bytes / segment bytes) * segment duration, so partial-segment fetches credit a proportional share of duration.",
"minimum": 0,
"type": "integer"
},
"track": {
"description": "Strong reference to the place.stream.media.track record whose bytes were transferred.",
"ref": "com.atproto.repo.strongRef",
"type": "ref"
}
},
"required": [
"track",
"bytes",
"durationMs"
],
"type": "object"
}
},
"id": "place.stream.media.viewCount",
"lexicon": 1
}