publ betaReference (MCP guide)
Open publ console

publ Reference

commerce_product_control_apply

Change sale status, visibility or tracked inventory for existing X00004 selections. Read the shop product guide for the required COMMERCE_V2 configuration, exact installed-store/channel scope, current delegate policy and recovery. These prerequisites apply to reads as well as writes.

First call commerce_products_get with view.kind selection. Supply channelCode, the same 1–100 distinct ids, its expectedRevision, requestId and optional dryRun (default false). Product actions require a product selection; variant-sale and stock require a variant selection. Do not use a list-page revision or product settings revision.

action Additional input
product-sale saleStatus ACTIVE or DISCONTINUED.
product-visibility visibilityStatus VISIBLE or DISABLED.
variant-sale saleStatus ACTIVE or DISCONTINUED.
stock mode INCREASE/DECREASE/SET, integer quantity 0–99999999, reason and confirmation ADJUST_INVENTORY.

Stock INCREASE requires a positive quantity and STOCK_IN or RETURNED; DECREASE requires a positive quantity and DAMAGED or LOSS. SET positive uses ADJUSTMENT; SET zero uses SOLDOUT. The quantity is a positive magnitude for DECREASE; the source request converts its sign. The resulting on-hand quantity must be 0–99999999. Purged records and variants without inventory tracking are refused. Existing reservations are preserved, so availableQuantity may become negative; do not interpret this as a reservation release or completed sale.

One source dispatch applies the requested selection, with single-variant or bulk stock routing as appropriate. Readback compares selected records and preserved fields; it does not verify every unselected product. Partial bulk results remain unresolved and are never retried automatically. There is no order, payment, fulfillment, shipping or refund effect.

Dry run returns COMMERCE_OPERATION_PLAN. A no-op skips dispatch; confirmed stored state returns COMMERCE_OPERATION_COMPLETE. Keep taskType commerce-product-control and the original input. Central status is historical; resume only observes sent effects, while prepared work requires identical apply. Sent operations never replay. Completed replay has no current verification/link. See the guide for errors, uncertain acknowledgements and parent destinations.

Example

{"channelCode":"selected-channel","requestId":"product-visibility-001","expectedRevision":"0000000000000000000000000000000000000000000000000000000000000000","ids":["observed-product"],"action":"product-visibility","visibilityStatus":"DISABLED","dryRun":true}

Replace the revision with the fresh selection revision and confirm the intended selection before an actual change. This example is not a live result.

Inputs

Field Required here Contract
action Yes one of: product-sale, product-visibility, variant-sale, stock
channelCode Yes When action is product-sale: string; min length 1; max length 512; The exact channelCode selected through channel discovery. Do not supply a URL, channel numeric ID, account ID or credentials.
requestId Yes When action is product-sale: string; pattern ^[A-Za-z0-9_-]{8,80}$; Reuse this requestId and the exact original input after interruption. Never change requestId to retry an uncertain write.
expectedRevision Yes When action is product-sale: string; pattern ^[a-f0-9]{64}$; Exact revision returned by the matching read for this channel, installed pApp and resource.
ids Yes When action is product-sale: array; items: string; min length 1; max length 160; pattern ^[A-Za-z0-9_-]+$; Exact resource identifier returned by this operation, never a title, unrelated row ID or URL.; min items 1; max items 100
dryRun No When action is product-sale: boolean; default false
saleStatus Yes When action is product-sale: ACTIVE, DISCONTINUED
channelCode Yes When action is product-visibility: string; min length 1; max length 512; The exact channelCode selected through channel discovery. Do not supply a URL, channel numeric ID, account ID or credentials.
requestId Yes When action is product-visibility: string; pattern ^[A-Za-z0-9_-]{8,80}$; Reuse this requestId and the exact original input after interruption. Never change requestId to retry an uncertain write.
expectedRevision Yes When action is product-visibility: string; pattern ^[a-f0-9]{64}$; Exact revision returned by the matching read for this channel, installed pApp and resource.
ids Yes When action is product-visibility: array; items: string; min length 1; max length 160; pattern ^[A-Za-z0-9_-]+$; Exact resource identifier returned by this operation, never a title, unrelated row ID or URL.; min items 1; max items 100
dryRun No When action is product-visibility: boolean; default false
visibilityStatus Yes When action is product-visibility: VISIBLE, DISABLED
channelCode Yes When action is variant-sale: string; min length 1; max length 512; The exact channelCode selected through channel discovery. Do not supply a URL, channel numeric ID, account ID or credentials.
requestId Yes When action is variant-sale: string; pattern ^[A-Za-z0-9_-]{8,80}$; Reuse this requestId and the exact original input after interruption. Never change requestId to retry an uncertain write.
expectedRevision Yes When action is variant-sale: string; pattern ^[a-f0-9]{64}$; Exact revision returned by the matching read for this channel, installed pApp and resource.
ids Yes When action is variant-sale: array; items: string; min length 1; max length 160; pattern ^[A-Za-z0-9_-]+$; Exact resource identifier returned by this operation, never a title, unrelated row ID or URL.; min items 1; max items 100
dryRun No When action is variant-sale: boolean; default false
saleStatus Yes When action is variant-sale: ACTIVE, DISCONTINUED
channelCode Yes When action is stock: string; min length 1; max length 512; The exact channelCode selected through channel discovery. Do not supply a URL, channel numeric ID, account ID or credentials.
requestId Yes When action is stock: string; pattern ^[A-Za-z0-9_-]{8,80}$; Reuse this requestId and the exact original input after interruption. Never change requestId to retry an uncertain write.
expectedRevision Yes When action is stock: string; pattern ^[a-f0-9]{64}$; Exact revision returned by the matching read for this channel, installed pApp and resource.
ids Yes When action is stock: array; items: string; min length 1; max length 160; pattern ^[A-Za-z0-9_-]+$; Exact resource identifier returned by this operation, never a title, unrelated row ID or URL.; min items 1; max items 100
dryRun No When action is stock: boolean; default false
mode Yes When action is stock: INCREASE, DECREASE, SET
quantity Yes When action is stock: integer; minimum 0; maximum 99999999
reason Yes When action is stock: ADJUSTMENT, STOCK_IN, DAMAGED, RETURNED, LOSS, SOLDOUT
confirmation Yes When action is stock: ADJUST_INVENTORY