$ POST /councils/trust-and-safety/decisions
Authorization: Bearer csh_live_…
{ "input": { "summary": "Refund #8821 over policy limit" } }
→ 202 { "decisionId": "dec_3f9c", "status": "pending" }
GET /decisions/dec_3f9c status: running
council trust-and-safety @v1 · rule: majority
▸ policy approve conf 0.90
▸ risk flag conf 0.60 dissent
▸ finance approve conf 0.80
→ decided verdict approve · confidence 0.67 (2/3)
$ GET /decisions/dec_3f9c/export
{ "verdict": "approve", "status": "decided",
"prevHash": "9b1c…e07", "hash": "4a7f…d21",
"signature": "a3f1c8…", "algorithm": "HMAC-SHA256" }
✓ signature verifies · hash-chained · append-only
$ POST /councils/trust-and-safety/decisions
{ "input": { "summary": "Chargeback #4471 · $12,400 · VIP account" } }
→ 202 { "decisionId": "dec_7b2e", "status": "pending" }
GET /decisions/dec_7b2e status: running
council trust-and-safety @v1 · rule: unanimous
▸ policy approve
▸ risk reject dissent
▸ finance approve
→ escalated unanimous not met · needs human sign-off
⇢ slack #trust-safety
"Approve dec_7b2e? $12,400 chargeback" approve reject
✓ approved by @mara · 2m
→ decided verdict approve · human-approved
$ GET /decisions/dec_7b2e/export
{ "verdict": "approve", "status": "decided", "signature": "b8e2…", "algorithm": "HMAC-SHA256" }
✓ signed · hash-chained · approved via slack