API mid July 2026 improvements (1.6.8)
Additional API features, improvements and fixes that shipped to production in mid July 2026, on top of the earlier early July 2026 release.
- Added a
require_unique_phone_numberchain option (set viaalter-chain, returned byget-chain). When enabled,add-userandalter-userreject any request that would give two active accounts in the same app the same phone number, returning the newphone_number_already_existserror (code 555). When disabled (the default), duplicate phone numbers are still allowed and are only flagged via thephone_number_duplicatefield. Enforcement applies to new writes only; accounts that already share a phone number are left unchanged when the option is enabled. - Added two
value_calculation_ruleoptions forwallet_contributionreward methods on composable campaigns, configured throughalter-reward-method:fixed_value_per_basketawards the configuredvalueonce per qualifying basket, andfixed_value_per_spendawards thevaluefor eachspend_stepof basket spend (using the newspend_stepreward-method field). Unlike the existing per-itemfixed_valuerule, both are independent of item quantity. - Added the
get-campaign-barcode-conflictsendpoint. Given a chain, a list of barcodes and a reference date window, it returns each barcode that is shared with another campaign whose active date window overlaps the reference window, along with those campaigns' details. This makes it possible to detect barcode and scheduling clashes between campaigns in a single request. - Changed the chain
basket_campaign_require_format_assignmentoption so that a Business (store) assignment now also satisfies the requirement. When the option is enabled, an active BasketCampaign is accepted if it has either a Business Format assignment or a Business (store) assignment, aligning the API with the Console campaign activation checklist. - Changed date-time fields in Resources API responses to RFC 3339 format (a profile of ISO 8601), normalised to UTC (for example
2026-07-07T15:30:23+00:00), for API version 1.6.8 and above. Earlier API versions continue to receive the previousY-m-d H:i:sformat for backwards compatibility. - Removed the
shopperobject from the transaction/receipt response. Member identity is now carried solely by theuserfield, which already contains the same name, contact, membership and address details, so the duplicateshopperblock is no longer returned.