Provenance

Chain of custody

Every attestation carries an append-only timeline of events — who touched it and when. It's returned as chain on the verification result and drives the evidentiary PDF.

Event shape

{
  "event_type": "capture | edit | escalation",
  "timestamp": "<RFC3339>",
  "actor": "device:<id> | tool:<name> | adjuster:<id>",
  "summary": "human-readable"
}

Event types

Why it matters

The chain is what turns a risk score into evidence. When a fraudulent claim is escalated, the evidentiary PDF renders this timeline so an investigator can see the whole custody history (capture device, any edits and the escalation) on one page. Chain events on a claim are paginated.

Evidence export

The PDF asserts our verification. For court or SIU use, POST /v1/claims/:id/export (enterprise) produces an independently checkable evidence bundle — a ZIP containing:

curl -s -X POST "$API/v1/claims/CLM-…/export" -H "Authorization: Bearer $KEY"   # → { export_id, manifest_hash, download_url, … }
curl -s "$API/v1/exports/$ID/download" -o evidence.zip && unzip evidence.zip -d bundle
node bundle/verify-bundle.mjs
# → "BUNDLE VERIFICATION PASSED — every hash matches the manifest."  (tamper any file → FAIL, exit 1)

Exporting appends an exported chain event (who/when), meters one evidence_export, and the bundle is stored transiently (24h TTL). The manifest hash is the integrity root — the future anchor point for a transparency log if wanted.