2019-10 release notes

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:

Developer preview

There are no new Shopify admin features for the API changes in version 2019-10, and no developer preview. Use a normal development store for your development environments.

To use the new API features, call the 2019-10 version of the API.

REST Admin API changes

Below are all the changes introduced in the 2019-10 release candidate of the REST Admin API.

Page-based pagination has been replaced by cursor-based pagination across the remaining REST endpoints.

All 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.

AbandonedCheckouts

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

Articles

  • 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.

Blogs

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

Comments

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

CustomCollections

  • 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.

CustomerAddresses

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

Customers

  • 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.

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.

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.

DraftOrders

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

Fulfillments

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

GiftCards

  • 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.

InventoryItems

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

InventoryLevels

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

LocationLevels

  • 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.

MarketingEvents

  • 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.

Orders

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

OrderRisks

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

Pages

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

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.

PriceRules

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

ProductIds

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

ProductVariants

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

Redirects

  • 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.

Refunds

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

Reports

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

ScriptTags

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

SmartCollections

  • 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.

TenderTransactions

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

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.

Webhooks

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

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

Checkout

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

Payment

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

The following changes have been made to the Webhook resource:

New properties

  • private_metafield_namespaces was 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

GraphQL 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 Getting started with delivery profiles.

Removed fields and types

  • activatedCarrierServices field was removed from QueryRoot
  • DeliveryCarrierServiceConnection type was removed

New types

Updated types

New fields

New mutations

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

New fields

  • currentBulkOperation field was added to QueryRoot

New mutations

You can manage translated content for multiple languages for Shopify resources. To learn more, refer to Translating content with the API.

New types

Updated types

New fields

New mutations

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

New fields

New mutations

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

New fields

Updated types

New fields

Storefront 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

Sign up for a Partner account to get started.

Sign up