This release introduces major protocol enhancements, key structural refactorings to support multi-vertical expansion, payments security improvements (3DS2) and structured request constraints, independent capability versioning, and grocery vertical readiness.
π Executive Summary
- π Multi-Vertical Refactoring: Foundation laid for supporting Food and Lodging verticals alongside Shopping, with polymorphic token binding and vertical-agnostic payment constructs.
- π Grocery Vertical Readiness: Introduction of Location Search & Lookup capabilities, deterministic operating hours, fulfillment location context, and fractional quantities with sale-basis pricing steps.
- π Payments Security & Structured Constraints: Implementation of vendor-agnostic 3D Secure (3DS2) authentication flows via Actions, response-carried
$requestConstraints(with path targeting &anyOf), and split PAN / Network Token credentials. - π Payment Terms & Schedules: Deferred payments, deposits, and installment schedules, along with multi-instrument Split Payments.
- π¦ Capability Versioning & Architecture: Tightened the core version release contract for UCP and version negotiation strategy while also introducing support for namespace ordering (
map_order). - π€ Identity & Consent Overhaul: Modernized UCPβs identity and consent architectureβintroducing reverse-DNS consent, delegated IdPs, and canonical profile keysβwhile launching the loyalty extension for interoperable reward ecosystems.
β¨ New Capabilities & Detailed Changes
1. Core Protocol & Infrastructure
- β‘ Actions Primitive (#582): Introduces a horizontal, extension-defined
actions[]array to Cart, Checkout, and Catalog. Allows businesses to request out-of-band actions (like authentication or form-filling) from the platform. - π·οΈ Namespace Reservation & Ordering (#657): Reserves the
ucpprotocol namespace and addsmap_orderto enforce registry ordering. - π Namespace Authority Binding (#530, #627): Defines how platforms verify that a business has authority over a reverse-DNS namespace via DNS/host matching.
- π¦ Capability Versioning (#614): Clarified and tightened the core version release contract, establishing formal guidelines for date-based capability versioning and forward compatibility across protocol updates.
- π Vertical Refactoring (#723, #736, #741, #761): Restructured the repository layout into domain verticals (Shopping, Payment, Common) and centralized common primitives in
common/types/and refactors payment extensions intodev.ucp.common.payment.*. - π Polymorphic Token Binding (#746): Refactors token binding to be vertical-agnostic and polymorphic across multiple verticals.
2. Grocery & Location Capabilities
- π Location Search + Lookup (#589, #642, #753, #765, #766): Adds capability to search for physical store locations and lookup details (address, hours, geocoding) with location context hints and correlation.
- π Deterministic Operating Hours (#687): Standardizes how businesses publish regular and exception hours with timezone handling for pickup locations.
- π·οΈ Explicit Destination Types (#688): Requires explicit tagged destination types (
shippingvspickup) in fulfillment methods to prevent ambiguous union matches. - βοΈ Fractional Quantities & Sale-Basis (#597, #653): Allows purchasing products in non-integer quantities (e.g., weighted items by kg, lb), defines price/quantity steps, and enforces an integer bound cap.
- πΊοΈ Fulfillment Location Context (#671): Connects negotiated fulfillment methods directly to specific location contexts across Catalog, Cart, and Checkout.
3. Payments & Security
- π 3DS2 Authentication (#458): Implements vendor-agnostic 3D Secure (3DS2) support (Device Data Collection and Challenge flows) using the Actions primitive.
- β οΈ Response-Carried Request Constraints (#655, #744, #757): Introduces
$requestConstraintsallowing businesses to return transaction-specific schema validation rules for subsequent requests, including path targeting andanyOfconstraint evaluation. - π³ Instrument Requirements & Credential Splitting (#424): Expresses instrument requirements via constraints and splits PAN and Network Token into explicit, distinct credential types.
- π Payment Terms & Schedules (#602, #603): Introduces payment schedules (simple and well-defined terms) supporting deferred payments, deposits, and installments at checkout.
- π₯ Split Payments (#409): Adds support for split payments across multiple instruments.
4. Identity, Consent & Loyalty
- π Delegated Identity Providers (#423): Standardizes accelerated IdP sign-in flows and delegation mechanisms.
- π Loyalty Extension (#340): Formalizes the Loyalty capability across Catalog, Cart, and Checkout, transitioning from legacy discount-based workarounds.
- π€ Web Bot Auth (WBA) Interop (#483): Introduces WBA interop to allow automated agentic auth negotiation.
- π Canonical Profile Keys (#566): Promotes
keys[](JWK Set) as the sole canonical signing key field. - π‘οΈ Extensible Buyer Consent (#451): Restructures buyer consent from fixed booleans into a dynamic, reverse-DNS keyed map supporting granular, per-segment opt-in purposes.
5. Shopping Enhancements & Fixes
- π£ Attribution (#391): Adds support for platform-driven referral and ad attribution context.
- π Policies (#572): Adds a
policies[]snapshot to Cart, Checkout, Catalog, and Order to carry return, refund, and warranty terms. - π Shopping Permalink (#523): Adds permalink capabilities to recreate cart states via URL (useful for email/QR codes).
- π οΈ Cart ID Fix (#633, #646): Standardizes
cart.idas omitted in update requests to simplify client implementations. - π·οΈ Discount Allocation Totals Path Fix (#558): Corrects totals path in discount allocation documentation examples.
π¨ Breaking Changes
The following changes are backward-incompatible and require schema updates:
-
Fulfillment Schema Restructure (#507, #581, #763)
-
Configuration Flags: Renamed flags to drop the
allows_prefix (multi_destination,method_combinations). -
Fulfillment Option: Upgraded
fulfillment_option.descriptionfrom a flat string to a structureddescriptionobject. -
Multi-Destination: Remodeled
multi_destinationconfiguration from a map to an array of objects. -
Method Types: Opened
fulfillment_available_method.typeenum tostring. -
Merchant Consolidation: Consolidated merchant configurations into
business_fulfillment_config.jsonand deletedmerchant_fulfillment_config.json.
-
Configuration Flags: Renamed flags to drop the
-
Buyer Consent Overhaul (#451)
-
Dynamic Map: Restructured
consentinbuyer_consent.jsonfrom fixed boolean fields to a dynamic map keyed by reverse-DNS identifiers (dev.ucp.consent.*), returning complexconsent_purposeobjects with granular segment-level opt-ins.
-
Dynamic Map: Restructured
-
Profile Keys Promotion (#566)
-
Canonical Signing Keys: Removed
signing_keys[]fromprofile.jsonand promotedkeys[](JWK Set) as the sole canonical signing key field to eliminate sync drift.
-
Canonical Signing Keys: Removed
-
Common Types & Vertical Refactoring (#436, #723, #736)
-
Hierarchy Restructure: Reorganized specification hierarchy into domain verticals (
shopping/,payment/,common/). -
Primitive Schemas: Moved shared primitive schemas under
common/types/(amount.json,price.json,line_item.json), changing their$idURLs.
-
Hierarchy Restructure: Reorganized specification hierarchy into domain verticals (
-
Payment Constructs & Extension Namespace Migration (#741)
-
Extension Namespacing: Migrated payment extensions from
dev.ucp.shopping.*todev.ucp.common.payment.*(split_payments,payment_terms,ap2_mandates). -
Schema Relocation: Relocated payment constructs to
common/types/payment.jsonas a vertical-agnostic capability.
-
Extension Namespacing: Migrated payment extensions from
-
Vertical Agnostic Token Binding (#746)
- Refactored token binding to be vertical agnostic and reusable across Retail, Food, Lodging and future verticals.
-
Structured Request Constraints & Instrument Credentials (#424, #655, #744, #757)
-
Dynamic Validation: Replaced static instrument requirement schemas with response-carried
$requestConstraintssupporting JSONPath targeting andanyOfconstraints. - Credential Splitting: Split PAN and Network Token into explicit, distinct credential types.
-
Dynamic Validation: Replaced static instrument requirement schemas with response-carried
-
Location Search + Lookup & Operating Hours (#589, #687, #688, #753)
-
Standardized Location: Replaced
retail_location.jsonwithcommon/types/location.json. -
Explicit Destination Types: Disambiguated fulfillment methods with explicit destination types (
shippingvspickup). - Operating Hours: Defined deterministic regular and exception operating hours with timezone precision.
-
Standardized Location: Replaced
-
Fractional Quantities & Sale-Basis (#597, #653)
-
Quantity Type: Upgraded Cart/Checkout
quantityfrom strict integer toanyOfinteger or structuredmeasure.jsonobject. - Sale-Basis Pricing: Defined transactional sale-basis steps for fractional units.
-
Integer Range Bounds: Enforced integer range bounds capped at $\pm(2^{53} - 1)$ with maximum
scale: 15.
-
Quantity Type: Upgraded Cart/Checkout
-
Cart ID Omission & Transition Cleanup (#633, #763, #639)
-
Cart ID Omission: Standardized
cart.idas omitted in update requests instead of required. -
Orphaned Schemas: Deleted orphaned
account_info.jsonand cleaned up deprecated test scaffolds.
-
Cart ID Omission: Standardized
-
Identity Linking OAuth 2.0 Foundation (#354)
- Capability Scopes: Introduced capability-driven OAuth 2.0 scopes for account linking.
Full Changelog: release/2026-04-08...v2026-08-25