Updated Deadline: Aug 1st -- [Deprecation] Important changes to ProductVariant, Refund and Fulfillment APIs

Ryan
Shopify Staff
492 42 113

UPDATE JAN 2: 

https://ecommerce.shopify.com/c/api-announcements/t/deadline-reminder-important-changes-to-productva...

UPDATE SEP 14 

Hey Devs!

We've recently shipped a new change to help with identifying calls that we consider deprecated.  We've added a new header to return on these calls:

X-Shopify-API-Deprecated-Reason

If you receive one of these headers in your response, this means Shopify considers that a deprecated call.  This is an effort to allow these calls to be machine readable, and loggable, in order to assist developers in identifying the areas that need to be updated.

Examples of calls that will return this header:

  • Creating a fulfillment without a location
  • Creating a product with variants that have "inventory_quantity"
  • Creating a new variant on a product that has "inventory_quantity"
  • Updating a variant with "inventory_quantity_adjustment"
  • Updating a variant with "inventory_quantity"

 

Happy Coding!

 

UPDATE JUNE 28: 

Hey Devs,

Just want to let you know that we are extending the deprecation deadline from July 1st to August 1st.  There will be a new post tomorrow with more details, but we just wanted to get it out there to maybe relieve some of the stress you are feeling headed into the weekend.

Most, if not all of your questions will be answered in the post tomorrow so try to save any queries for that!

Cheers All!

Ryan

 

Hey Devs,

Shopify is preparing to release multi-location inventory features to all merchants this summer. All apps that create fulfillments or manage inventory will need to be updated by July 1st, 2018, to remain functional on shops that track inventory across multiple locations.

Key dates

July 1st, 2018

  • Apps will no longer be able to create fulfillments without specifying a location
  • Apps will no longer be able to set inventory on the Product/Variant APIs

Migrating to support multi-location fulfillments

Shopify fulfillments are currently “location unaware”, meaning that when an app creates a fulfillment and fulfills an order, Shopify decrements the inventory with no concept of which location that inventory should be decremented from. In order to support merchants with inventory allocated across multiple locations, apps will need to include a location_id when creating fulfillments.

For details on how to migrate your apps to support multi-location, see our Multi-Location Fulfillment Migration Guide.

Migrating to support multi-location inventory

Currently inventory is set and adjusted on the product variant and is not tracked by any particular location. In anticipation of multi-location inventory, Shopify has released a new Inventory API, which includes two new endpoints: Inventory Item and Inventory Level. The Inventory API will allows apps to effectively manage inventory quantities across multiple locations.

For details on how to migrate your apps to support multi-location inventory, see our Multi-Location Inventory Migration Guide.

We’ll keep you up to date as we continue to make improvements to our platform’s multi-location fulfillment and inventory management capabilities, so you can continue to build the best apps to help extend these new features.

If you have any questions about this change, please read our detailed FAQ or contact deprecations@shopify.com.

 

Thanks,

Shopify Apps Team

Ryan | Shopify 
 - Was my reply helpful? Click Like to let me know! 
 - Was your question answered? Mark it as an Accepted Solution
 - To learn more visit the Shopify Help Center or the Shopify Blog

Replies 149 (149)
Hari2
Shopify Partner
6 0 1

Hi,

I use a private app (not Third party apps) to make API calls to my store endpoint to update inventory quantity and fulfillment details for the order. fulfillment_service is set to "manual" for all the products/variants. I fulfill the products manually and use my custom application to update Shopify with the required details.

Question:

1. Is location_id still mandatory in the fulfillment API even when private apps are making the call to create the fulfillment records ?

2. When the product is set to fulfillment_service = manual, can i update the inventory levels using Inventory API without specifying the location_id.

bardia
New Member
15 0 0

Hi Ryan,

Could you please update the post's links to the two Migration tutorials? They point to 404.

Thanks,

Bardia

Robert_Tolton1
Tourist
9 0 1

@Hari - I too would like to know this, I have a private app performing fulfillments currently. It's slightly concerning that neither the fulfillment migration tutorial nor the API docs for locations are currently available? Is locations something you opt-in to?

Ryan
Shopify Staff
492 42 113

Hey All,

Fulfillment Migration Guide, Locations, if these don't work for you, try resetting your cache.  The  URLs were only down for about 30 minutes for the migration to the new developers site.

Question:

1. Is location_id still mandatory in the fulfillment API even when private apps are making the call to create the fulfillment records ?

2. When the product is set to fulfillment_service = manual, can i update the inventory levels using Inventory API without specifying the location_id.

You must always include a location ID, doesn't matter about private apps.

Ryan | Shopify 
 - Was my reply helpful? Click Like to let me know! 
 - Was your question answered? Mark it as an Accepted Solution
 - To learn more visit the Shopify Help Center or the Shopify Blog

Jon_Schwartz
Shopify Expert
76 0 45

I noticed the same thing as Paul and mentioned it here. Important to get an answer. 

Ryan
Shopify Staff
492 42 113

Responded to your other thread as well:

 

You have to include a location ID even if the shop only has a single location.  The changed behaviour on Product and Product Variant went into place when that document was pubished in late 2017, and will only continue to take place in a grace period for grandfathered apps after the release of multiple locations.  This is in order to mitigate the affect on merchant's inventory if the apps do not migrate in time.  I will update the migration guide to be more clear about this.

Ryan | Shopify 
 - Was my reply helpful? Click Like to let me know! 
 - Was your question answered? Mark it as an Accepted Solution
 - To learn more visit the Shopify Help Center or the Shopify Blog

Tahar_from_Stoc
Tourist
12 0 1

Hi Ryan,

We are still unclear about how the new API will work. Here are a few issues / questions we are currently having a very hard time with:

  1. Is multi location equivalent to multiple locations? What I mean is, we have a test store with three locations but the has_multilocation flag is still set to false. Is there a place in the admin area where we can turn this on? Can one define multiple POS locations with the has_multilocation flag set to false? 
  2. Related to point 1 above, do you have an ETA as to when we can we set the multi location flag?   

I would be helpful if you can answer these questions in a timely manner, we have one engineer staying idle waiting for these points to be clarified :)

Thank you in advance.

Tahar.

Ryan
Shopify Staff
492 42 113

You can test the multi-location feature by creating a new development store from your partner account and checking the box here:

Once your store is created you can go to settings > locations and enable the features.

For 1.  Even with the flag off, you may have more than one location.  This could be from POS locations, or automatically created from a fulfillment service

Ryan | Shopify 
 - Was my reply helpful? Click Like to let me know! 
 - Was your question answered? Mark it as an Accepted Solution
 - To learn more visit the Shopify Help Center or the Shopify Blog

Tahar_from_Stoc
Tourist
12 0 1

Thanks a lot Ryan. That definitely helps. In case of a store with multiple POS locations and the has_multi_location flag set to false, how will Shopify behave? Would inventory and orders be handled same as if the multi-location flag was set?  

Again thanks for all the clarifications.

Jon_Schwartz
Shopify Expert
76 0 45

Hi Ryan O. Here is another question. When creating a product via the API or creating a new variant via the API do we, in essence have to create variants with zero inventory and then after the call completes we set inventory levels for the necessary location(s)? So the new flow of product creation would be:

  1. Setup JSON for a full product including properties, images, variants, metafields, etc...
  2. POST to /admin/products.json
  3. Inspect response JSON to get inventory item ID's
  4. For each variant's inventory_item_id, submit a POST to inventory_levels/set.json to set its available inventory

This right? Make sense? No way to create a product with inventory levels in one call anymore?