---
title: "Record the confirmed current order's full SHADOW policy result"
method: POST
path: "/v1/protocol/commerce/connected/business-central/{connectionId}/preflight"
---

# Record the confirmed current order's full SHADOW policy result

`POST /v1/protocol/commerce/connected/business-central/{connectionId}/preflight`

## Request

- Base URL: `https://api.decionis.com`
- URL: `https://api.decionis.com/v1/protocol/commerce/connected/business-central/{connectionId}/preflight`
- Auth: HTTP bearer

Default off; requires COMMERCE_MCP_OAUTH_CONNECTED_ENABLED, the exact fresh nine-scope v3 consent, current Microsoft purchase and membership, and signed supported-source eligibility. It never upgrades a legacy v1 or v2 grant. Also requires COMMERCE_MCP_BUSINESS_CENTRAL_NATIVE_ENABLED and a separately verified current company connection/native read grant within the purchaser tenant extracted by Accounts. No caller-supplied tenant, economics or source URL is accepted. Eight-second deadline and fixed bounded source reads apply. Requires erp:read and erp:validate, explicit confirmation, snapshot digest, policy digest and matching idempotency header. Re-reads the exact source and executes the canonical sixteen-check Commerce SHADOW workflow with one durable evaluation reservation. Missing landed cost, inventory, promotion or other required facts produce HOLD. The original PROCEED/HOLD/BLOCK/ESCALATE verdict, signed dossier and policy identity remain visible. No callback or integration is dispatched. Commerce may separately request native margin and agent-budget authorization only after unchanged PROCEED.

## Path parameters

- `connectionId` string, uuid, required

## Headers

- `Idempotency-Key` string, required

## Request body

- CommerceNativePreflightRequest
  - `org_id` string, uuid, required
  - `document_id` string, uuid, required
  - `connection_revision` integer, required
  - `policy_version` string, required
  - `policy_digest` string, required
  - `snapshot_sha256` string, required
  - `idempotency_key` string, required
  - `confirmation` true, required

## Response `200`

Bounded private result

- CommerceNativePreflightResponse
  - `version` 'commerce-native-bc-preflight-v1', required
  - `input_version` 'commerce-preflight-partial-v1', required
  - `org_id` string, uuid, required
  - `connection_id` string, uuid, required
  - `connection_revision` integer, required
  - `document_id` string, uuid, required
  - `snapshot_sha256` string, required
  - `policy` object, required
    - `bundle_id` string, uuid, required
    - `version` string, required
    - `policy_digest` string, required
  - `mode` 'SHADOW', required
  - `outcome` 'APPROVE' | 'REJECT' | 'ESCALATE' | 'REVIEW', required
  - `verdict` 'PROCEED' | 'HOLD' | 'BLOCK' | 'ESCALATE', required
  - `preflight` object, required
    - `version` 'commerce-preflight-v2', required
    - `action_type` 'PRICE_CHANGE' | 'INVENTORY_MUTATION' | 'ORDER_ACCEPTANCE' | 'FULFILLMENT_ACTION' | 'PROMOTION_CHANGE' | 'REFUND_REQUEST' | 'RETURN_AUTHORIZATION' | 'PAYMENT_RELEASE' | 'VENDOR_BANK_CHANGE' | 'EARLY_PAYMENT_DISCOUNT' | 'CREDIT_HOLD_RELEASE', required
    - `action_digest` string, required
    - `facts_digest` string, required
    - `policy_version` string, required
    - `idempotency_key` string, required
    - `evaluated_at` string, date-time, required
    - `disposition` 'PROCEED' | 'HOLD' | 'BLOCK', required
    - `execution_available` false, required
    - `checks` object[], required
      - `id` 'P01' | 'P02' | 'P03' | 'P04' | 'P05' | 'P06' | 'P07' | 'P08' | 'P09' | 'P10' | 'P11' | 'P12' | 'P13' | 'P14' | 'P15' | 'P16', required
      - `status` 'evaluated' | 'not_applicable' | 'disabled' | 'missing_facts' | 'unsupported', required
      - `verdict` 'PROCEED' | 'HOLD' | 'BLOCK', nullable, required
      - `reason_codes` string[], required
      - `missing_facts` string[], required
      - `measurements` object
  - `evaluation_id` string, uuid, required
  - `dossier_id` string, uuid, required
  - `dossier_sha256` string, required
  - `idempotent_replay` boolean, required
  - `execution_available` false, required

## Other responses

- `400`: Invalid, oversized or conflicting request fields
- `401`: Authentication required
- `402`: Monthly evaluation reservation allowance exhausted
- `403`: Current signed authority, source, scope, role or company permission denied
- `404`: Authorized source, document or evidence unavailable
- `409`: Exact source, policy, evidence or idempotency binding changed; an uncertain write is never retried
- `429`: Request rate limit reached
- `503`: Default-off capability or required dependency unavailable

---

[API](https://skmtc.dev/decionis/apis/decionis-policy-evaluation-api.md) · [All operations](https://skmtc.dev/decionis/apis/decionis-policy-evaluation-api/llms.txt) · [OpenAPI document](https://skmtc.dev/decionis/apis/decionis-policy-evaluation-api/revisions/357f5e459d0c?raw)
