commerce-sdk-isomorphic icon indicating copy to clipboard operation
commerce-sdk-isomorphic copied to clipboard

`mergeBasket` requires `Content-Type: application/json`

Open johnboxall opened this issue 2 years ago • 2 comments

ShopperBaskets.mergeBasket requires the content-type application/json or it fails with an HTTP 415 (unsupported media type).

The API itself is a bit odd, in that no request body is needed, so this behaviour is sorta unexpected.

Maybe our existing logic is looking for the existence of a required request payload to send this header:

https://github.com/SalesforceCommerceCloud/commerce-sdk-isomorphic/blob/0d2cdea01e84da859e3cbc4bdf51bb4bc1c831b8/templates/operations.ts.hbs#L170-L172

It might be a safe default to always send it or alternatively special case this method.

Alternatively, maybe we could request a change to the RAML. 🤷

The workaround for customers is to provide the header manually:

const mergeResponse = await new capi.ShopperBaskets(
    clientConfig
).mergeBasket({
    headers: {
        "Content-Type": "application/json",
    },
    parameters: { createDestinationBasket: true },
})

Here is a sample script showing the behaviour:

https://gist.github.com/johnboxall/eed791f95ad6636baa01269a1d178bbb

johnboxall avatar Feb 24 '23 22:02 johnboxall

This issue has been linked to a new work item: W-12659232

git2gus[bot] avatar Mar 08 '23 16:03 git2gus[bot]

Hi @johnboxall, thanks for bringing this to our attention. This work has been added to our backlog and we'll loop you back in when we have updates.

joeluong-sfcc avatar Mar 08 '23 16:03 joeluong-sfcc