I'm creating and updating products successfully through the api. However, all of them are coming across with the "This is a physical product" flag as false. I can't see a property on any api endpoint that allows you to set this flag. The closest I see is the "requires_shipping" property on InventoryItem and ProductVariant (deprecated), however it's set to readonly. We're moving hundreds of products through the api and our client does not want to have to manually toggle this on for every product. What are my options through the api?
Solved! Go to the solution
This is an accepted solution.
I think you're looking for requiresShipping on the productVariantUpdate mutation using the GraphQL Admin API:
There's a requires_shipping field on product variants through REST, but the field is deprecated, so I would not depend on it too much.
There's plans to expose this as mutable on InventoryItems (at least via GraphQL), and it looks like at that time requiresShipping will actually be deprecated on the ProductVariant level. It looks like it was just deprecated on REST ahead of this process. Note that when the field is deprecated on productVariant, you'll have time to migrate to controlling it on the InventoryItem so you won't have to make a hard shift.