2020-01 release notes
We're no longer publishing API release notes. Instead, you can find the latest updates on Shopify APIs in our developer changelog. You can filter updates by area. For example, you can filter API updates by the API name and version, such as GraphQL Admin API changes in version 2025-04.
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:
- Manage the various types of media associated with merchants' products using the GraphQL Admin API.
- Edit orders using the GraphQL Admin API.
- Improve your fulfillment workflows with fulfillment orders using the GraphQL Admin API.
- Manage smart collections more effectively using the REST Admin API.
- Create “Spend X Get Y” discount codes using the GraphQL Admin API.
Anchor to Breaking changesBreaking changes
These changes require special attention. If your app uses these API resources, and you don’t adjust your usage of the resources according to the following instructions, then your app might break when you update to this API version.
Anchor to Collects APICollects 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.
Anchor to Maximum input array size for GraphQL operationsMaximum input array size for Graph QL 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.
Anchor to REST Admin API changesREST Admin API changes
Below are all the changes introduced in the 2020-01 version of the REST Admin API.
Anchor to CollectsCollects
Anchor to BreakingBreaking
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 IDcollect_id
is related to smart collection, then this endpoint returns a 404 error.
Anchor to New Collections APINew Collections API
- 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
Anchor to Fulfillment ordersFulfillment orders
You can manage fulfillments with more control using FulfillmentOrder-based fulfillment. To learn more, refer to Managing fulfillments with the FulfillmentOrder resource.
Anchor to Fulfillment ServicesFulfillment Services
- Added the
fulfillment_orders_opt_in
property to fulfillment services.
Anchor to Assigned fulfillment ordersAssigned 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.
Anchor to Cancellation requestsCancellation 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.
Anchor to Fulfillment requestsFulfillment 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.
Anchor to Fulfillment ordersFulfillment 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.
Anchor to Locations for moveLocations 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.
Anchor to FulfillmentsFulfillments
- 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.
Anchor to Changes to webhooksChanges to webhooks
The following changes have been made to the Webhook resource:
New topics
orders/edited
was added as part of the new order editing feature for the GraphQL Admin API.
Anchor to Track whether inventory items need shippingTrack whether inventory items need shipping
- The
requires_shipping
property on the InventoryItem resource can now be updated. This property replaces the deprecatedrequires_shipping
property on the Product Variant resource.
Anchor to GraphQL Admin API changesGraph QL Admin API changes
Below are all the changes introduced in the 2020-01 version of the GraphQL Admin API.
Anchor to Maximum input array size for GraphQL operationsMaximum input array size for Graph QL operations
Anchor to BreakingBreaking
Input arguments that accept an array have a maximum size of 250. Queries and mutations return an error if an input array exceeds 250 items.
Anchor to Associate new media types with productsAssociate new media types with products
Products now support three types of media: images, 3D models, and videos. Use the GraphQL Admin API to upload media assets and then associate them with a product. To learn more, refer to Working with product media.
Updated types
-
VIDEO
value was added to enumStagedUploadTargetGenerateUploadResource
-
MODEL_3D
value was added to enumStagedUploadTargetGenerateUploadResource
-
IMAGE
value was added to enumStagedUploadTargetGenerateUploadResource
-
media: [CreateMediaInput!]
argument was added to mutationproductCreate
New fields
-
fileSize
field was added to input object typeStagedUploadTargetGenerateInput
-
mediaCount
field was added to object typeProduct
-
media
field was added to object typeProduct
-
featuredMedia
field was added to object typeProduct
New types
-
VideoSource
object was added -
Video
object was added -
Model3dSource
object was added -
Model3d
object was added -
MediaImage
object was added -
ExternalVideo
was added -
StagedUploadInput
input object was added -
StagedUploadParameter
object was added -
StagedMediaUploadTarget
object was added -
UpdateMediaInput
input object was added -
CreateMediaInput
input object was added -
ProductMediaSortKeys
enum was added -
MediaStatus
enum was added -
MediaPreviewImageStatus
enum was added -
MediaPreviewImage
enum was added -
MediaErrorCode
enum was added -
MediaError
object was added -
MediaContentType
was added -
Media
interface was addedNew mutations
-
stagedUploadsCreate
was added -
productUpdateMedia
was added -
productReorderMedia
was added -
productDeleteMedia
was added -
productCreateMedia
was added
Anchor to Edit existing ordersEdit existing orders
You can now edit orders to add items, remove items, or update item quantities. To learn more, refer to Editing existing orders.
Updated types
-
EDIT_ORDERS
was added to enum typeStaffMemberPermission
New types
-
CalculatedOrder
was added -
OrderStagedChangeIncrementItem
was added -
OrderStagedChangeDecrementItem
was added -
OrderStagedChangeAddVariant
was added -
OrderStagedChangeAddCustomItem
was added -
OrderStagedChange
was added -
CalculatedLineItem
was added -
LineItemMutable
was addedNew fields
-
totalOutstandingSet
was added toOrder
-
refundDiscrepancySet
was added toOrder
-
originalTotalPriceSet
was added toOrder
-
lineItemsMutable
was added toOrder
-
edited
was added toOrder
New mutations
-
orderEditSetQuantity
was added -
orderEditCommit
was added -
orderEditBegin
was added -
orderEditAddVariant
was added -
orderEditAddCustomItem
was added
Anchor to Grant staff members permission to edit translated contentGrant staff members permission to edit translated content
Staff member permissions include the option to edit translated content.
Updated types
TRANSLATIONS
was added to enumStaffMemberPermission
Anchor to Manage fulfillments with fulfillment ordersManage fulfillments with fulfillment orders
You can manage fulfillments with more control using FulfillmentOrder-based fulfillment. To learn more, refer to Managing fulfillments with the FulfillmentOrder resource.
Updated types
-
IN_PROGRESS
value was added to the OrderDisplayFulfillmentStatus enum.New fields
-
fulfillment_order
was added to QueryRoot. -
fulfillment_orders
was added to Shop. -
assigned_fulfillment_orders
was added to Shop. -
fulfillment_orders
was added to Order. -
fulfillment_orders
was added to Fulfillment. -
order
was added to Fulfillment. -
callback_url
was added to FulfillmentService. -
fulfillment_orders_opt_in
was added to FulfillmentService.New types
-
FulfillmentTrackingInput input type was added.
-
FulfillmentV2Input input type was added.
-
FulfillmentOrder object was added.
-
FulfillmentOrderAction enum was added.
-
FulfillmentOrderAssignedLocation object was added.
-
FulfillmentOrderAssignmentStatus enum was added.
-
FulfillmentOrderDestination object was added.
-
FulfillmentOrderLineItem object was added.
-
FulfillmentOrderLineItemInput input type was added.
-
FulfillmentOrderLineItemsInput input type was added.
-
FulfillmentOrderLocationForMove object was added.
-
FulfillmentOrderMerchantRequest object was added.
-
FulfillmentOrderMerchantRequestKind enum was added.
-
FulfillmentOrderRequestStatus enum was added.
-
FulfillmentOrderSupportedAction object was added.
New mutations
-
FulfillmentCreateV2 was added.
-
FulfillmentTrackingInfoUpdateV2 was added.
-
fulfillmentCancel was added.
-
FulfillmentOrderSubmitCancellationRequest was added.
-
FulfillmentOrderAcceptCancellationRequest was added.
-
FulfillmentOrderRejectCancellationRequest was added.
-
FulfillmentOrderSubmitFulfillmentRequest was added.
-
FulfillmentOrderAcceptFulfillmentRequest was added.
-
FulfillmentOrderRejectFulfillmentRequest was added.
-
FulfillmentOrderClose was added.
-
FulfillmentOrderCancel was added.
-
FulfillmentOrderMove was added.
Updated mutations
-
fulfillment_orders_opt_in
optional argument was added to FulfillmentServiceUpdate.
Anchor to Minor non-breaking changesMinor non-breaking changes
Updated fields and types
SHP
value was added to enumCurrencyCode
GIP
value was added to enumCurrencyCode
FKP
value was added to enumCurrencyCode
Anchor to New error code for maximum number of discounts createdNew error code for maximum number of discounts created
A better error code is returned when an app tries to create more than 20 million discounts or discount codes.
Updated types
EXCEEDED_MAX
was added to enumPriceRuleErrorCode
Anchor to Set and query customer localesSet and query customer locales
The Customer object type now includes a customer's locale.
New fields
locale
was added to input object typeCustomerInput
locale
was added to object typeCustomer
Anchor to Set minimum purchase amounts for discountsSet minimum purchase amounts for discounts
We added support for required minimum purchase amounts for discounts. When a discount requires a minimum amount, a customer's purchase needs to exceed that value to be eligible for the discount.
Updated types
-
DiscountPurchaseAmount
was added to union typeDiscountCustomerBuysValue
New types
-
DiscountPurchaseAmount
was addedNew fields
-
amount
was added toDiscountCustomerBuysValueInput
-
extraInfo
was added toDiscountUserError
Anchor to Translate delivery method definitionsTranslate delivery method definitions
Delivery method definitions are now translatable resources. To learn more about delivery method definitions, refer to Manage delivery profiles. To learn more about translating resources, refer to Translating content with the API
Updated types
DELIVERY_METHOD_DEFINITION
was added to enumTranslatableResourceType
Anchor to Updates to delivery profilesUpdates to delivery profiles
Updated fields
-
merchantOwnedOnly
argument was added to fieldQueryRoot.deliveryProfiles
New types
-
DeliveryProductVariantsCount
object type was addedNew fields
-
productVariantsCountV2
was added to object typeDeliveryProfile
-
DeliveryProfile.productVariantsCount
was deprecated in favor ofproductVariantsCountV2
Anchor to Query all available localesQuery all available locales
You can query the full list of locales available for a shop to enable. Refer to the example for retrieving a shop's locales.
New types
Anchor to Storefront API changesStorefront API changes
Below are all the changes introduced in the 2020-01 version of the Storefront API.
Anchor to Maximum input array size for GraphQL operationsMaximum input array size for Graph QL operations
Anchor to BreakingBreaking
Input arguments that accept an array have a maximum size of 250. Queries and mutations return an error if an input array exceeds 250 items.
Anchor to Minor non-breaking changesMinor non-breaking changes
Updated fields and types
SHP
value was added to enumCurrencyCode
GIP
value was added to enumCurrencyCode
FKP
value was added to enumCurrencyCode
Anchor to Query the unit price of product variantsQuery the unit price of product variants
You can now query unit measurement and price data for product variants to display per-unit prices (for example, $9.99 / 100 ml
).
New types
-
UnitPriceMeasurementMeasuredUnit
was added -
UnitPriceMeasurementMeasuredType
was added -
UnitPriceMeasurement
was addedNew fields
-
unitPrice
was added toProductVariant
-
presentmentUnitPrices
was added toProductVariant
-
unitPriceMeasurement
was added toProductVariant
Anchor to Retrieve new media types for productsRetrieve new media types for products
Products now support three types of media: images, 3D models, and videos. Use the Storefront API to retrieve a product's media and display it on the store's storefront.
Updated types
-
media
was added to object typeProduct
New types
-
VideoSource
was added -
Video
was added -
Model3dSource
was added -
Model3d
was added -
MediaImage
was added -
ExternalVideo
was added -
MediaContentType
was added -
Media
was added
Anchor to Retrieve translated content with the Storefront APIRetrieve translated content with the Storefront API
You can now retrieve translated content for select resource properties using the Storefront API. You need to use the Accept-Language HTTP request header when sending queries. Before you can retrieve the content, it needs to be created using the GraphQL Admin API.
To learn more, refer to Support multiple languages on storefronts.
Supported resources
-
Collection
-
Metafield
-
Article
-
Blog
-
Page
-
Product
-
ProductOption
-
ProductVariant
-
ShopPolicy
For a full list of translatable properties, refer to Translatable resources.
Anchor to Corresponding Buy SDK versionsCorresponding Buy SDK versions
SDK | Supported Versions |
---|---|
Mobile Buy SDK Android | 4.0.0 |
Mobile Buy SDK iOS | 3.7.0, 3.7.1 |
Unity Buy SDK | 2.0.0 |
JS Buy SDK | 2.9.0, 2.9.1,2.9.1, 2.9.2, 2.9.3 |
Buy Button JS | 2.1.0, 2.1.1, 2.1.2 |