Skip to main content

API Changelog

Track breaking changes, new endpoints, and removed endpoints between Shoplazza OpenAPI versions. Versions follow the vYYYYMM naming convention.

Current
v202701Current

v202701​

Version info​

FieldValue
Released2026-10-10
StatusCurrent
API prefix/openapi/2027-01/
Previous/openapi/2026-07/
SunsetTBD
API referencev202701 API Reference

Summary​

  • Increments the API prefix from 2026-07 to 2027-01.
  • Aligns with internal services: removes deprecated or never-returned fields, normalizes the casing of several field names, and corrects field types to match the internal APIs.
  • Adds an extra_info field to the refund record list endpoints.

Breaking changes​

Removed fields​

FieldEndpointsNotes
variants[].whole_pricesGET /products, POST /products, GET /products/{product_id}, PUT /products/{product_id}, GET /products/{product_id}/variants, POST /products/{product_id}/variants, GET /products/sku/{sku}/variants, GET /variants/{variant_id}, PUT /variants/{variant_id}, PUT /variants/sku/{sku}Deprecated alias of wholesale_price; use wholesale_price instead
order.refund_statusGET /orders, GET /orders/{order_id}, GET /orders/number/{number}, POST /orders, PUT /orders/{order_id}, POST /orders/{order_id}/cancel, POST /orders/{order_id}/payment/successNever returned since 2026-01; read refund status from financial_status

Renamed fields​

EndpointBefore (v2026-07)After (v2027-01)
GET /products/{product_id}/inventorydata.Stockdata.stock
POST /procurements, PATCH /procurements/{procurement_id}/canceldata.Procurementdata.procurement
GET /collections/countdata.Countdata.count
GET /metafields/{owner_resource}/{owner_id}/countdata.total_countdata.count
POST /blogs, PUT /blogs/{id}Request body blog.TitleRequest body blog.title

Blog request binding is case-insensitive, so both Title and title are accepted; this is a documentation fix only.

Type changes​

FieldEndpointsBeforeAfter
stockPOST /inventory_levels/set (request), GET /products/{product_id}/inventory (stock, variants[].location_items[].stock)int32int64
stock_adjustmentPUT /inventory_levels (request)int32int64
pricePOST /recurring_application_charges, POST /recurring_application_charges/{charge_id}/usage_charge (request)floatstring
capped_amountPUT /recurring_application_charges/{charge_id}/customize (request)floatstring
price, usage_price, commission_price, commission_rateGET /transactions/{transaction_id}floatstring
tagsGET /orders, GET /orders/{order_id}, GET /orders/number/{number}, POST /orders, PUT /orders/{order_id}, POST /orders/{order_id}/cancel, POST /orders/{order_id}/payment/successstringstring[]

Monetary values are passed as decimal strings (for example "9.99") to avoid floating-point precision loss.

Changed (non-breaking)​

  • GET /orders/refund_records, GET /orders/{order_id}/refund: refund records now include an extra_info object (with pos: additional POS information), returning the extra information stored on the refund record as-is.

Migration guide​

  1. Wholesale prices: use wholesale_price when reading or writing variant wholesale prices.
  2. Order refund status: stop reading refund_status; use financial_status instead.
  3. Field casing: change Stock, Procurement, and Count to lowercase as listed above; read metafield counts from count.
  4. Amount and quantity types: send billing amounts as strings, treat stock quantities as 64-bit integers, and parse order tags as an array of strings.
Supported
v202607Supported

v202607​

Version info​

FieldValue
ReleasedTBD
StatusSupported
API prefix/openapi/2026-07/
Previous/openapi/2026-01/
SunsetTBD
API referencev202607 API Reference

Summary​

  • This version is a routine release that increments the API prefix from 2026-01 to 2026-07.
  • Existing integrations using the previous prefix will continue to work with the same functional behavior under the new prefix.
  • Updating your API base path to /openapi/2026-07/ is required to access this version; no other migration steps are needed.
Supported
v202601Supported

v202601​

Version info​

FieldValue
ReleasedTBD
StatusSupported
API prefix/openapi/2026-01/
Previous/openapi/2025-06/
SunsetTBD
API referencev202601 API Reference

Summary​

  • Price rules and discount codes endpoints are fully replaced by a new unified Discounts API.
  • New discounts endpoints support automatic and non‑automatic discounts, code lookup, combine configurations, batch operations, and cancellation.
  • Asynchronous smart collection creation is introduced for better performance on large rules.
  • Several legacy endpoints (flash sales, rebates, popups, sales pop config) are removed without replacement.
  • Coupons API changes: listing (GET /coupons) is removed; a new POST /coupons endpoint is added.

Breaking changes​

Discounts & Price Rules​

The existing /price_rules and /discount_codes endpoints are replaced by the new /discounts endpoints. Use the following mapping to migrate your code.

Before (v2025-06)After (v2026-01)
GET /price_rulesGET /discounts
POST /price_rulesPOST /discounts/automatic or POST /discounts/non-automatic
GET /price_rules/{price_rule_id}GET /discounts/{id}
PUT /price_rules/{price_rule_id}PUT /discounts/automatic/{id} or PUT /discounts/non-automatic/{id}
DELETE /price_rules/{price_rule_id}DELETE /discounts/{id}
GET /price_rules/{price_rule_id}/discount_codesGET /discounts (filter by code) or GET /discounts/by-code/{discount_code}
POST /price_rules/{price_rule_id}/discount_codesPOST /discounts/non-automatic (creates a discount with a code)
GET /price_rules/{price_rule_id}/discount_codes/{discount_code_id}GET /discounts/{id} or GET /discounts/by-code/{discount_code}
PUT /price_rules/{price_rule_id}/discount_codes/{discount_code_id}PUT /discounts/non-automatic/{id}
DELETE /price_rules/{price_rule_id}/discount_codes/{discount_code_id}DELETE /discounts/{id}
GET /discount_codesGET /discounts
GET /discount_codes/lookupGET /discounts/by-code/{discount_code}

Coupons​

  • GET /coupons (list coupons) has been removed. There is no direct replacement.
  • POST /coupons is added (see Additions).

Additions​

The following new endpoints are introduced:

  • Coupons
    • POST /coupons — Create coupon
    • GET /coupons/{id} — Get coupon
    • PUT /coupons/{id} — Update coupon
  • Discounts
    • GET /discounts — List discounts
    • POST /discounts/automatic — Create automatic discount
    • PUT /discounts/automatic/{id} — Update automatic discount
    • POST /discounts/batch-delete — Batch delete discounts
    • GET /discounts/by-code/{discount_code} — Get discount by code
    • POST /discounts/cancel — Cancel discounts
    • PUT /discounts/combine — Configure which discount types can be combined
    • POST /discounts/non-automatic — Create non‑automatic discount
    • PUT /discounts/non-automatic/{id} — Update non‑automatic discount
    • POST /discounts/restart — Restart discount
    • GET /discounts/{id} — Get discount
    • DELETE /discounts/{id} — Delete discount
  • Collections
    • POST /collections/async — Asynchronously create a smart collection
    • GET /collections/async-task/{id} — Get collection async task
    • PATCH /collections/{id}/smart-rule — Update smart collection rules
    • PATCH /collections/{id}/smart-rule/async — Asynchronously update smart collection rules

Changes (non‑breaking)​

  • DELETE /products — Delete product (new method on existing path).

Removed without replacement​

The following endpoints have been removed and have no direct replacement:

  • POST /coupons/receive — Receive coupon
  • GET /discount_flash_sales — List discount flash sales
  • GET /discount_rebates — List discount rebates
  • GET /popups — List popups
  • GET /price_rules/count — Get price rule count
  • POST /price_rules/{price_rule_id}/discount_codes/batch — Batch create discount codes
  • GET /salespops/config — Get sales pop config

Migration​

  1. Price rules to discounts: Replace all calls to /price_rules and /discount_codes with the corresponding /discounts endpoints listed in the Breaking changes table. Note that the new API requires distinguishing between automatic and non‑automatic discounts.
  2. Coupon listing: If your application relied on GET /coupons to list coupons, use the new GET /discounts endpoint (which includes all discount types) or adopt the individual coupon retrieval via GET /coupons/{id}.
  3. Batch discount code creation: The batch endpoint is removed. Create discounts individually using POST /discounts/non-automatic.
  4. Count endpoint: Use pagination (page/limit) on GET /discounts instead of the removed /price_rules/count.

Schema & behavior​

Field-level changes are not listed in this changelog. For detailed request/response schemas and behavior changes, refer to the API reference.

Supported
v202506Supported

v202506​

Version info​

FieldValue
ReleasedTBD
StatusSupported
API prefix/openapi/2025-06/
Previous202201
SunsetTBD
API referencev202506 API Reference

Summary​

  • Consolidated data analysis – Legacy data endpoints are replaced with a unified /data-analysis API offering granular insights by SKU, SPU, landing page, and UTM.
  • Modern inventory management – Full CRUD for inventory items and levels, plus location management with priority and deactivation support.
  • Simplified payment & settlement – All shoplazza-payment endpoints are now version‑prefixed, providing consistent access to balances, disputes, payouts, refunds, and settlements.
  • Streamlined resource paths – Key resources (orders, customers, procurements, script_tags, metafields) adopt cleaner, parameter‑consistent paths.
  • New capabilities – App proxies, articles & blogs, gift card batch creation, theme file versioning, and advanced shipping schema management are now available.

Breaking changes​

Carrier Services​

  • The POST /carrier_services/ (with trailing slash) endpoint is removed. Use the new POST /carrier_services without trailing slash.
BeforeAfter
POST /{ver}/carrier_services/POST /{ver}/carrier_services

Data Analysis​

  • The legacy GET /data/analysis, GET /data/count, GET /data/query, GET /data/task, and GET /data/tasks endpoints are removed without direct replacement. Use the new Data Analysis API instead.
BeforeAfter
GET /{ver}/data/analysisPOST /{ver}/data-analysis (and related sub‑endpoints)
GET /{ver}/data/queryPOST /{ver}/data-analysis (and sub‑endpoints)
GET /{ver}/data/taskPOST /{ver}/data-analysis (and sub‑endpoints)
GET /{ver}/data/tasksPOST /{ver}/data-analysis (and sub‑endpoints)
GET /{ver}/data/count(no replacement)

Files​

  • The GET method on /{ver}/file/{file_uri} is removed.
BeforeAfter
GET /{ver}/file/{file_uri}Use GET /{ver}/file/detail/{file_uri}

Inventory & Locations​

  • The GET /{ver}/statistics/inventory/cost_price and GET /{ver}/statistics/inventory/loss_quantity endpoints are removed. Use the new Inventory Items and Inventory Levels endpoints.
BeforeAfter
GET /{ver}/statistics/inventory/cost_priceGET /{ver}/inventory_items (and related)
GET /{ver}/statistics/inventory/loss_quantityGET /{ver}/inventory_items (and related)

Orders & Customers​

  • All order and customer sub‑endpoints now use {order_id} and {customer_id} instead of {id}.
BeforeAfter
GET/PUT/DELETE /{ver}/orders/{id}GET/PUT/DELETE /{ver}/orders/{order_id}
POST /{ver}/orders/{id}/cancelPOST /{ver}/orders/{order_id}/cancel
POST /{ver}/orders/{id}/payment/successPOST /{ver}/orders/{order_id}/payment/success
GET/POST /{ver}/orders/{id}/refundGET/POST /{ver}/orders/{order_id}/refund
GET/POST /{ver}/orders/{id}/transactionsGET /{ver}/orders/{order_id}/transactions
GET /{ver}/orders/{id}/risksNow GET /{ver}/orders/{order_id}/risks (no change in path)
GET/PUT /{ver}/customers/{id}GET/PUT /{ver}/customers/{customer_id}

Payment App Callbacks​

  • The POST /payments_apps/complete_callbacks and POST /payments_apps/notify_callbacks endpoints are removed. Use the new POST /payments_apps/configure for configuration; callback handling may be replaced by webhooks.
BeforeAfter
POST /{ver}/payments_apps/complete_callbacks(no direct replacement)
POST /{ver}/payments_apps/notify_callbacks(no direct replacement)

Price Rules​

  • The DELETE method on /{ver}/price_rules/{price_rule_id}/discount_codes is removed. Use DELETE /{ver}/price_rules/{price_rule_id}/discount_codes/{discount_code_id} to delete a single discount code.
BeforeAfter
DELETE /{ver}/price_rules/{price_rule_id}/discount_codesDELETE /{ver}/price_rules/{price_rule_id}/discount_codes/{discount_code_id}

Procurements & Stock Management​

  • All procurement endpoints are moved from /center/procurements and direct /procurements to a unified /procurements/{procurement_id} pattern.
BeforeAfter
GET /{ver}/center/procurementsGET /{ver}/procurements/{procurement_id} (and list via search)
GET /{ver}/center/procurements/{procurement_id}GET /{ver}/procurements/{procurement_id}
GET /{ver}/center/procurements/{procurement_id}/itemsGET /{ver}/procurements/{procurement_id}/items
GET /{ver}/procurements/{id}GET /{ver}/procurements/{procurement_id}
PUT /{ver}/procurements/{id}PUT /{ver}/procurements/{procurement_id}
PATCH /{ver}/procurements/{id}/cancelPATCH /{ver}/procurements/{procurement_id}/cancel
GET/POST/DELETE /{ver}/procurements/{id}/itemsGET/PUT/POST/DELETE /{ver}/procurements/{procurement_id}/items
PUT /{ver}/procurments/{id}/items (note typo)PUT /{ver}/procurements/{procurement_id}/items
PATCH /{ver}/procurements/{id}/receivePATCH /{ver}/procurements/{procurement_id}/receive
GET /{ver}/center/stock_adjust_orders(use Inventory Levels)
GET /{ver}/center/stock_adjust_orders/{id}(use Inventory Levels)
GET /{ver}/center/stock_adjust_orders/{id}/items(use Inventory Levels)
GET /{ver}/center/transfer_orders(use Inventory Levels)
GET /{ver}/center/transfer_orders/{id}(use Inventory Levels)
GET /{ver}/center/transfer_orders/{id}/items(use Inventory Levels)

Recurring Application Charges​

  • The path now uses {charge_id} instead of {recurring_charge_id}.
BeforeAfter
PUT /{ver}/recurring_application_charges/{recurring_charge_id}/customizePUT /{ver}/recurring_application_charges/{charge_id}/customize
GET/POST /{ver}/recurring_application_charges/{recurring_charge_id}/usage_chargeGET/POST /{ver}/recurring_application_charges/{charge_id}/usage_charge
GET /{ver}/recurring_application_charges/{recurring_charge_id}/usage_charge/{usage_charge_id}GET /{ver}/recurring_application_charges/{charge_id}/usage_charge/{usage_charge_id}

Script Tags​

  • The old script_tags_new endpoints are removed. Use the new /script_tags endpoints (without _new).
BeforeAfter
GET/POST /{ver}/script_tags_newGET/POST /{ver}/script_tags
GET /{ver}/script_tags_new/countGET /{ver}/script_tags/count
GET/PUT/DELETE /{ver}/script_tags_new/{id}GET/PUT/DELETE /{ver}/script_tags/{script_tag_id}

Metafields​

  • Metafield paths are restructured under /metafields/{owner_resource}/{owner_id}. Shop‑level metafields are now under /metafields-shop.
BeforeAfter
GET/POST /{ver}/{resource}/{resource_id}/metafieldsGET/POST /{ver}/metafields/{owner_resource}/{owner_id}
GET /{ver}/{resource}/{resource_id}/metafields/countGET /{ver}/metafields/{owner_resource}/{owner_id}/count
GET/PATCH/DELETE /{ver}/{resource}/{resource_id}/metafields/{id}GET/PATCH/DELETE /{ver}/metafields/{owner_resource}/{owner_id}/{id}
(no shop metafields in old version)GET/POST /{ver}/metafields-shop (new)

Areas​

  • The area endpoint now uses {country} instead of {country_code} and adds POST/DELETE support.
BeforeAfter
GET /{ver}/areas/country/{country_code}/provinceGET /{ver}/areas/country/{country}/province

Discount Flash Sales​

  • Endpoint renamed from discount_flashsales to discount_flash_sales.
BeforeAfter
GET /{ver}/discount_flashsalesGET /{ver}/discount_flash_sales

Themes​

  • Several theme endpoints are removed. Use the new theme versioning and file management endpoints.
BeforeAfter
POST /{ver}/themes/uploadPOST /{ver}/themes/{theme_id}/upgrade (for upgrades)
POST /{ver}/themes/{theme_id}/doc-assetPUT /{ver}/themes/{theme_id}/doc-rename (for file management)
GET /{ver}/themes/{theme_id}/downloadGET /{ver}/themes/task/{task_id} (for theme task status)

Tracking​

  • GET /{ver}/tracking-codes is removed. Use the new /tracking/carriers endpoints.
BeforeAfter
GET /{ver}/tracking-codesGET /{ver}/tracking/carriers (and /detect)

Other Removals​

  • GET /{ver}/salespops/datagraph is removed without replacement.
  • GET /{ver}/orders/after_sales_list is removed. Use GET /{ver}/orders/post_sales.

Additions​

  • App Proxies – GET/POST /{ver}/app-proxies, GET /{ver}/app-proxies/count, GET/DELETE /{ver}/app-proxies/{id}
  • Application Charges – GET /{ver}/application_charges/{charge_id}/transactions
  • Areas – POST/DELETE /{ver}/areas/country/{country}/province, GET /{ver}/areas/{code}/children
  • Articles & Blogs – Full CRUD for /articles and /blogs (list, create, get, update, delete, count, authors)
  • Categories – GET /{ver}/categories
  • Collects – POST /{ver}/collects/batch
  • Data Analysis – POST /{ver}/data-analysis, /data-analysis/land-page, /data-analysis/sku, /data-analysis/spu, /data-analysis/utm
  • Discount Flash Sales – GET /{ver}/discount_flash_sales
  • Files – GET /{ver}/file/detail/{file_uri}
  • Gift Cards – POST /{ver}/gift_cards/batch
  • Inventory – Full CRUD for /inventory_items and /inventory_levels, plus /inventory_items/variant, /inventory_items/{inventory_item_id}, /inventory_levels/set
  • Locations – Management endpoints: list, count, deactivate, default, priority, get by ID, list inventory levels per location
  • Metafields – Shop‑level (/metafields-shop) and resource‑level (/metafields/{owner_resource}/{owner_id}) with CRUD and count
  • OAuth – GET /{ver}/oauth/access_scopes
  • Orders – GET /{ver}/orders/post_sales
  • Pages – POST /{ver}/pages/details, DELETE /{ver}/pages/store-pages/batch, GET /{ver}/pages/store-pages/info
  • Payment – GET /{ver}/payment/channels
  • Payment Apps – POST /{ver}/payments_apps/configure
  • Price Rules – POST /{ver}/price_rules/{price_rule_id}/discount_codes/batch
  • Procurements – Added methods PUT and merge of /items (now includes batch update)
  • Recurring Application Charges – GET /{ver}/recurring_application_charges/{charge_id}/transactions
  • Script Tags – Replaced script_tags_new with /script_tags
  • Shipping – POST /{ver}/shipping-lines/available-lines, GET/POST /{ver}/shipping-schemas/general, POST /{ver}/shipping-schemas/shipping-zone, PUT/DELETE /{ver}/shipping-schemas/shipping-zone/{id}
  • Shoplazza Payment – Added GET /{ver}/shoplazza-payment/balance and GET /{ver}/shoplazza-payment/balance/details
  • Themes – GET /{ver}/themes/task/{task_id}, PUT /{ver}/themes/{theme_id}/doc-rename, multiple version‑related endpoints
  • Tracking – GET /{ver}/tracking/carriers, GET /{ver}/tracking/carriers/detect
  • Transactions – GET /{ver}/transactions/{transaction_id}

Changes​

The following endpoints have new methods added without breaking existing calls:

  • POST /{ver}/carrier_services – New endpoint for creating a carrier service.
  • GET /{ver}/orders/{order_id}/risks – New method to retrieve order risk information.
  • DELETE /{ver}/pages/{id} – New method to delete a page.
  • DELETE /{ver}/price_rules/{price_rule_id}/discount_codes/{discount_code_id} – New method to delete a single discount code.

Removed without replacement​

The following endpoints have been removed and no direct replacement is provided:

  • GET /{ver}/data/count
  • GET /{ver}/orders/after_sales_list
  • GET /{ver}/salespops/datagraph
  • GET /{ver}/statistics/inventory/cost_price
  • GET /{ver}/statistics/inventory/loss_quantity
  • POST /{ver}/themes/upload
  • POST /{ver}/themes/{theme_id}/doc-asset
  • GET /{ver}/themes/{theme_id}/download
  • POST /{ver}/payments_apps/complete_callbacks
  • POST /{ver}/payments_apps/notify_callbacks

Migration​

  1. Path & parameter updates – Update all requests to use the new parameter names ({order_id}, {customer_id}, {procurement_id}, {charge_id}, {script_tag_id}, etc.) and the new paths as shown in the Breaking changes tables. Remove the old /center/ prefix from procurement and stock endpoints.

  2. Data analysis – Replace calls to the removed GET /data/* endpoints with the new POST /data-analysis endpoints. Use the appropriate sub‑endpoint for your analysis type (SPU, SKU, landing page, UTM). The old GET /data/count has no replacement.

  3. Inventory statistics – The statistics/inventory endpoints are gone. Query inventory data using /inventory_items, /inventory_levels, and /locations.

  4. Payment app callbacks – If you used complete_callbacks or notify_callbacks, migrate to the POST /payments_apps/configure endpoint and consider using webhooks for callback handling.

  5. Theme uploads & downloads – Theme upload/download are removed. Use /themes/{theme_id}/upgrade to upgrade a theme and the new file management endpoints for asset operations.

  6. Discount codes – Batch deletion of discount codes is no longer supported via DELETE /discount_codes. Delete individual codes using DELETE /discount_codes/{discount_code_id} or use the new POST /discount_codes/batch.

  7. Metafields – Migrate from the dynamic /{resource}/{resource_id}/metafields pattern to the dedicated /metafields/{owner_resource}/{owner_id} paths. Shop metafields now have their own endpoints under /metafields-shop.

Schema & behavior​

Field‑level changes are not listed in this changelog. For details on request/response schemas, refer to the API reference.

Supported
v202201Supported

v202201​

Version info​

ReleasedStatusAPI prefixPreviousSunsetAPI reference
TBDSupported/openapi/2022-01/—TBD/api/202201/openapi

Summary​

  • This version establishes the initial changelog baseline for the 2022‑01 API.
  • The API prefix is /openapi/2022-01/, covering a total of 150 endpoints.
  • All existing endpoints in this version remain unchanged; no prior version is available for comparison.
  • This baseline serves as the reference point for all future breaking changes, additions, and removals.
  • No client‑affecting changes exist in this version; it is provided solely to anchor the changelog history.