POST /api/v2/storefront/proposals
Saves a discover-products response for a buyer (operator) and mints a shareable proposalCode. The server reads the cached snapshot for the named discovery session, freezes the chosen proposal as the offer, and assigns it to the operator. The buyer redeems the code on discover_products to receive the exact frozen products and proposals. The proposal is created in active status.
Request
Parameters
Response
201 Created with the new proposal:
proposalCode is the short handle you hand to the buyer; they pass it to discover_products to redeem. id is the numeric row ID you pass to every sibling operation. snapshot holds the frozen products[] and proposals[] returned to the buyer on redemption — including each composed product’s ext.scope3_merchandise block (property, available delivery, and audience facts) when the underlying discovery response resolved one; see the story-first proposal for what that block states.
Errors
400 VALIDATION_ERROR— missing required field,expiresAtlater than the underlyingproposal.expiresAt, or adiscoveryIdnot scoped to this seller’s storefront sales agents.
Related
Proposal tasks
All proposal operations
Proposals overview
Lifecycle and concepts
Get proposal
Read back the saved snapshot
Revoke proposal
Withdraw a code before redemption