openvidu/openvidu-dashboard/openspec/changes/media-stats-availability/specs/rooms-api/spec.md

2.1 KiB

MODIFIED Requirements

Requirement: Room list item

Edition: CE. Each rooms list item SHALL be the room document's public projection: identity, lifecycle, node, participant, egress and ingress counters, bandwidth, feature flags, the end cause behind the "estimated" cue, the last stats flush, the media statistics mark and the stale flag of api-conventions, never internal id arrays, schemaVersion or expiresAt. Participant counters count STANDARD sessions only; participants.unique counts distinct STANDARD identities.

Scenario: Fields of an item

  • WHEN an item is read
  • THEN it has sid, name, status (active | closed), createdAt, endedAt?, durationMs?, closedBy? (event | reconciler), nodeId?, participants { sessions, unique, active, peakActive }, egress { total, active }, ingress { sessions, active }, bytes { up, down }, features { egress, ingress, agent, sip }, lastStatsAt?, stale?, mediaStats? and no participantSids, identities or similar array

Scenario: Active room

  • GIVEN a room still open with three active STANDARD participants and one active EGRESS participant
  • WHEN it is returned
  • THEN status is active, endedAt, durationMs and closedBy are absent and participants.active is 3

Scenario: Unique identities

  • GIVEN a closed room where STANDARD identity alice had three sessions, bob one, and an AGENT session joined
  • WHEN it is returned
  • THEN participants.sessions is 4 and participants.unique is 2

Scenario: Stale active room

  • GIVEN the default writer batch interval of 10 s and an active room whose lastStatsAt is 3 minutes old at the server's clock
  • WHEN it is returned
  • THEN it has stale: true, and an active room whose lastStatsAt is 20 s old has no stale property

Scenario: Room of a node without media statistics

  • GIVEN a room document with mediaStats: false and bytes { up: 0, down: 0 }
  • WHEN it is returned
  • THEN it has mediaStats: false and bytes { up: 0, down: 0 }, and an item of a room without the field has no mediaStats property