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.
any
Any valid record key
Properties
count
integer
Required
Number of distinct sessions the reporting node observed as a view over [windowStart, windowEnd).
minimum: 0indexedAt
string
datetime
Required
When the reporting node ran this aggregation. Useful for ordering successive reports.
tracks
array
of
ref
#trackUsage
Optional
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.
video
string
at-uri
Required
AT-URI of the place.stream.video this count is for.
windowEnd
string
datetime
Required
Exclusive upper bound of the aggregation window.
windowStart
string
datetime
Required
Inclusive lower bound of the aggregation window.
View raw schema
{
"key": "any",
"type": "record",
"record": {
"type": "object",
"required": [
"video",
"count",
"windowStart",
"windowEnd",
"indexedAt"
],
"properties": {
"count": {
"type": "integer",
"minimum": 0,
"description": "Number of distinct sessions the reporting node observed as a view over [windowStart, windowEnd)."
},
"video": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of the place.stream.video this count is for."
},
"tracks": {
"type": "array",
"items": {
"ref": "#trackUsage",
"type": "ref"
},
"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."
},
"indexedAt": {
"type": "string",
"format": "datetime",
"description": "When the reporting node ran this aggregation. Useful for ordering successive reports."
},
"windowEnd": {
"type": "string",
"format": "datetime",
"description": "Exclusive upper bound of the aggregation window."
},
"windowStart": {
"type": "string",
"format": "datetime",
"description": "Inclusive lower bound of the aggregation window."
}
}
},
"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."
}