- Request
POST https://api.decionis.com/v1/protocol/evaluate-decision- Headers
Authorization: Bearer <workspace API key> and Idempotency-Key, stable for retries of the same proposed action.- Who is asking
channel is repricer, erp, workflow or api; source is your tool's name. Both are recorded on the dossier.- Mode
SHADOW. The answer is the same one enforcement would give; your tool enforces it by honoring the answer.
A price change from a repricer, with the signals the starter policy reads:
{
"org_id": "your-workspace-id",
"decision_type": "PRICE_CHANGE",
"transaction_type": "price_change",
"workflow_key": "commerce_price_change",
"amount": 89,
"channel": "repricer",
"source": "acme-repricer",
"mode": "SHADOW",
"idempotency_key": "sku:DC-AFR-55:price:89.00:2026-09-10T12:00:00Z",
"context": {
"action_type": "PRICE_CHANGE",
"actor_type": "REPRICER",
"actor_id": "acme-repricer",
"platform": "walmart-marketplace",
"signals": {
"sku": "DC-AFR-55",
"from_price": 129,
"to_price": 89,
"currency": "USD",
"estimated_cost": 81.79,
"net_margin_percent": 8.1
}
}
}
The answer, trimmed to what the tool acts on:
{
"outcome": "REVIEW",
"policy_version": "commerce-policy-v2",
"dossier_id": "9d8b4c1e-2f0a-4b6e-9c3d-1e2f3a4b5c6d",
"reason_codes": [
"MARGIN_BELOW_FLOOR"
],
"mode": "SHADOW"
}
| Contract says | Operators read | Your tool does |
|---|
APPROVE | PROCEED | Go ahead. This is a policy result, not consent from a person. |
REVIEW | HOLD | Stop. Leave the marketplace as it is and put the action in front of an operator. |
ESCALATE | ESCALATE | Stop. A named approver decides before you ask again. |
REJECT | BLOCK | Stop. Outside policy; do not retry the same action. |
An error, a timeout or an answer you cannot read means hold. Keep the dossier_id with your own record of the push, so finance can open it in the Decision Ledger months later.