Consent-Receipt Integrity Binding
A recording-consent receipt states “the parties on this call consented to recording”. A recording file holds the audio. On their own, neither proves the two belong together — a stored receipt carries a plain recording pointer, so audio could be swapped under the same id and the pointer would still resolve. Orbit’s recording surface already seals each recording with a content SHA-256 and a per-tenant tamper-evident hash chain (see Call Recording Consent for the recording surface). The consent-receipt integrity binding chains one more link:The binding is tenant-owned and optional. Orbit never mandates it;
you configure the posture you want and call the digest endpoints only if
you need auditable receipt-to-recording provenance. This page describes
platform tooling, not legal advice.
Endpoints
Two endpoints on the recording-consent API surface handle issuance and offline verification:Mint a digest
Send the call and receipt identifiers; Orbit resolves the receipt rows and the bound recording’s seal, signs the digest, and returns it.data is the full signed digest object (schema below). A
404 with RECORDING_CONSENT_RECEIPT_NOT_FOUND means the receipt id did
not resolve to a live row for this call — capture consent before minting
a digest.
Verify a digest
Submit the full digest object back; Orbit recomputes the signature over the signed fields and reports whether it is intact. Verification performs no writes.verified: false tells you the submitted digest was altered after
issuance (or the signature hex was malformed) — treat it as a failed
provenance check, not a transport error.
Digest schema
The signed payload carries every field a verifier needs; the signature is an HMAC-SHA256 (hex) over the canonicalised field set below (sorted-key canonicalisation, so key order is irrelevant but the field set must match exactly).Binding statuses
recording_unavailable and unbound_no_recording still produce a
signed digest: the absence of a recording is part of the attested
provenance and is itself data you hand to an auditor.Configuring a tenant posture
Per Orbit’s tenant-owned compliance model, this binding is an optional, tenant-controlled posture — never a platform mandate. Decide and document your posture:- Off (default posture). If receipt-to-recording provenance is not a requirement, do nothing — receipts and recordings still exist; you simply never mint a digest.
- Evidentiary posture on. Mint a digest at (or immediately after) recording completion for calls flagged by your compliance checklist, and store the digest object alongside the exported recording artifact. Verification is then a stateless replay: recompute the signature and compare, without re-deriving from live rows.
Privacy-carve risks
Two deliberate design choices shape what the binding does and does not do:- Nothing new is stored. The digest is computed deterministically
from already-persisted receipt rows, the recording seal, and the
platform signing secret, then returned to you — it is stored nowhere
on Orbit’s side. Re-issuing with the same fields and
issued_atinstant reproduces the same signature, so loss of a stored digest is recoverable and the signing surface stays minimal. - Receipts outlive recordings. When a GDPR erasure tombstones the
recording, the receipt row survives (the audit trail is the point),
and any digest already issued flips to a well-defined terminal status:
recording_unavailable. Verification of that earlier-issued digest still succeeds, because the signature was minted over the fields that described the binding at issuance time — but any new digest you mint after erasure attestsrecording_unavailablerather thanbound.
recording_unavailable on a fresh issuance as an expected post-erasure
state rather than a tamper signal.