Commerce

Record the confirmed current order's full SHADOW policy result

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

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.

Authorization

CommerceAccountsOAuth
AuthorizationBearer <token>

Opaque Accounts-issued Commerce OAuth access credential with resource-bound current purchase. Legacy base3, signed v2 ERP/history and fresh signed v3 nine-scope connected grants retain distinct route profiles. Refresh credentials never authenticate. Per-operation connection, current role, proof, quota and confirmation checks remain mandatory.

In: header

Path Parameters

connectionId*string
Formatuuid

Header Parameters

Idempotency-Key*string

Must equal the confirmed body idempotency_key; retries cannot rebind the operation.

Match^[A-Za-z0-9._:-]+$
Length1 <= length <= 200

Request Body

application/json

org_id*string
Formatuuid
document_id*string
Formatuuid
connection_revision*integer
Range-9007199254740991 <= value <= 9007199254740991
policy_version*string
Length1 <= length <= 100
policy_digest*string
Match^sha256:[a-f0-9]{64}$
snapshot_sha256*string
Match^[a-f0-9]{64}$
idempotency_key*string
Match^[A-Za-z0-9._:-]+$
Length1 <= length <= 200
confirmation*boolean

Response Body

application/json

curl -X POST "https://example.com/v1/protocol/commerce/connected/business-central/497f6eca-6276-4993-bfeb-53cbbbba6f08/preflight" \  -H "Idempotency-Key: string" \  -H "Content-Type: application/json" \  -d '{    "org_id": "a40f5d1f-d889-42e9-94ea-b9b33585fc6b",    "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",    "connection_revision": -9007199254740991,    "policy_version": "string",    "policy_digest": "string",    "snapshot_sha256": "string",    "idempotency_key": "string",    "confirmation": true  }'
{  "version": "commerce-native-bc-preflight-v1",  "input_version": "commerce-preflight-partial-v1",  "org_id": "a40f5d1f-d889-42e9-94ea-b9b33585fc6b",  "connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9",  "connection_revision": -9007199254740991,  "document_id": "b792e8ae-2cb4-4209-85b9-32be4c2fcdd6",  "snapshot_sha256": "string",  "policy": {    "bundle_id": "fc6f5a67-caa1-4339-9c14-a67826143b60",    "version": "string",    "policy_digest": "string"  },  "mode": "SHADOW",  "outcome": "APPROVE",  "verdict": "PROCEED",  "preflight": {    "version": "commerce-preflight-v2",    "action_type": "PRICE_CHANGE",    "action_digest": "string",    "facts_digest": "string",    "policy_version": "string",    "idempotency_key": "string",    "evaluated_at": "2019-08-24T14:15:22Z",    "disposition": "PROCEED",    "execution_available": false,    "checks": [      {        "id": "P01",        "status": "evaluated",        "verdict": "PROCEED",        "reason_codes": [          "string"        ],        "missing_facts": [          "string"        ],        "measurements": {          "property1": 0,          "property2": 0        }      },      {        "id": "P01",        "status": "evaluated",        "verdict": "PROCEED",        "reason_codes": [          "string"        ],        "missing_facts": [          "string"        ],        "measurements": {          "property1": 0,          "property2": 0        }      },      {        "id": "P01",        "status": "evaluated",        "verdict": "PROCEED",        "reason_codes": [          "string"        ],        "missing_facts": [          "string"        ],        "measurements": {          "property1": 0,          "property2": 0        }      },      {        "id": "P01",        "status": "evaluated",        "verdict": "PROCEED",        "reason_codes": [          "string"        ],        "missing_facts": [          "string"        ],        "measurements": {          "property1": 0,          "property2": 0        }      },      {        "id": "P01",        "status": "evaluated",        "verdict": "PROCEED",        "reason_codes": [          "string"        ],        "missing_facts": [          "string"        ],        "measurements": {          "property1": 0,          "property2": 0        }      },      {        "id": "P01",        "status": "evaluated",        "verdict": "PROCEED",        "reason_codes": [          "string"        ],        "missing_facts": [          "string"        ],        "measurements": {          "property1": 0,          "property2": 0        }      },      {        "id": "P01",        "status": "evaluated",        "verdict": "PROCEED",        "reason_codes": [          "string"        ],        "missing_facts": [          "string"        ],        "measurements": {          "property1": 0,          "property2": 0        }      },      {        "id": "P01",        "status": "evaluated",        "verdict": "PROCEED",        "reason_codes": [          "string"        ],        "missing_facts": [          "string"        ],        "measurements": {          "property1": 0,          "property2": 0        }      },      {        "id": "P01",        "status": "evaluated",        "verdict": "PROCEED",        "reason_codes": [          "string"        ],        "missing_facts": [          "string"        ],        "measurements": {          "property1": 0,          "property2": 0        }      },      {        "id": "P01",        "status": "evaluated",        "verdict": "PROCEED",        "reason_codes": [          "string"        ],        "missing_facts": [          "string"        ],        "measurements": {          "property1": 0,          "property2": 0        }      },      {        "id": "P01",        "status": "evaluated",        "verdict": "PROCEED",        "reason_codes": [          "string"        ],        "missing_facts": [          "string"        ],        "measurements": {          "property1": 0,          "property2": 0        }      },      {        "id": "P01",        "status": "evaluated",        "verdict": "PROCEED",        "reason_codes": [          "string"        ],        "missing_facts": [          "string"        ],        "measurements": {          "property1": 0,          "property2": 0        }      },      {        "id": "P01",        "status": "evaluated",        "verdict": "PROCEED",        "reason_codes": [          "string"        ],        "missing_facts": [          "string"        ],        "measurements": {          "property1": 0,          "property2": 0        }      },      {        "id": "P01",        "status": "evaluated",        "verdict": "PROCEED",        "reason_codes": [          "string"        ],        "missing_facts": [          "string"        ],        "measurements": {          "property1": 0,          "property2": 0        }      },      {        "id": "P01",        "status": "evaluated",        "verdict": "PROCEED",        "reason_codes": [          "string"        ],        "missing_facts": [          "string"        ],        "measurements": {          "property1": 0,          "property2": 0        }      },      {        "id": "P01",        "status": "evaluated",        "verdict": "PROCEED",        "reason_codes": [          "string"        ],        "missing_facts": [          "string"        ],        "measurements": {          "property1": 0,          "property2": 0        }      }    ]  },  "evaluation_id": "4108ec8e-6efd-4b9b-bace-0bb4c296c324",  "dossier_id": "8a9bfc13-db6c-4e62-a117-1a4399450d29",  "dossier_sha256": "string",  "idempotent_replay": true,  "execution_available": false}

Prepare current company-native order evidence and exact policy GET

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. Returns an immutable snapshot digest, explicit cost provenance and exact signed policy. Admitted v2 evidence binds complete source cost from the verified effective company profile; v1 retains its native current-estimate provenance and missing landed cost. Preparation does not reserve budget or authorize an ERP write.

Read actual company fallback settings and recorded outages GET

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. Reads enabled status and provider-observed can_configure; enabled remains read-only.