2020-01 release notes

Release date Date version is no longer supported
January 1, 2020 January 1, 2021

The 2020-01 release contains many of the features we previewed at Unite 2019. The product media, order editing, and fulfillment orders features are now stable and available on merchant stores. You’ll also find new additions to how you can manage smart collections and discount codes.

What's new in 2020-01

The following features were added in version 2020-01 of Shopify’s APIs:

Breaking changes

These changes require special attention. If your app uses these API resources and you don’t upgrade to a more recent API version, then your app will break.

Collects API

As of verison 2020-01, the Collects REST API only returns collects associated with custom collections, and no longer returns products associated with Smart Collections. To get the products in a smart collection, use the new /admin/api/2020-04/collections/#{collection_id}/products.json endpoint.

Maximum input array size for GraphQL operations

Input arguments that accept an array now have a maximum size of 250. Queries and mutations return an error if an input array exceeds 250 items. This change applies to both the Admin API and the Storefront API.

REST Admin API changes

Below are all the changes introduced in the 2020-01 version of the REST Admin API.

Collects API now returns only collects associated with custom collections, and no longer returns products associated with Smart Collections. The following endpoints are affected:

  • GET /admin/api/2020-01/collects.json: Now only returns collects associated with custom collections.
  • GET /admin/api/2020-01/collects/count.json: Now only returns the count of collects associated with custom collections.
  • GET /admin/api/2020-01/collects/{collect_id}.json: If the ID collect_id is related to smart collection, then this endpoint returns a 404 error.
  • New API for getting products inside a collection. GET /admin/api/2020-01/collections/#{collection_id}/products.json
  • New API for getting a collection by its ID. GET /admin/api/2020-01/collections/#{collection_id}.json

You can manage fulfillments with more control using FulfillmentOrder-based fulfillment. To learn more, refer to Managing fulfillments with the FulfillmentOrder resource.

Fulfillment Services

  • Added the fulfillment_orders_opt_in property to fulfillment services.

Assigned fulfillment orders

  • Added a new route GET /admin/api/2020-01/assigned_fulfillment_orders.json?assignment_status=cancellation_requested&location_ids[]=487838322 to retrieve all the fulfillment orders that are assigned to an app at the shop level.

Cancellation requests

  • Added a new route POST /admin/api/2020-01/fulfillment_orders/#{fulfillment_order_id}/cancellation_request.json to send a cancellation request to a fulfillment service for a fulfillment order.
  • Added a new route POST /admin/api/2020-01/fulfillment_orders/#{fulfillment_order_id}/cancellation_request/accept.json to accept a cancellation request sent to a fulfillment service for a fulfillment order.
  • Added a new route POST /admin/api/2020-01/fulfillment_orders/#{fulfillment_order_id}/cancellation_request/reject.json to reject a cancellation request sent to a fulfillment service for a fulfillment order.

Fulfillment requests

  • Added a new route POST /admin/api/2020-01/fulfillment_orders/#{fulfillment_order_id}/fulfillment_request.json to send a fulfillment request to a fulfillment service for a fulfillment order.
  • Added a new route POST /admin/api/2020-01/fulfillment_orders/#{fulfillment_order_id}/fulfillment_request/accept.json to accept a fulfillment request to a fulfillment service for a fulfillment order.
  • Added a new route POST /admin/api/2020-01/fulfillment_orders/#{fulfillment_order_id}/fulfillment_request/reject.json to reject a fulfillment request to a fulfillment service for a fulfillment order.

Fulfillment orders

  • Added a new route GET /admin/api/2020-01/orders/#{order_id}/fulfillment_orders.json to retrieve a list of fulfillment orders for a specific order.
  • Added a new route GET /admin/api/2020-01/fulfillment_orders/#{fulfillment_order_id}.json to retrieve a specific fulfillment order.
  • Added a new route POST /admin/api/2020-01/fulfillment_orders/#{fulfillment_order_id}/cancel.json to cancel a fulfillment order.
  • Added a new route POST /admin/api/2020-01/fulfillment_orders/#{fulfillment_order_id}/close.json to close a fulfillment order.
  • Added a new route POST /admin/api/2020-01/fulfillment_orders/#{fulfillment_order_id}/move.json to move a fulfillment order.

Locations for move

  • Added a new route GET /admin/api/2020-01/fulfillment_orders/#{fulfillment_order_id}/locations_for_move.json to retrieve locations that a fulfillment order can potentially move to.

Fulfillments

  • Added a new route GET /admin/api/2020-01/fulfillment_orders/#{fulfillment_order_id}/fulfillments.json to retrieve fulfillments associated with a fulfillment order.
  • Added a new route POST /admin/api/2020-01/fulfillments.json to create a fulfillment for one or many fulfillment orders.
  • Added a new route POST /admin/api/2020-01/fulfillments/#{fulfillment_id}/cancel.json to cancel a fulfillment.
  • Added a new route POST /admin/api/2020-01/fulfillments/#{fulfillment_id}/update_tracking.json to update the tracking information for a fulfillment.

The following changes have been made to the Webhook resource:

New topics

  • The requires_shipping property on the InventoryItem resource can now be updated. This property replaces the deprecated requires_shipping property on the Product Variant resource.

GraphQL Admin API changes

Below are all the changes introd