Skip to main content

2019-10 release notes

Note

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 dateDate version is no longer supported
October 1, 2019October 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:


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.

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.

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.

Deprecation for legacy inventory behavior is now extended to all apps. To learn more, refer to Migrating to support multiple locations.


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

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 order and since_id. Using since_id requires ordering by id asc and the ordering is done automatically.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/checkouts.json.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/blogs/#{blog_id}/articles.json.
  • If blog_id is used and the blog doesn’t have any articles, then no result are returned. In previous version, blog_id tried to match the filters against all articles in a shop, if the blog with blog_id didn'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.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/blogs.json.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/comments.json.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /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.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/customers/#{customer_id}/addresses.json.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/customers.json and GET /admin/api/2019-10/customers/search.json.

Anchor to DiscountCodes (Price Rules)DiscountCodes (Price Rules)

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/price_rules/#{price_rule_id}/discount_codes.json.

Anchor to Disputes (Shopify Payments)Disputes (Shopify Payments)

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/shopify_payments/disputes.json.
  • No longer accept limits over 250. Limits over 250 return an error.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/draft_orders.json.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/orders/#{order_id}/fulfillments.json.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/gift_cards.json and GET /admin/api/2019-10/gift_cards/search.json.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/inventory_items.json.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/inventory_levels.json.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/locations/#{location_id}/inventory_levels.json.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/marketing_events.json.
  • offset is deprecated, it returns an error if a value is passed. You can use since_id instead.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/orders.json.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/orders/#{order_id}/risks.json.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/pages.json.

Anchor to Payouts (Shopify Payments)Payouts (Shopify Payments)

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/shopify_payments/payouts.json.
  • No longer accept limits over 250. Limits over 250 return an error.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/product_listings/product_ids.json.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/product_listings/product_ids.json.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/products/#{product_id}/variants.json.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/redirects/#{redirect_id}.json.
  • Requests that pass a value for path and target will match only if the value is the same as the complete value. Partial matches aren't supported.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/orders/#{order_id}/refunds.json.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/reports.json.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/script_tags.json.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /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.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/tender_transactions.json.

Anchor to Transactions (Shopify Payments)Transactions (Shopify Payments)

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/shopify_payments/balance/transactions.json.
  • No longer accept limits over 250. Limits over 250 return an error.

  • Removed the page filter, and replaced page-based pagination with cursor-based pagination for GET /admin/api/2019-10/webhooks.json.

Deprecation for legacy inventory behavior is extended to all apps. To learn more, refer to Migrating to support multiple locations.

Removed fields

  • inventory_quantity_adjustment field was removed from Product Variant

  • inventory_quantity field was removed from Product Variant

  • restock field was removed from Refund

    Required fields

  • location_id is required when creating fulfillments

  • location_id and restock_type are required when creating refunds

The checkout payment flow now supports customer authentication with 3D Secure. To learn more, refer to Authenticating payments with 3D Secure.

  • Added the next_action property for authenticating payments with 3D Secure.

  • Added the next_action property for authenticating payments with 3D Secure.

The following changes have been made to the Webhook resource:

New properties


Anchor to GraphQL Admin API changesGraphQL Admin API changes

Below are all the changes introduced in the 2019-10 version of the GraphQL Admin API.

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

Deprecation for legacy inventory behavior is extended to all apps. To learn more, refer to Migrating to support multiple locations.

Removed fields

  • restock field was removed from RefundInput
  • inventoryQuantityAdjustment field was removed from ProductVariantInput
  • inventoryQuantity field was removed from ProductVariantInput

With bulk operations, you can fetch data asynchronously in bulk. To learn more, refer to Performing bulk operations with GraphQL.

New types

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

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

The following missing fields that were available in the REST Admin API were added to the ShippingLine object type.

New fields

Anchor to Minor non-breaking changesMinor non-breaking changes

Updated types


Anchor to Storefront API changesStorefront API changes

Below are all the changes introduced in the 2019-10 version of the Storefront API.

The checkout payment flow now supports customer authentication with 3D Secure. To learn more, refer to Authenticating payments with 3D Secure.

New fields

  • nextActionUrl was added to Payment

Anchor to Minor non-breaking changesMinor non-breaking changes

Anchor to Corresponding Buy SDK versionsCorresponding Buy SDK versions

SDKSupported Versions
Mobile Buy SDK Android3.6.0
Mobile Buy SDK iOS3.6.1
Unity Buy SDK1.2.0
JS Buy SDK2.8.0, 2.8.1
Buy Button JSN/A

Was this page helpful?