sku, shipping_profile_id, metadata). When an entry sets prices, the offer’s price ladder is rewritten with replace semantics: rows with id are updated in place, rows without id are added, and existing offer-owned prices omitted from the array are removed — all on the variant’s shared PriceSet, scoped by the offer_id price rule. Price ownership is asserted so an offer can’t touch another offer’s rows. Emits offer.updated. Triggered by POST /vendor/offers/:id and the offer batch routes.
Usage
Input
Offer updates, keyed by ID.
Custom data passed through to the workflow hooks.
Result
The updated offers.
Hooks
validate— runs first with{ input }.offersUpdated— runs after the update with{ offers, additional_data }.