Deadline Reminder: Important changes to ProductVariant, Refund and Fulfillment APIs

Ryan
Shopify Staff
Shopify Staff
499 42 120

Welcome back from the holidays!

PUBLIC APPS

We wanted to remind you that as of January 7th, 2019 your Public apps will no longer have access to the deprecated APIs and will no longer be able to perform the below behavior by default:

  • Set inventory_quantity or inventory_quantity_adjustment on the product variant.

  • Create fulfillments without specifying a location_id.

  • Refund and restock without specifying a location_id.

  • Use the Inventory API without required read/write_inventory permissions.

 

If your Public app is not updated by the deadline

  • Any API calls performing the deprecated actions above will fail. This may lead to merchant uninstalls, support requests and bad reviews.

  • Merchant’s with locations will continue to be blocked from installing your application.

 

If you need more time

We are implementing a 30 day grace period where we will allow you to use the deprecated APIs if you pass a special header in your API requests.  If your app is performing any of the above actions and you wish the behavior to continue during this grace period you need to include the bypass-multi-location-support: true header in all of your API requests.  

This solution will only work for your app until February 4th 2019, and is meant to provide more time to complete the migration, not as a permanent alternative.

 

To learn how to update your app to use new APIs that support stores with multiple locations, see our Migration Guide.

If you’re having issues migrating your apps to support multiple locations, please create an issue in your partner dashboard support section.

 

PRIVATE APPS

Existing Private apps will not be affected by the above change.  Having a private app that is not upgraded to support locations does not restrict you from enabling the locations feature, and will not disable the usage of the deprecated API calls.  If you enable the locations feature however, your app will no longer be able to make deprecated calls.

New Private apps cannot use the deprecated APIs still.

 

Regards,

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 12 (12)
Ryan
Shopify Staff
Shopify Staff
499 42 120

Updated the above post to clarify the difference between Public and 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

Hidden_Gears
Shopify Expert
28 0 4

Thanks - curious as to whether there's an ultimate deadline for grandfathered private apps to use locations?

Hidden Gears: Web Design, Development + Digital Marketing
cartrover-will
Shopify Partner
23 0 5

Are there any updates from Shopify on when Multi-Location functionality will work fully/properly in the API? Many of the features provided to customers in the Shopify UI do not work in the API. For example, Fulfillment Priority: https://ecommerce.shopify.com/c/shopify-apis-and-technology/t/shopify-fulfillment-priority-psa-55304...

jcabot
New Member
3 0 0

Thanks for the information. We have an application that still has not been migrated to fully support multiple locations, as such we started using the suggested header (bypass_multi_location_support: true). However, we are receiving the deprecated error message regardless when submitting a variant update.

{

    "errors": {

        "base": [

            "Write requests to inventory_quantity and inventory_quantity_adjustment are no longer supported. Please use the Inventory Levels API."

        ]

    }

}

Ryan
Shopify Staff
Shopify Staff
499 42 120

We have an application that still has not been migrated to fully support multiple locations, as such we started using the suggested header (bypass_multi_location_support: true). However, we are receiving the deprecated error message regardless when submitting a variant update.

Hi JC, can you provide either the app name making this request or the request-id from the header response?

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

jcabot
New Member
3 0 0

Hi Ryan,

We have two scenarios and they are as follows:

  1. Request ID: 07974a58-799a-4530-b26d-8e4c701f4d54 - We receive no error but the inventory quantities are not updated.
  2. Request ID: 53e6fede-9a14-4556-bad0-3ce538a06e0a - We receive the deprecation error and no inventory is updated.

Both requests are sent with the provisional header. Thanks for the help!

Sameers_Javed
Shopify Partner
4 0 1

Hi,

    We also tried using said header to bypass multi location support and received error.

{"errors":{"base":["Write requests to inventory_quantity and inventory_quantity_adjustment are no longer supported. Please use the Inventory Levels API."]}}
Response header X-Request-Id we received is "2db5fab7-9dad-4314-8c89-5f1710224567"

 

Ryan
Shopify Staff
Shopify Staff
499 42 120

Thanks, I'll look into these.  Can I ask how you are passing the header as well? With a gem, curl, or some other module/sdk?

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

jcabot
New Member
3 0 0

For the requests below:

  1. Request ID: 07974a58-799a-4530-b26d-8e4c701f4d54 - We receive no error but the inventory quantities are not updated.
  2. Request ID: 53e6fede-9a14-4556-bad0-3ce538a06e0a - We receive the deprecation error and no inventory is updated.

These are being done for testing purposes through Postman and the headers are as follows (bypass header in bold):

PUT /admin/products/8771348240.json HTTP/1.1

Host: XXXXXXX [removed]

X-Shopify-Access-Token: XXXXXX [removed]

Content-Type: application/json

bypass_multi_location_support: true

Cache-Control: no-cache

Postman-Token: XXXXXX [removed]

Ryan
Shopify Staff
Shopify Staff
499 42 120

Just wanted to post an update, we had this live for a little bit Monday/Tuesday but rolled it back temporarily to fix some issues with the header.  We will be implementing it again this week, please note that we have changed the header format to bypass-multi-location-support: true

Please note that we have removed the underscore (_) and changed it to a dash (-).  It came to our attention that some technologies don't play as well with headers that contain underscores.

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

Paul_Cannon
Shopify Expert
3 0 2

Ryan,

To clarify, do you plan to deprecate the current Inventory update method (without locations) for existing Private Apps?

What would happen in situations where an installed Public App blocks the ability to turn on Inventory by Location?

Thank you!

Ryan
Shopify Staff
Shopify Staff
499 42 120

To clarify, do you plan to deprecate the current Inventory update method (without locations) for existing Private Apps?

The old way of using inventory is considered deprecated across the board.  There isn't currently a date where we will block the old behaviour on Private apps, but we do consider it legacy and therefore will likely be a date in the future.

What would happen in situations where an installed Public App blocks the ability to turn on Inventory by Location?

This is already live.  But I think you mean after the deadline? After the deadline we would be blocking those API calls from the Public apps therefore they are no longer blocking and it would be lifted.

 

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