2020-10 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 |
---|---|
October 1, 2020 | October 1, 2021 |
The 2020-10 release contains many changes to improve the experience of the Shopify API. This release includes the addition of checksums to the assets API, improvements to order editing, support for bulk operations when managing discounts, the addition of shipping lines and delivery methods to orders and fulfillment orders, and improvements to product management and filtering.
This release also includes an entirely new API that allows apps to read and manage shop Legal Policies.
What’s new in 2020-10
The following features were added in version 2020-10 of Shopify's APIs:
- The Asset resource now includes a
checksum
property. This property dramatically improves the performance of Theme Kit. - Apps can now edit orders that they created. To determine if your app can edit an order on Shopify, you can query the
merchantEditable
field on the Order object. - Apps can now add discounts to line items while editing orders.
- The Discounts API has received several upgrades in this version. It's now possible to retrieve usage counts for automatic discounts and perform bulk mutations to enable, disable, or delete large numbers of discounts codes with a single request.
- The Order object now includes
shippingLines
, a list of line items that contains the shipping costs. - Fulfillment Orders now include a
DeliveryMethodType
, which specifies how an order was delivered. Possible values includeLOCAL
,NONE
,PICK_UP
,RETAIL
, orSHIPPING
. - Delivery profiles now have support for
profiles/create
,profiles/update
, andprofiles/delete
webhook topics. - The Product resource now supports a variety of statuses to manage and filter products:
draft
,active
, andarchived
. - Apps can now read and write policies that merchants have configured for their store, such as their refund or privacy policies.
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 Tax field dataTax field data
As of version 2020-10, you can no longer create or update any tax field data using the Country or Province resources.
Anchor to Include risk analysis headerInclude risk analysis header
We've deprecated the include-risk-analysis
header that includes order risks
and risk analysis
objects in the Order payload.
The existence of this deprecated header was not previously documented. The REST Admin API and GraphQL Admin API are not affected by this change.
If you request the header using an API version earlier than 2020-10, then the header will still be returned.
Anchor to Type filter parameterType filter parameter
We've deprecated the type
filter parameter on CodeDiscountQuery
. Use discount_type
instead. For more information about deprecated fields, refer to QueryRoot.
Anchor to Deprecated fields in Refund and RefundLineItem objectsDeprecated fields in Refund and Refund Line Item objects
We've deprecated the following fields in the GraphQL Admin API:
restocked
field in theRefund
object. UseRefundLineItem.restockType
instead.refundType
field in theRefundLineItem
object. UseRefundLineItem.restockType
instead.
Anchor to GraphQL Admin API changesGraph QL Admin API changes
Below are all the changes currently introduced in the 2020-10 version of the GraphQL Admin API.
Anchor to Type filter parameterType filter parameter
Anchor to BreakingBreaking
We've deprecated the type
filter parameter on CodeDiscountQuery
. Use discount_type
instead. For more information about deprecated fields, refer to QueryRoot.
Anchor to Deprecated fields in Refund and RefundLineItem objectsDeprecated fields in Refund and Refund Line Item objects
Anchor to BreakingBreaking
We've deprecated the following fields in the GraphQL Admin API:
restocked
field in theRefund
object. UseRefundLineItem.restockType
instead.refundType
field in theRefundLineItem
object. UseRefundLineItem.restockType
instead.
Anchor to Enhancements to discounts ,[object Object]Enhancements to discounts
We've added new fields, mutations, arguments, and types to extend and enhance what you can do with discounts. You can now use the GraphQL Admin API to do the following:
-
Retrieve usage counts for automatic discounts
-
Perform new ways of searching through discounts
-
Speed up the management of discounts with bulk mutations
Learn how to manage discounts using the GraphQL Admin API.
New fields
-
discountRedeemCodeSavedSearches
field was added to typeQueryRoot
-
asyncUsageCount
field was added to typeDiscountAutomaticBasic
-
asyncUsageCount
field was added to typeDiscountAutomaticBxgy
-
hasTimelineComment
field was added to typeDiscountCodeBasic
-
shareableUrls
field was added to typeDiscountCodeBasic
-
totalSales
field was added to typeDiscountCodeBasic
-
asyncUsageCount
field was added to typeDiscountRedeemCode
-
id
field was added to typeDiscountRedeemCode
-
targetItemImage
field was added to typeDiscountShareableUrl
-
targetType
field was added to typeDiscountShareableUrl
-
title
field was added to typeDiscountShareableUrl
-
url
field was added to typeDiscountShareableUrl
-
hasTimelineComment
field was added to typeDiscountCodeBxgy
-
shareableUrls
field was added to typeDiscountCodeBxgy
-
totalSales
field was added to typeDiscountCodeBxgy
-
hasTimelineComment
field was added to typeDiscountCodeFreeShipping
-
maximumShippingPrice
field was added to typeDiscountCodeFreeShipping
-
shareableUrls
field was added to typeDiscountCodeFreeShipping
-
totalSales
field was added to typeDiscountCodeFreeShipping
New mutations
-
discountCodeBulkActivate
was added -
discountCodeBulkDeactivate
was added -
discountCodeBulkDelete
was added -
discountCodeRedeemCodeBulkDelete
was addedNew arguments
-
after
argument was added to fielddiscountRedeemCodeSavedSearches
in typeQueryRoot
-
before
argument was added to fielddiscountRedeemCodeSavedSearches
in typeQueryRoot
-
first
argument was added to fielddiscountRedeemCodeSavedSearches
in typeQueryRoot
-
last
argument was added to fielddiscountRedeemCodeSavedSearches
in typeQueryRoot
-
query
argument was added to fielddiscountRedeemCodeSavedSearches
in typeQueryRoot
-
reverse
argument was added to fielddiscountRedeemCodeSavedSearches
in typeQueryRoot
-
sortKey
argument was added to fielddiscountRedeemCodeSavedSearches
in typeQueryRoot
-
ids
argument was added to mutationdiscountCodeBulkActivate
-
savedSearchId
argument was added to mutationdiscountCodeBulkActivate
-
search
argument was added to mutationdiscountCodeBulkActivate
-
ids
argument was added to mutationdiscountCodeBulkDeactivate
-
savedSearchId
argument was added to mutationdiscountCodeBulkDeactivate
-
search
argument was added to mutationdiscountCodeBulkDeactivate
-
ids
argument was added to mutationdiscountCodeBulkDelete
-
savedSearchId
argument was added to mutationdiscountCodeBulkDelete
-
search
argument was added to mutationdiscountCodeBulkDelete
-
discountId
argument was added to mutationdiscountCodeRedeemCodeBulkDelete
-
ids
argument was added to mutationdiscountCodeRedeemCodeBulkDelete
-
savedSearchId
argument was added to mutationdiscountCodeRedeemCodeBulkDelete
-
search
argument was added to mutationdiscountCodeRedeemCodeBulkDelete
-
query
argument was added to fieldcodes
in typeDiscountCodeBasic
-
savedSearchId
argument was added to fieldcodes
in typeDiscountCodeBasic
-
sortKey
argument was added to fieldcodes
in typeDiscountCodeBasic
-
query
argument was added to fieldcodes
in typeDiscountCodeBxgy
-
savedSearchId
argument was added to fieldcodes
in typeDiscountCodeBxgy
-
sortKey
argument was added to fieldcodes
in typeDiscountCodeBxgy
-
query
argument was added to fieldcodes
in typeDiscountCodeFreeShipping
-
savedSearchId
argument was added to fieldcodes
in typeDiscountCodeFreeShipping
-
sortKey
argument was added to fieldcodes
in typeDiscountCodeFreeShipping
New and updated types
-
DiscountShareableUrl
type was added -
DiscountCodeBulkActivatePayload
type was added -
DiscountCodeBulkDeactivatePayload
type was added -
DiscountShareableUrlTargetType
type was added -
DiscountCodeBulkDeletePayload
type was added -
DiscountCodeRedeemCodeBulkDeletePayload
type was added -
DISCOUNT_CODE
was added to enumResourceType
-
DISCOUNT_REDEEM_CODE
was added to enumSearchResultType
-
COLLECTION
was added to enumDiscountShareableUrlTargetType
-
HOME
was added to enumDiscountShareableUrlTargetType
-
PRODUCT
was added to enumDiscountShareableUrlTargetType
-
INCLUSION
was added to enumDiscountErrorCode
-
job
field was added to typeDiscountCodeBulkActivatePayload
-
userErrors
field was added to typeDiscountCodeBulkActivatePayload
-
job
field was added to typeDiscountCodeBulkDeactivatePayload
-
userErrors
field was added to typeDiscountCodeBulkDeactivatePayload
-
job
field was added to typeDiscountCodeBulkDeletePayload
-
userErrors
field was added to typeDiscountCodeBulkDeletePayload
-
job
field was added to typeDiscountCodeRedeemCodeBulkDeletePayload
-
userErrors
field was added to typeDiscountCodeRedeemCodeBulkDeletePayload
-
maximumShippingPrice
field was added to typeDiscountCodeFreeShippingInput
Anchor to Current representations of order values ,[object Object]Current representations of order values
We added new fields to the Order
object that
capture the current representation of order values. Previously, apps could only use fields such as totalPriceSet
and totalTaxSet
and had to manually subtract order values from returns and refunds.
New fields
currentCartDiscountAmountSet
was added to objectOrder
currentSubtotalLineItemsQuantity
was added to objectOrder
currentSubtotalPriceSet
was added to objectOrder
currentTaxLines
was added to objectOrder
currentTotalDiscountsSet
was added to objectOrder
currentTotalPriceSet
was added to objectOrder
currentTotalTaxSet
was added to objectOrder
currentTotalWeight
was added to objectOrder
Anchor to Editing orders ,[object Object]Editing orders
Apps can now edit orders they created. Previously, apps could only edit orders created through a Shopify channel (for example, POS, online store, or draft orders).
To determine if your app can edit an order on Shopify, you can query the merchantEditable
field on the Order object. If the return value of this field is true
, your app can edit the order.
We also added a new merchantEditableErrors
field to the Order object. If your app can't edit an order, then you can use this field to determine the reason why.
Anchor to Orders associated to refunds ,[object Object]Orders associated to refunds
You can now query the order that is associated to a refund.
New field
order
field was added to object Refund
Anchor to Shipping lines on existing orders ,[object Object]Shipping lines on existing orders
You can now query a list of line items that contain shipping costs on existing orders.
New connection
shippingLines
was added to objectOrder
Anchor to Add discounts to items while editing orders ,[object Object]Add discounts to items while editing orders
You can now add discounts while editing orders. The following are use cases for adding discounts during order editing:
-
Build out post-purchase discount workflows to entice buyers into adding upgrades, complementary products, or subscriptions to their existing orders.
-
Offer items for free to first-time buyers.
-
Discount items after purchase if a buyer forgets to use their discount code at checkout.
To learn how to use the GraphQL Admin API to add discounts during order editing, refer to our Edit existing orders.
New mutations
-
OrderEditAddLineItemDiscount
was added -
OrderEditRemoveLineItemDiscount
was addedUpdated mutation
-
allowDuplicates
argument was added toOrderEditAddVariant
New types
-
OrderEditRemoveLineItemDiscountPayload
was added -
CalculatedDiscountApplication
object was added -
CalculatedDiscountAllocation
object was added -
OrderStagedChangeAddLineItemDiscount
object was added -
OrderEditDiscountInput
input object was added -
DiscountApplicationLevel
enum was addedNew field
-
CalculatedDiscountAllocation
field was added to object typeCalculatedLineItem
New connection
-
CalculatedDiscountApplication
was added to object typeCalculatedOrder
Anchor to Delivery method on fulfillment orders ,[object Object]Delivery method on fulfillment orders
You can now query the delivery method on fulfillment orders. A fulfillment order delivery method can help you figure out how the line items represented by the fulfillment order should be delivered, or if they need to be picked up in-store.
New and updated types
DeliveryMethod
type was addedDeliveryMethodType
type was addeddeliveryMethod
field was added to typeFulfillmentOrder
id
field was added to typeDeliveryMethod
methodType
field was added to typeDeliveryMethod
LOCAL
enum value was added to typeDeliveryMethodType
NONE
enum value was added to typeDeliveryMethodType
PICK_UP
enum value was added to typeDeliveryMethodType
RETAIL
enum value was added to typeDeliveryMethodType
SHIPPING
enum value was added to typeDeliveryMethodType
Anchor to Product status ,[object Object]Product status
Use the GraphQL Admin API to identify, filter, and manage products based on their current product status.
Each product can have one of the following statuses:
-
draft
: The product isn't ready to sell and is unavailable to customers on sales channels and apps. -
active
: The product is ready to sell and can be made available to customers on the online store, sales channels, and apps. By default, existing products are set toactive
. -
archived
: The product is no longer being sold and isn't available to customers on sales channels and apps.To learn how to use product statuses, refer to the ProductStatus enum.
New and updated mutations
-
ProductChangeStatus
mutation was added -
newStatus
argument was added to mutationProductDuplicate
New fields
-
status
field was added to objectProduct
-
status
field was added to input objectProductInput
New and updated types
-
ResourcePublicationV2
object was added -
ProductStatus
enum was added -
ResourcePublicationsV2
connection was added to typePublishable
Anchor to Add a media image to a product variant ,[object Object]Add a media image to a product variant
You can now use the GraphQL Admin API to add a media image to a product variant. To learn how to add a media image to a product variant, refer to our Manage variant media with the GraphQL Admin API tutorial.
New and updated mutations
-
ProductVariantAppendMediaInput
input object was added -
ProductVariantDetachMediaInput
input object was added -
mediaSrc
input field was added toProductVariantInput
New and updated types
-
ProductVariantAppendMediaInput
input object was added -
ProductVariantDetachMediaInput
input object was added -
mediaSrc
input field was added toProductVariantInput
-
media
connection was added to object typeProductVariant
New error codes
-
BLANK
was added to enumMediaUserError
-
MEDIA_DOES_NOT_EXIST_ON_PRODUCT
was added to enumMediaUserError
-
TOO_MANY_MEDIA_PER_INPUT_PAIR
was added to enumMediaUserError
-
MAXIMUM_VARIANT_MEDIA_PAIRS_EXCEEDED
was added to enumMediaUserError
-
INVALID_MEDIA_TYPE
was added to enumMediaUserError
-
PRODUCT_VARIANT_SPECIFIED_MULTIPLE_TIMES
was added to enumMediaUserError
-
PRODUCT_VARIANT_DOES_NOT_EXIST_ON_PRODUCT
was added to enumMediaUserError
-
NON_READY_MEDIA
was added to enumMediaUserError
-
PRODUCT_VARIANT_ALREADY_HAS_MEDIA
was added to enumMediaUserError
-
MEDIA_IS_NOT_ATTACHED_TO_VARIANT
was added to enumMediaUserError
Anchor to Update text content of legal policies,[object Object]Update text content of legal policies
Use the GraphQL Admin API to update the text content of legal policies associated with a shop. Policies are specified by policy type.
New mutation
-
ShopPolicyUpdate
was addedNew types
-
ShopPolicy
object type was added -
ShopPolicyInput
input object was added -
ShopPolicyType
enum was added -
ShopPolicyUserError
was addedNew field
-
shopPolicies
was added to objectshop
Anchor to Product price range ,[object Object]Product price range
Use the GraphQL Admin API to query the price range of a product (the lowest and highest priced variants).
New and updated types
ProductPriceRangeV2
type was addedpriceRangeV2
field was added to typeProduct
Anchor to International domains ,[object Object]International domains
Use the GraphQL Admin API to query if a shop is eligible to enable international domains.
New field
internationalDomains
was added to typeShopFeatures
Anchor to Marketing activity ,[object Object]Marketing activity
Use the GraphQL Admin API to create a new marketing activity.
New mutation
marketingActivityCreate
was added
Anchor to New error codes and field for media objects ,[object Object]New error codes and field for media objects
We've added new error codes to better represent the different types of errors that can occur when creating media objects. We also added a new field to the MediaImage
object.
New error codes
-
VIDEO_METADATA_READING_ERROR
was added to enumMediaErrorCode
-
VIDEO_INVALID_FILETYPE_ERROR
was added to enumMediaErrorCode
-
VIDEO_MIN_WIDTH_ERROR
was added to enumMediaErrorCode
-
VIDEO_MAX_WIDTH_ERROR
was added to enumMediaErrorCode
-
VIDEO_MIN_HEIGHT_ERROR
was added to enumMediaErrorCode
-
VIDEO_MAX_HEIGHT_ERROR
was added to enumMediaErrorCode
-
VIDEO_MIN_DURATION_ERROR
was added to enumMediaErrorCode
-
VIDEO_MAX_DURATION_ERROR
was added to enumMediaErrorCode
-
MODEL3D_THUMBNAIL_GENERATION_ERROR
was added to enumMediaErrorCode
-
MODEL3D_GLB_TO_USDZ_CONVERSION_ERROR1
was added to enumMediaErrorCode
-
MODEL3D_GLB_OUTPUT_CREATION_ERROR
was added to enumMediaErrorCode
-
UNSUPPORTED_IMAGE_FILE_TYPE
was added to enumMediaErrorCode
-
INVALID_IMAGE_FILE_SIZE
was added to enumMediaErrorCode
New field
mimeType
was added to objectMediaImage
Anchor to Query a customer's activity,[object Object]Query a customer's activity
You can now use the GraphQL Admin API to query a customer's activity on a shop's online store.
New type
CustomerJourneySummary
was added
Anchor to Delivery profiles event webhooks,[object Object]Delivery profiles event webhooks
You can now subscribe to delivery profiles event webhooks.
New topics
PROFILES_CREATE
value was added to enumWebhookSubscriptionTopic
PROFILES_UPDATE
value was added to enumWebhookSubscriptionTopic
PROFILES_DELETE
value was added to enumWebhookSubscriptionTopic
Anchor to GraphQL Storefront API changesGraph QL Storefront API changes
Below are all the changes currently introduced in the 2020-10 version of the GraphQL Storefront API.
Anchor to Query a shop's shipping policy ,[object Object]Query a shop's shipping policy
You can now query a shop's shipping policy using the shippingPolicy
field.
New field
shippingPolicy
was added to objectShop
Anchor to REST Admin API changesREST Admin API changes
Below are all the changes currently introduced in the 2020-10 version of the REST Admin API.
Anchor to Tax field dataTax field data
Anchor to BreakingBreaking
You can no longer change tax field data using the Country or Province resources.
Anchor to Include risk analysis headerInclude risk analysis header
Anchor to BreakingBreaking
We've deprecated the include-risk-analysis
header that includes order risks
and risk analysis
objects in the Order payload.
The existence of this deprecated header was not previously documented. The REST Admin API and GraphQL Admin API are not affected by this change.
If you request the header using an API version earlier than 2020-10, then the header will still be returned.
Anchor to Product status ,[object Object]Product status
Use the Product resource to identify, filter, and manage products based on their current product status.
Each product can have one of the following statuses:
-
draft
: The product isn't ready to sell and is unavailable to customers on sales channels and apps. -
active
: The product is ready to sell and can be made available to customers on the online store, sales channels, and apps. By default, existing products are set toactive
. -
archived
: The product is no longer being sold and isn't available to customers on sales channels and apps.To learn how to use product statuses, refer to the Product resource.
New property
status
property added toProduct
resourceNew query parameter
status
parameter added toProduct
resource
Anchor to Refund duties,[object Object]Refund duties
Use the Refund resource to add refund duties to your request body. This capability provides parity with the GraphQL Admin API.
The refund_duties
object includes two fields: duty_id
and refund_type
. You can specify how you want the duty refunded by setting one of the following values on refund_type
:
FULL
: Refunds all the duties associated with a duty ID.PROPORTIONAL
: Refunds duties in proportion to the line item quantity that you want to refund.
Anchor to Asset checksums,[object Object]Asset checksums
We've added a new checksum
property to the Asset resource.
The checksum
property provides the MD5 representation of the content, which consists of a string of 32 hexadecimal digits. This property might be null
if you haven't updated an asset recently.
Anchor to Logs for batch discount code creation jobs,[object Object]Logs for batch discount code creation jobs
We've added better reporting and feedback for batch discount code creation jobs. The new logs
property specifies when no discount codes were created because the provided data was invalid.
New property
logs
was added to DiscountCode batch endpoint
Anchor to Buy X Get Y discounts,[object Object]Buy X Get Y discounts
Use the PriceRule resource to specify the minimum purchase amount required to be entitled to a Buy X Get Y discount.
New properties
prerequisite_to_entitlement_purchase
was added to PriceRuleprerequisite_amount
was added to PriceRule
Anchor to Delivery profiles event webhooks,[object Object]Delivery profiles event webhooks
You can now subscribe to delivery profiles event webhooks.
New topics
profiles/create
topic was added to webhook resourceprofiles/update
topic was added to webhook resourceprofiles/delete
topic was added to webhook resource