Get decision evidence
Retrieve, for every rule of the ruleset version pinned to the decision, its outcome and —
for each rule that fired — the evidence: the resolved operands of a comparison, the count /
window / threshold of a velocity rule, the entry a blacklist rule matched. The trace uses
the same entry shape as simulate.
Evidence is replayed where the input is frozen — the pinned ruleset re-evaluated
against the stored payload, deterministically — and captured at decision time where
it is not (velocity counters, blacklist matches). Each entry states evidence_source and
replay_fidelity. Replay reproduces only what retention preserved: a field whose scope was
not retained, or stored in reduced form, is absent to the replayer and the rule abstains on
replay (reduced). HMAC outputs and the credential fingerprint do reproduce. Backend rules
are never re-invoked. A replayed_verdict that differs from decision is therefore an
expected artifact of partial retention, not an error; it is null whenever any entry is
reduced or a backend rule participated.
Availability follows the stored payload’s opt-in retention: 200 with retained: false
when nothing was kept, 404 for an unknown id.
Authorizations
HS256-signed JWT bearer token, obtained via the OAuth2 client-credentials grant (see Authentication).
Path Parameters
Decision ID
Response
Evidence and replay trace, or an explicit not-retained result
Per-rule evidence for a recorded decision, with the replay trace that produced it. The trace uses the same entry vocabulary as the simulation endpoint.
The verdict as originally recorded on the decision.
ALLOW, BLOCK, REVIEW, PROVISIONAL False when no evidence was kept for this decision. A successful response, not an error.
When this replay ran. Replay is deterministic — repeated calls agree.
The verdict reconstructed by replaying the pinned ruleset against the frozen payload. Non-null only when every entry in trace replayed at full fidelity and no backend rule participated in the original decision — in that case it equals decision. Null when retained is false, when any referenced field was absent to the replayer (see replay_fidelity), or when the recorded verdict arose through a backend rule, which replay never re-invokes. A null here means "not reconstructible", not "reconstruction failed".
ALLOW, BLOCK, REVIEW The ruleset pinned to the decision and resolved for replay.
The exact version pinned to the decision — not the context's current ACTIVE version.
The (schema, version) the decision was evaluated against. Null when nothing was retained.
One entry per rule of the pinned ruleset, in published evaluation order. Null when retained is false — replay needs the frozen payload and does not fall back to live inputs. Also null when the decision pinned no ruleset (the block-all safeguard), even though retained is true.