2.0 Beta

Smootify 2.0 is in public beta. Your 1.x store keeps working. Move when you want.

What changed

AJAX API

The Shopify theme AJAX endpoints Smootify 2.0 answers on the page.

v2.0 beta
Open .md
On this page
  1. Supported
  2. GET /cart.js, GET /cart.json
  3. POST /cart/add.js, POST /cart/add, POST /cart/add.json
  4. POST /cart/update.js, POST /cart/update.json
  5. POST /cart/change.js
  6. POST /cart/clear.js
  7. GET /products/{handle}.js, GET /products/{handle}.json
  8. GET /recommendations/products.json?product_id=&limit=&intent=
  9. GET /variants/{id}.json
  10. GET /search/suggest.json?q=&resources[type]=&resources[limit]=
  11. POST /localization
  12. POST /api/unstable/graphql.json
  13. Partly supported
  14. GET /products.json?limit=
  15. GET /collections/{handle}/products.json?limit=
  16. Not supported
  17. GET /cart/shipping_rates.json, POST /cart/prepare_shipping_rates.json
  18. /apps/*, /a/*, /community/*, /tools/* (GET)

Apps written for Shopify themes call these endpoints; Smootify answers them on the page with the response Shopify would give. ajaxApi: false in SmootifyUserOptions turns them off.

Supported

GET /cart.js, GET /cart.json

The same cart the page shows.

POST /cart/add.js, POST /cart/add, POST /cart/add.json

Form-encoded or JSON, items[], properties, selling_plan; sections ignored.

POST /cart/update.js, POST /cart/update.json

updates by id / key / index, note, attributes.

POST /cart/change.js

id / line, quantity, properties.

POST /cart/clear.js

GET /products/{handle}.js, GET /products/{handle}.json

From Smootify’s product cache when it already has the product, else from Shopify.

GET /recommendations/products.json?product_id=&limit=&intent=

related (default) or complementary.

GET /variants/{id}.json

REST shape { product_variant } (decimal string prices, grams, product_id, position), as the Online Store answers.

GET /search/suggest.json?q=&resources[type]=&resources[limit]=

Products, collections, pages, articles and query suggestions.

POST /localization

country_code / language_code change the market; no redirect (answers {})

POST /api/unstable/graphql.json

The customer privacy (consent) requests go to Shopify, as in 1.x.

Partly supported

GET /products.json?limit=

First page only (page>1 → [], the Storefront API paginates by cursor)

GET /collections/{handle}/products.json?limit=

First page only.

Not supported

GET /cart/shipping_rates.json, POST /cart/prepare_shipping_rates.json

422 with Shopify’s error shape (no shipping rates outside checkout)

/apps/*, /a/*, /community/*, /tools/* (GET)

Shopify app proxies need the Online Store: they reach the network (the debugger names them); only Shopify Inbox’s /apps/ba-rev gets an empty {}, as 1.x.

    ↑ ↓ to moveEnter to openEsc to close