openvidu/openvidu-dashboard/openspec/changes/egress-raw-request/proposal.md

44 lines
1.9 KiB
Markdown

# Proposal
## Why
The `request` of an egress document is a summary: source, encoding and the kinds of output. The configuration of each
output (file type and path, stream protocol and URLs, segment and image settings), the audio routes of the unified API
and the replay offsets are lost. The full request, through the secrets allow-list, exists only in the raw `EGRESS_*`
event payloads, which expire with the events retention while the egress document keeps the entities retention.
## What Changes
- The `egresses` document gains an optional `rawRequest`: the request of the egress encoded as raw event payloads
encode `egress.request`, with the protocol field names, the set member of each oneof under the oneof name and only
the allow-listed fields. Credentials, storage uploads and webhooks are never stored, and URLs are redacted.
- `request` keeps its summary, unchanged.
Scope excludes the following:
- Egress documents already stored, which have no `rawRequest` until their egress receives another event.
- Any change to the allow-list or to the request summary.
- How an edition shows the field.
Edition: CE and PRO (data model). Repositories: dashboard (contract, typings, data generator, specs) and
openvidu-livekit (projection and document types).
CHANGELOG: none. The analytics data model has not shipped in a release.
## Capabilities
### New Capabilities
None.
### Modified Capabilities
- `data-model`: the egress document stores the request in raw payload encoding.
## Impact
- Contract (`dashboard-ce/typings`): `EgressDocument.rawRequest`, the `egresses` validator and the egress fixtures; the
contract version stays 1.
- Writer: the egress projection, the `EgressDocument` struct, the vendored contract and the integration tests.
- Data generator: generated egress documents carry `rawRequest`.
- Dashboard backend: none; the egress list projection does not read the field.