Modify Basket
Once items are in the basket, these mutations cover the rest of the lifecycle: changing quantities, swapping variants, removing items, picking and removing select-your-sample gifts, and clearing the basket. All return the full Basket so the client can render the new state without a follow-up query.
All mutations take a basketId and the same SessionSettings (currency, shippingDestination) as the rest of the basket API. Passing null for basketId falls back to the logged-in customer’s saved basket or creates a new one. The returned basket id may differ from the one passed in if the basket moved, merged or didn’t exist.
Updating the quantity of an item
Section titled “Updating the quantity of an item”mutation UpdateProductQuantity { updateProductQuantityInBasket( basketId: "2298e807-50ee-4120-abfa-3c0f0ef78fca:1611587680727" itemId: "item_abc123" quantity: 3 settings: { currency: GBP, shippingDestination: GB } ) { id items { id quantity totalChargePrice { amount currency displayValue } } chargePrice { amount currency displayValue } }}Removing an item
Section titled “Removing an item”mutation RemoveProductFromBasket { removeProductFromBasket( basketId: "2298e807-50ee-4120-abfa-3c0f0ef78fca:1611587680727" itemId: "item_abc123" settings: { currency: GBP, shippingDestination: GB } ) { id totalQuantity items { id product { title } quantity } }}Swapping to a similar variant
Section titled “Swapping to a similar variant”amendProductInBasket swaps a basket item to a different variant of the same product — typically used when the customer changes their mind about a size, colour or flavour from the basket page. Use BasketItem.similarVariations to populate the picker. Pass quantity to change it at the same time; omit to keep the current quantity.
mutation AmendProductInBasket { amendProductInBasket( basketId: "2298e807-50ee-4120-abfa-3c0f0ef78fca:1611587680727" itemId: "item_abc123" newSku: 12345678 quantity: 2 settings: { currency: GBP, shippingDestination: GB } ) { id items { id product { sku title } quantity } }}Removing a discount code
Section titled “Removing a discount code”For removing a code that’s already been applied with applyCodeToBasket. Automatically-applied (non-removeable) offers cannot be cleared this way — check AppliedOffer.removeable before exposing the remove action.
mutation RemoveCodeFromBasket { removeCodeFromBasket( basketId: "2298e807-50ee-4120-abfa-3c0f0ef78fca:1611587680727" settings: { currency: GBP, shippingDestination: GB } ) { id code { value } appliedOffers { message { value } removeable } }}Select Your Sample — adding and removing the chosen gift
Section titled “Select Your Sample — adding and removing the chosen gift”Once the basket qualifies for a SelectYourSample tier, the customer picks one of the tier’s products. Pass the selectYourSampleId, the chosen tierId and the SKU of the variant they selected.
mutation AddSelectYourSampleProduct { addSelectYourSampleProductToBasket( basketId: "2298e807-50ee-4120-abfa-3c0f0ef78fca:1611587680727" selectYourSampleId: "sys_42" tierId: "tier_1" sku: 99999 settings: { currency: GBP, shippingDestination: GB } ) { id selectYourSample { id selectedSysProducts { productVariants { sku title } } maxSelectedProducts } }}mutation RemoveSelectYourSampleProduct { removeSelectYourSampleProductFromBasket( basketId: "2298e807-50ee-4120-abfa-3c0f0ef78fca:1611587680727" selectYourSampleId: "sys_42" tierId: "tier_1" sku: 99999 settings: { currency: GBP, shippingDestination: GB } ) { id selectYourSample { id selectedSysProducts { productVariants { sku } } } }}Emptying the basket
Section titled “Emptying the basket”Clears every item.
mutation EmptyBasket { emptyBasket( basketId: "2298e807-50ee-4120-abfa-3c0f0ef78fca:1611587680727" settings: { currency: GBP, shippingDestination: GB } ) { id totalQuantity items { id } }}