Catalyst 1.12.1

Catalyst 1.12.1 preserves the Auth.js session-token cookie attributes your configuration sets, fixing a logout redirect loop on storefronts that use partitioned cookies.

  • Configured cookie attributes survive the browser-session rewrite — Catalyst rewrites the Auth.js session token into a browser-session cookie by dropping its expires and maxAge. That rewrite previously replaced every other attribute with a hardcoded default set, discarding anything the Auth.js cookies.sessionToken.options config had set. It now starts from those configured options and strips only expires and maxAge.
  • Partitioned cookies no longer duplicate — because browsers key a cookie by its partition as well as its name, rewriting a partitioned token without the partitioned attribute wrote a second session token rather than replacing the first. Logout cleared only the partitioned one, so the unpartitioned copy survived, kept the shopper signed in, and sent them into a redirect loop.

See the full 1.12.1 release notes for migration details and release tags.


Clearer Get Checkout reference

Thanks to user feedback, the REST Management API’s Get Checkout reference now explains how to use the include query parameter and where a checkout ID comes from.

  • Example include request — the endpoint description shows how to combine values such as consignments.available_shipping_options and cart.line_items.physical_items.stock_position in a single comma-separated list.
  • Checkout ID source — the description now points to the Create a cart and Get a cart endpoints and to the storefront checkout, since the checkout ID is the same as the cart ID.
  • Restored response examples — the checkout endpoints’ named response examples (available shipping options, selected shipping options, applied coupons, and promotions) now render on each reference page.

For details, see the Get Checkout reference:


GraphQL Schema Updates

Storefront GraphQL order queries can now link bundled child line items to the pick list option on the parent item that added them, and the paymentWallets query lists the store’s configured payment wallets.

Storefront GraphQL

  • Pick list links on order line items: carts and checkouts already expose this link through CartSelectedOption.attributeId and addedByAttributeId; the same fields now exist on orders, so an order history or post-purchase view can group bundled items under the option that added them.
    • attributeId on OrderLineItemProductOption: hashed ID for the selected product option.
    • addedByAttributeId on OrderPhysicalLineItem and OrderDigitalLineItem: matches the attributeId of the pick list option on the parent line item that added this item. Returns null for items that are not bundled children.
    • parentLineItemEntityId on OrderDigitalLineItem: ID of the parent line item, for parity with OrderPhysicalLineItem, which already had this field.
  • Payment wallets on the site query: the new paymentWallets field on Site returns a paginated connection of the store’s configured payment wallets, each with a providerName and methodName. Filter by cartEntityId or billingCountryCode through PaymentWalletsFilterInput.

For schema details, see the Storefront GraphQL API reference:


Identifying tax-exempt customers from an order

Thanks to user feedback, the Orders V2 Get Order reference now explains that the order object doesn’t carry a tax-exempt status, and how to find it. Tax exemption is a customer attribute stored in the tax_exempt_category field of the customer record, and a total_tax of 0 doesn’t mean the customer is exempt.

Orders V2

  • Get Order note: the endpoint description explains that exemption lives on the customer record, that you look it up with the order’s customer_id through the Customers API, and that guest orders (customer_id of 0) have no customer record to check.
  • total_tax field: the description now states that a zero value doesn’t indicate a tax-exempt customer.
  • customer_id field: previously undocumented. The description now covers the guest value of 0 and points to the Customers API for attributes not stored on the order.

Refer to: