2019-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, 2019 | October 1, 2020 |
The 2019-10 release continues to focus on improving performance by completing the transition to cursor-based pagination. You can now use cursor-based pagination across the remaining endpoints. With the GraphQL Admin API, you can now perform bulk operations to fetch large amounts of data in a single request, letting Shopify handle pagination for you.
This release also solidifies many features we showcased at Unite 2019. Private metafields and translations are available for general use with the GraphQL Admin API, and delivery profiles have received a few updates. We've also added support for 3D Secure transactions to the REST Admin API and Storefront API.
What's new in 2019-10
Below are some of the highlights of new features in version 2019-10 of Shopify's APIs:
- Page-based pagination has been replaced by cursor-based pagination across the remaining REST endpoints
- Perform bulk operations by using the GraphQL Admin API
- Manage translated content for resources by using the GraphQL Admin API
- Store private data about Shopify resources in private metafields using the GraphQL Admin API
- Create checkouts that include 3D secure by using the REST Admin API or the Storefront 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 PaginationPagination
Page-based pagination has been removed on all remaining REST endpoints, and has been replaced with cursor-based pagination.
To migrate, see our tutorial on cursor-based pagination.
For operations that need to fetch large amounts of data, use the GraphQL Admin API to perform bulk operations rather than paginating through resources.
Anchor to Delivery ProfilesDelivery Profiles
The activatedCarrierServices field isn't compatible with multiple origin shipping, and has been removed.
Use the availableCarrierServices field instead. It includes both the carrier service and applicable countries.
Anchor to InventoryInventory
Deprecation for legacy inventory behavior is now extended to all apps. To learn more, refer to Migrating to support multiple locations.
Anchor to Developer previewDeveloper preview
There are no new Shopify admin features for the API changes in version 2019-10, and no developer preview. Use a development store for your development environments.
To use the new API features, call the 2019-10 version of the API.
Anchor to REST Admin API changesREST Admin API changes
Below are all the changes introduced in the 2019-10 release candidate of the REST Admin API.
Anchor to Cursor-based paginationCursor-based pagination
Anchor to BreakingBreaking
Page-based pagination has been replaced by cursor-based pagination across the remaining REST endpoints.
Anchor to All REST API endpointsAll REST API endpoints
- You can't use both
orderandsince_id. Usingsince_idrequires ordering byid ascand the ordering is done automatically.
Anchor to AbandonedCheckoutsAbandoned Checkouts
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/checkouts.json.
Anchor to ArticlesArticles
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/blogs/#{blog_id}/articles.json. - If
blog_idis used and the blog doesn’t have any articles, then no result are returned. In previous version,blog_idtried to match the filters against all articles in a shop, if the blog withblog_iddidn't have any articles. - The default sort order has changed. Now blog posts are sorted by
id desc. Previously they were sorted by unpublished first and then published blog post sorted by the date they were published.
Anchor to BlogsBlogs
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/blogs.json.
Anchor to CommentsComments
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/comments.json.
Anchor to CustomCollectionsCustom Collections
-
Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/custom_collections.json.Requests that pass a value for title will match only if the value is the same as the complete title. Partial matches aren't supported.
Anchor to CustomerAddressesCustomer Addresses
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/customers/#{customer_id}/addresses.json.
Anchor to CustomersCustomers
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/customers.jsonandGET /admin/api/2019-10/customers/search.json.
Anchor to DiscountCodes (Price Rules)Discount Codes (Price Rules)
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/price_rules/#{price_rule_id}/discount_codes.json.
Anchor to Disputes (Shopify Payments)Disputes (Shopify Payments)
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/shopify_payments/disputes.json. - No longer accept limits over 250. Limits over 250 return an error.
Anchor to DraftOrdersDraft Orders
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/draft_orders.json.
Anchor to FulfillmentsFulfillments
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/orders/#{order_id}/fulfillments.json.
Anchor to GiftCardsGift Cards
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/gift_cards.jsonandGET /admin/api/2019-10/gift_cards/search.json.
Anchor to InventoryItemsInventory Items
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/inventory_items.json.
Anchor to InventoryLevelsInventory Levels
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/inventory_levels.json.
Anchor to LocationLevelsLocation Levels
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/locations/#{location_id}/inventory_levels.json.
Anchor to MarketingEventsMarketing Events
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/marketing_events.json. offsetis deprecated, it returns an error if a value is passed. You can usesince_idinstead.
Anchor to OrdersOrders
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/orders.json.
Anchor to OrderRisksOrder Risks
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/orders/#{order_id}/risks.json.
Anchor to PagesPages
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/pages.json.
Anchor to Payouts (Shopify Payments)Payouts (Shopify Payments)
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/shopify_payments/payouts.json. - No longer accept limits over 250. Limits over 250 return an error.
Anchor to PriceRulesPrice Rules
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/product_listings/product_ids.json.
Anchor to ProductIdsProduct Ids
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/product_listings/product_ids.json.
Anchor to ProductVariantsProduct Variants
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/products/#{product_id}/variants.json.
Anchor to RedirectsRedirects
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/redirects/#{redirect_id}.json. - Requests that pass a value for
pathandtargetwill match only if the value is the same as the complete value. Partial matches aren't supported.
Anchor to RefundsRefunds
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/orders/#{order_id}/refunds.json.
Anchor to ReportsReports
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/reports.json.
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/script_tags.json.
Anchor to SmartCollectionsSmart Collections
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/smart_collections.json. - Requests that pass a value for title will match only if the value is the same as the complete title. Partial matches aren't supported.
Anchor to TenderTransactionsTender Transactions
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/tender_transactions.json.
Anchor to Transactions (Shopify Payments)Transactions (Shopify Payments)
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/shopify_payments/balance/transactions.json. - No longer accept limits over 250. Limits over 250 return an error.
Anchor to WebhooksWebhooks
- Removed the
pagefilter, and replaced page-based pagination with cursor-based pagination forGET /admin/api/2019-10/webhooks.json.
Anchor to InventoryInventory
Anchor to BreakingBreaking
Deprecation for legacy inventory behavior is extended to all apps. To learn more, refer to Migrating to support multiple locations.
Removed fields
-
inventory_quantity_adjustmentfield was removed fromProduct Variant -
inventory_quantityfield was removed fromProduct Variant -
restockfield was removed fromRefundRequired fields
-
location_idis required when creating fulfillments -
location_idandrestock_typeare required when creating refunds
Anchor to 3D Secure support3D Secure support
The checkout payment flow now supports customer authentication with 3D Secure. To learn more, refer to Authenticating payments with 3D Secure.
Anchor to CheckoutCheckout
- Added the
next_actionproperty for authenticating payments with 3D Secure.
Anchor to PaymentPayment
- Added the
next_actionproperty for authenticating payments with 3D Secure.
Anchor to Changes to webhooksChanges to webhooks
The following changes have been made to the Webhook resource:
New properties
-
private_metafield_namespaceswas added. It accepts an optional array of namespaces for any private metafields that should be included with each webhook. Payloads include only the private metafields that were created through the app itself.New topics
-
locales/createwas added as part of the new translation feature for the GraphQL Admin API. -
locales/updatewas added as part of the new translation feature for the GraphQL Admin API.
Anchor to GraphQL Admin API changesGraph QL Admin API changes
Below are all the changes introduced in the 2019-10 version of the GraphQL Admin API.
Anchor to Delivery profilesDelivery profiles
Anchor to BreakingBreaking
Delivery profiles store the advanced shipping information about the delivery methods and rates that apply to specific products. To learn more, refer to Manage delivery profiles.
Removed fields and types
-
activatedCarrierServicesfield was removed from QueryRoot -
DeliveryCarrierServiceConnectiontype was removedNew types
-
MethodDefinitionSortKeys enum was added
-
DeliveryLegacyModeBlockedReason enum was added
-
DeliveryLegacyModeBlocked object was added
Updated types
-
leaveLegacyModeProfilesinput argument was added todeliveryProfileUpdate -
sortKeyargument was added toDeliveryLocationGroupZone.methodDefinitions -
eligibleargument was added toDeliveryLocationGroupZone.methodDefinitionsNew fields
-
locationsAvailableForDeliveryProfilesConnectionwas added toQueryRoot -
legacyModeBlockedwas added toDeliverySetting -
includeAllProvinceswas added toDeliveryCountryInputNew mutations
-
deliveryShippingOriginAssign mutation was added
Anchor to InventoryInventory
Anchor to BreakingBreaking
Deprecation for legacy inventory behavior is extended to all apps. To learn more, refer to Migrating to support multiple locations.
Removed fields
restockfield was removed fromRefundInputinventoryQuantityAdjustmentfield was removed fromProductVariantInputinventoryQuantityfield was removed fromProductVariantInput
Anchor to Bulk operationsBulk operations
With bulk operations, you can fetch data asynchronously in bulk. To learn more, refer to Performing bulk operations with GraphQL.
New types
-
BulkOperation object was added
-
BulkOperationStatus object was added
-
BulkOperationErrorCode enum was added
New fields
-
currentBulkOperationfield was added to QueryRootNew mutations
-
bulkOperationCancel mutation was added
-
bulkOperationRunQuery mutation was added
Anchor to Translated content for resourcesTranslated content for resources
You can manage translated content for multiple languages for Shopify resources. To learn more, refer to examples for retrieving translated content.
New types
-
HasPublishedTranslations interface was added
-
TranslationInput input object was added
-
TranslationErrorCode enum was added
-
TranslationUserError enum was added
-
ShopLocaleInput input object was added
-
TranslatableResourceType enum was added
-
Translation object was added
-
TranslatableContent object was added
-
TranslatableResource object was added
-
ShopLocale object was added
-
PublishedTranslation object was added
Updated types
-
Link object implements HasPublishedTranslations interface
-
OnlineStoreBlog object implements HasPublishedTranslations interface
-
ProductVariant object implements HasPublishedTranslations interface
-
OnlineStorePage object implements HasPublishedTranslations interface
-
ProductOption object implements HasPublishedTranslations interface
-
LOCALES_UPDATE was added to enum WebhookSubscriptionTopic
-
Product object implements HasPublishedTranslations interface
-
LOCALES_CREATE was added to enum WebhookSubscriptionTopic
-
Collection object implements HasPublishedTranslations interface
-
OnlineStoreArticle object implements HasPublishedTranslations interface
-
Shop object implements HasPublishedTranslations interface
New fields
-
translatableResourceswas added toQueryRoot -
translatableResourcewas added toQueryRoot -
shopLocaleswas added toQueryRoot -
translationswas added toShop -
translationswas added toProductVariant -
translationswas added toProductOption -
translationswas added toProduct -
translationswas added toCollection -
translationswas added toLink -
translationswas added toOnlineStorePage -
translationswas added toOnlineStoreBlog -
translationswas added toOnlineStoreArticleNew mutations
-
translationsRemove was added
-
translationsRegister mutation was added
-
shopLocaleUpdate mutation was added
-
shopLocaleEnable mutation was added
-
shopLocaleDisable mutation was added
Anchor to Private metafieldsPrivate metafields
Private metafields are additional fields for Shopify resources. Unlike standard metafields, private metafields are visible only to the app that created them. To learn more, refer to Working with metafields using the GraphQL Admin API.
New types
-
PrivateMetafield was added
-
PrivateMetafieldDeleteInput was added
-
PrivateMetafieldValueInput was added
-
PrivateMetafieldInput was added
-
PrivateMetafieldValueType was added
New fields
-
privateMetafieldswas added toQueryRoot -
privateMetafieldwas added toQueryRoot -
privateMetafieldswas added toProductInput -
privateMetafieldswas added toDraftOrderInput -
privateMetafieldswas added toCustomerInput -
privateMetafieldswas added toCollectionInput -
privateMetafieldswas added toProductVariantInput -
privateMetafieldswas added toShop -
privateMetafieldwas added toShop -
privateMetafieldswas added toDraftOrder -
privateMetafieldwas added toDraftOrder -
privateMetafieldswas added toOrder -
privateMetafieldwas added toOrder -
privateMetafieldswas added toCustomer -
privateMetafieldwas added toCustomer -
privateMetafieldswas added toProductVariant -
privateMetafieldwas added toProductVariant -
privateMetafieldswas added toProduct -
privateMetafieldwas added toProduct -
privateMetafieldswas added toCollection -
privateMetafieldwas added toCollection -
privateMetafieldswas added toHasMetafields -
privateMetafieldwas added toHasMetafields -
privateMetafieldswas added toImage -
privateMetafieldwas added toImageNew mutations
-
privateMetafieldUpsert mutation was added
-
privateMetafieldDelete mutation was added
Anchor to Shipping linesShipping lines
The following missing fields that were available in the REST Admin API were added to the ShippingLine object type.
New fields
carrierIdentifierwas added toShippingLinesourcewas added toShippingLinerequestedFulfillmentServicewas added toShippingLinephonewas added toShippingLineidwas added toShippingLinedeliveryCategorywas added toShippingLinecodewas added toShippingLinetaxLineswas added toShippingLine
Anchor to Minor non-breaking changesMinor non-breaking changes
Updated types
-
SLLwas added toCurrencyCode -
TOPwas added toCurrencyCode -
TJSwas added toCurrencyCode -
DJFwas added toCurrencyCode -
LYDwas added toCurrencyCode -
IRRwas added toCurrencyCodeNew fields
-
statusTransitionedAtwas added to object typeMarketingActivity -
taxCodewas added to object typeProductVariant
Anchor to Storefront API changesStorefront API changes
Below are all the changes introduced in the 2019-10 version of the Storefront API.
Anchor to 3D Secure support3D Secure support
The checkout payment flow now supports customer authentication with 3D Secure. To learn more, refer to Authenticating payments with 3D Secure.
New fields
nextActionUrlwas added to Payment
Anchor to Minor non-breaking changesMinor non-breaking changes
SLLwas added to CurrencyCodeTOPwas added to CurrencyCodeTJSwas added to CurrencyCodeDJFwas added to CurrencyCodeLYDwas added to CurrencyCodeIRRwas added to CurrencyCodeGNFwas added to CurrencyCode
Anchor to Corresponding Buy SDK versionsCorresponding Buy SDK versions
| SDK | Supported Versions |
|---|---|
| Mobile Buy SDK Android | 3.6.0 |
| Mobile Buy SDK iOS | 3.6.1 |
| Unity Buy SDK | 1.2.0 |
| JS Buy SDK | 2.8.0, 2.8.1 |
| Buy Button JS | N/A |