POST /api/decisions: Specter returns an outcome and logs the decision for later retrieval and reporting.
Outcomes
Every decision resolves to one of four outcomes.| Outcome | Meaning |
|---|---|
ALLOW | No blocking rule matched — the default when nothing fires. |
REVIEW | A rule flagged the transaction for manual review. REVIEW outcomes accumulate across rules. |
BLOCK | A blocking rule matched. Evaluation short-circuits on the first BLOCK. |
PROVISIONAL | An interim outcome while an asynchronous evaluation is still pending. |
on_error is allow,
Specter skips that backend rather than blocking the customer. See the rule engine.
The decision request
Three attributes are always required; everything else is optional but enriches the evaluation.Card credential —
type: "pan", "masked_pan", or "sepa". A pan credential is only accepted on an
SAQ_D or ROC instance; on the default SAQ_A level it is rejected — see
Instance configuration.Must contain
id.Must contain
reference, amount (minor units), and currency (ISO 4217).IP address, fingerprint, user agent, session, and language.
Addresses forwarded to applicable backends.
Addresses forwarded to applicable backends.
Cart line items; each needs at least
name or sku.Travel data (passengers, legs) forwarded to backends that consume it.
Flat string key-value pairs, available to rules as
$.metadata.*. Never
forwarded to backends.Selects which ruleset to evaluate.
The decision response
The outcome.
Rules that fired, in evaluation order.
One entry per executed backend rule, including any error such as
insufficient_context. Present only on Specter Connect.HMAC-SHA256 identifier for the card instrument.The decision log
Every decision is written to the log. When a PAN is sent, only its fingerprint is returned. Retrieve a past decision withGET /api/decisions/{id}.
Resolving a REVIEW decision
AREVIEW decision is not final — it asks for a human judgement. Once your team has reviewed the transaction,
resolve it to record the accept/reject outcome and forward it to the backends that flagged it:
decisions:write scope.
- Only decisions with
decision: "REVIEW"can be resolved — others return422. - Each decision can be resolved once — a second attempt returns
409.
Request
accept or reject.Free-text note stored on the resolution.
Response
resolution is stored on the decision and returned by subsequent GET /api/decisions/{id} calls. Only
backends that produced a REVIEW result participate; Specter forwards the outcome to each through its
Link integration, and a backend that does not support resolution is
skipped.
| Status | Meaning |
|---|---|
ok | The backend accepted the resolution. |
skipped | The backend does not support resolution. |
reference_unavailable | The backend’s stored response lacked a required reference. |
Related
Rule engine
How rules combine to produce an outcome.
Lifecycle events
Feed transaction outcomes back to Specter and its backends.