Home/Platform/Media pipeline

SS-42 · Recording / IVR media · 21 operations

Media pipeline

Call-recording governance, transcode, ABR profiles, HLS/DASH manifests and DRM playback sessions.

21
operations
scan-gate
mandatory
HLS/DASH
manifests
15-min
signed URL

What it does

Media pipeline — the depth.

The media plane behind call recordings, IVR audio and voicemail. Every asset lands in quarantine and moves uploaded → scanning → clean | quarantined; delivery, transcode and OCR are refused for anything but clean. Transcode jobs run against ABR profiles and package HLS/DASH manifests; playback runs through governed sessions with heartbeats and an expiry, and the signed delivery URL is minted only by /deliver, only for a clean asset (HMAC-signed, 15-minute expiry, never stored). Call recordings carry a retention class and an access-governance endpoint so a recording is never fetched without an audited reason.

Sub-capabilities · real endpoints

Every capability maps to a real method + path.

Ingest & mandatory scan gate

Register an ingested asset (idempotent on upload_key); it lands in quarantine, usable by nothing until scanned. The scan gate moves it to clean or quarantined — the gate is mandatory.

  • GET/api/v1/assets
  • POST/api/v1/assets
  • GET/api/v1/assets/{id}
  • POST/api/v1/assets/{id}/scan

Transcode, ABR profiles & manifests

Define ABR profiles, transcode a clean asset, package it, and serve HLS/DASH manifests (including a raw .m3u8) — the pipeline behind recording playback and IVR prompt delivery.

  • GET/api/v1/profiles
  • POST/api/v1/profiles
  • POST/api/v1/assets/{id}/transcode
  • POST/api/v1/assets/{id}/package
  • GET/api/v1/assets/{id}/manifest
  • GET/api/v1/assets/{id}/manifest.m3u8

Playback sessions & signed delivery

Open a governed playback session, heartbeat it, and end it; mint the signed delivery URL (only /deliver mints it, only for a clean asset, 15-min HMAC expiry) and govern access to call recordings.

  • POST/api/v1/playback/sessions
  • GET/api/v1/playback/sessions/{token}
  • POST/api/v1/playback/sessions/{token}/heartbeat
  • POST/api/v1/playback/sessions/{token}/end
  • POST/api/v1/assets/{id}/deliver
  • POST/api/v1/assets/{id}/access

Processing jobs & OCR

Track transcode/OCR jobs on an asset, complete/fail/resume them, and OCR document assets (e.g. scanned KYC captured on an IVR flow).

  • GET/api/v1/assets/{id}/jobs
  • POST/api/v1/jobs/{job}/complete
  • POST/api/v1/jobs/{job}/fail
  • POST/api/v1/jobs/{job}/resume
  • POST/api/v1/assets/{id}/ocr

Worked example

A call recording, scanned and streamed

A recording lands in quarantine, passes the scan gate, transcodes to ABR, and streams through a governed session.

1IngestPOST/api/v1/assetsThe recording registers as a governed asset with a retention class; lands in quarantine.
2ScanPOST/api/v1/assets/{id}/scanThe mandatory scan gate moves it to clean; nothing serves until it does.
3TranscodePOST/api/v1/assets/{id}/transcodeTranscode to the ABR profile; /package builds the HLS/DASH manifest.
4SessionPOST/api/v1/playback/sessionsOpen a governed playback session with heartbeats and an expiry.
5DeliverPOST/api/v1/assets/{id}/deliverMint the signed URL — only here, only for a clean asset, 15-min HMAC expiry.

Architecture placement

Where it sits in the platform.

SS-42 stores through SS-02 and serves through SS-27 edge. SS-41 voice and SS-40 recording feed it assets; access to recordings is governed and audited. Assets are tenant-scoped (ADR-0019 — no tenant, no service), mutations audit-chained (ADR-0014) and idempotent (ADR-0039).

Depends on

SS-41 voice (recordings)SS-40 mediaSS-02 dbaas (store)

Feeds

SS-27 edge (serve)SS-24 privacy (retention)