Commerce

Apply an explicitly confirmed company fallback-mode change

PATCH
/v1/protocol/commerce/connected/business-central/{connectionId}/safety-settings

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:configure, current Accounts owner/admin, a separately verified native configure grant and provider-observed write permission. Only FAIL_OPEN/FAIL_CLOSED changes are supported. Exact old/new mode, settings ID, connection revision, nonwildcard ETag and idempotency must match the reviewed request. Adapter-proven non-writes are terminal NOT_APPLIED; uncertain outcomes stay reserved and never retry a PATCH. A read can reconcile only the same applied operation UUID. This settings change performs no financial ERP action.

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
If-Match*string

Exact nonwildcard settings ETag; must match expected_etag in the body.

Length3 <= length <= 256

Request Body

application/json

org_id*string
Formatuuid
settings_id*string
Formatuuid
expected_connection_revision*integer
Range-9007199254740991 <= value <= 9007199254740991
expected_etag*string
Match^(?:W\/)?"[\x21\x23-\x7e]+"$
Length3 <= length <= 256
expected_fallback_mode*string

Value in

  • "FAIL_OPEN"
  • "FAIL_CLOSED"
fallback_mode*string

Value in

  • "FAIL_OPEN"
  • "FAIL_CLOSED"
idempotency_key*string
Match^[A-Za-z0-9._:-]+$
Length1 <= length <= 200
confirmation*boolean

Response Body

application/json

curl -X PATCH "https://example.com/v1/protocol/commerce/connected/business-central/497f6eca-6276-4993-bfeb-53cbbbba6f08/safety-settings" \  -H "Idempotency-Key: string" \  -H "If-Match: string" \  -H "Content-Type: application/json" \  -d '{    "org_id": "a40f5d1f-d889-42e9-94ea-b9b33585fc6b",    "settings_id": "f248c86b-9d56-484c-9c53-12164c6189d6",    "expected_connection_revision": -9007199254740991,    "expected_etag": "string",    "expected_fallback_mode": "FAIL_OPEN",    "fallback_mode": "FAIL_OPEN",    "idempotency_key": "string",    "confirmation": true  }'
{  "version": "commerce-native-bc-configuration-v1",  "org_id": "a40f5d1f-d889-42e9-94ea-b9b33585fc6b",  "connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9",  "connection_revision": -9007199254740991,  "operation_id": "cb4ede3c-a5d1-45e3-a9d2-fe83accbce52",  "outcome": "applied",  "before": {    "version": "decionis.business_central.guard.status.v1",    "connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9",    "settings_id": "f248c86b-9d56-484c-9c53-12164c6189d6",    "etag": "string",    "observed_at": "2019-08-24T14:15:22Z",    "enabled": true,    "fallback_mode": "FAIL_OPEN",    "default_fallback_mode": "FAIL_OPEN",    "configured": true,    "can_configure": true,    "preflight_readiness": {      "version": "bc_native_preflight_readiness_v1",      "profile_configured": true,      "missing": [        "evidence_profile"      ],      "document_evidence_required": true    },    "consecutive_failures": -9007199254740991,    "circuit_open_until": "2019-08-24T14:15:22Z",    "last_configuration_operation_id": "51d4710e-b550-4e2d-af7c-a3c8f397272c",    "timeout_ms": 150,    "intercepts": [      "sales_release",      "sales_post"    ],    "outage_scope": "fail_open_availability_only"  },  "after": {    "version": "decionis.business_central.guard.status.v1",    "connection_id": "d3547de1-d1f2-4344-b4c2-17169b7526f9",    "settings_id": "f248c86b-9d56-484c-9c53-12164c6189d6",    "etag": "string",    "observed_at": "2019-08-24T14:15:22Z",    "enabled": true,    "fallback_mode": "FAIL_OPEN",    "default_fallback_mode": "FAIL_OPEN",    "configured": true,    "can_configure": true,    "preflight_readiness": {      "version": "bc_native_preflight_readiness_v1",      "profile_configured": true,      "missing": [        "evidence_profile"      ],      "document_evidence_required": true    },    "consecutive_failures": -9007199254740991,    "circuit_open_until": "2019-08-24T14:15:22Z",    "last_configuration_operation_id": "51d4710e-b550-4e2d-af7c-a3c8f397272c",    "timeout_ms": 150,    "intercepts": [      "sales_release",      "sales_post"    ],    "outage_scope": "fail_open_availability_only"  },  "financial_action_executed": false}