What's Changed
✨ New Features
- feat(cart): Cart capability for basket building by @igrigorik in #73
- feat(extends): multi-parent support + deterministic schema resolution by @igrigorik in #96
- feat(errors): spec error handling for UCP negotiation failures by @igrigorik in #128
- feat(context): add
intentfield for relevance and personalization by @igrigorik in #95 - feat: Add first-class errors concept by @richmolj in #147
- feat: add ec_color_scheme query parameter to embedded checkouts by @westeezy in #157
- feat: signing for UCP requests & responses by @igrigorik in #156
- feat: Allow fulfillment method type (and id) to be optional on Fulfillment method updates by @matthutchinson in #143
- feat: add available_instruments to payment handler configurations by @raginpirate in #187
- feat: Adding currency field to top level of Order by @deinck6 in #210
- feat(errors): business logic error response for checkout and cart by @alexpark20 in #216
- feat(catalog): Catalog Search+Lookup capabilities for product discovery by @igrigorik in #55
- feat: extend discount capability to cart by @igrigorik in #246
- feat!: signals for authorization & abuse by @igrigorik in #203
- feat: eligibility claims & verification contract by @igrigorik in #250
- feat: formalize totals contract by @igrigorik in #261
- feat: extend warning to support disclosure contract by @igrigorik in #267
- feat(embedded): add link delegation extension by @westeezy in #247
- feat!: redesign identity linking with mechanism registry and capability-driven scopes by @amithanda in #265
- feat: Add
ec.totals.changeto Embedded Checkout Protocol by @lemonmade in #272 - feat!: update Order capability by @richmolj in #254
- feat!: Update the Order schema to make currency a required field by @deinck6 in #283
- feat: Add an optional label field on Order to hold additional identifiers by @jingyli in #326
- feat: get product operation for catalog.lookup by @igrigorik in #195
- feat!: Embedded protocol transport binding for cart capability + reauth mechanism in ECP by @jingyli in #244
- feat(order): Get Order operation w/ platform-auth by @richmolj in #276
- feat!: align embedded protocol errors with UCP error conventions by @westeezy in #325
📝 Documentation Updates
- docs: Remove google mention for line item id description by @ptiper in #119
- docs: fix broken image path in core-concepts.md by @dltkdgkr123 in #87
- docs: update CONTRIBUTING.md to reference
super_linter_local.pyscript by @drewolson-google in #138 - docs: Adding endorsed partners Block, Fiserv, Klarna, and Splitit to the documentation by @MitkoDeyanovMitev in #149
- docs(mcp): fix MCP examples & errors by @igrigorik in #141
- docs: Adding endorsed partner Affirm to the documentation by @dwdii in #166
- docs: Modernize diagrams by @gaureshpai in #99
- docs: rename Technical Committee to Tech Council (TC) by @ptiper in #168
- docs: Allow JSON and ucp-schema CLI not found errors to propagate up the call stack by @dwdii in #174
- docs: use fulfillment instead of shipping in order totals example by @muzaffersenkal in #76
- docs: Add endorsed partner Checkout.com to the documentation by @dwdii in #194
- docs: Update Contribution Guide link in README.md to .github repo. by @amithanda in #204
- docs: update broken links to CONTRIBUTING.md by @nearlyforget in #209
- docs: fix broken links and add dynamic versioning by @wry-ry in #226
- docs: update architecture diagrams and convert mobile version to JPG by @amithanda in #266
- docs: Update create checkout and update checkout request samples by @aksbro-gpu in #293
- docs: clarify the expectation for non-date protocol version by @alexpark20 in #324
- docs: fix outdated services+capability examples in docs by @igrigorik in #335
- docs: extract shared EP core, group transports in nav by @igrigorik in #339
🛠 Other Changes
- fix: Remove page level HTML tags from playground.md by @wry-ry in #124
- fix: update broken URLs in demo and documentation to use correct ucp.dev paths by @kiliczsh in #67
- chore: manage dependencies with uv by @drewolson-google in #126
- chore: respect .gitignore for biome linting by @drewolson-google in #130
- fix(schema): publish UCP annotated schemas by @igrigorik in #125
- chore: add script to run super linter locally by @drewolson-google in #132
- fix: Add UCP-Agent header to the openapi.json. by @semenovm in #120
- refactor: rename and version service transport definitions by @lemonmade in #154
- chore: Update Shopify TC rep: Lee Richmond > Aaron Glazer by @igrigorik in #165
- fix: update all broken schema references in documentation by @wry-ry in #160
- chore: remove unused quicktype dependency by @wry-ry in #197
- chore: add CODEOWNERS file by @nearlyforget in #167
- chore: follow-up to update CODEOWNERS with devops-maintainers for additional tooling files by @nearlyforget in #199
- refactor: fix versioning issues across ucp.dev by @wry-ry in #181
- chore: upgrade super-linter by @drewolson-google in #198
- fix: Image (core-concepts diagram) and spec link URLs broken after si… by @dwdii in #211
- fix: Fix for broken links across ucp.dev by @wry-ry in #213
- fix: Mark checkout id as deprecated_required_to_omit for update requests by @raginpirate in #145
- fix!: Shift our prior breaking change to gracefully leverage our UCP transition schema by @raginpirate in #196
- chore: Improve doc build error handling and local build ucp-schema version checking by @dwdii in #224
- fix: Resolve broken assets when a space was in the name. by @dwdii in #233
- fix: clarify version negotiation by @igrigorik in #200
- chore: update CODEOWNERS to implement a hierarchical authority structure by @nearlyforget in #234
- ci: disable Super-Linter from writing to PRs by @wry-ry in #243
- fix: re-update mkdocs-material to fix mkdocs build breakage by @wry-ry in #248
- fix: promote reverse_domain_name to standalone type by @igrigorik in #260
- ci: only set latest alias if this release is the latest by @wry-ry in #249
- fix: rebuild docs site by @wry-ry in #269
- fix: docs build cleanup by @wry-ry in #268
- chore(docs): overhaul CI pipeline, fix anchor links, and refine UI navigation by @wry-ry in #270
- fix: resolve file exists error when symlinking specification by @wry-ry in #278
- chore: Delete generate_ts_schema_types.js by @dwdii in #281
- chore: Remove local issue templates in favor of organization-level templates by @nearlyforget in #286
- ci: prepare for release by @wry-ry in #322
- fix!: update total to use signed_amount.json by @wry-ry in #299
- ci: don't run docs build on release cut by @wry-ry in #327
- fix(security): update lodash to fix Trivy vulnerabilities by @nearlyforget in #333
- fix: revert identity linking #265 update by @igrigorik in #329
- style!: Clean up transition & deprecated schema in preparation of a version cut by @jingyli in #341
New Contributors
- @ptiper made their first contribution in #119
- @kiliczsh made their first contribution in #67
- @dltkdgkr123 made their first contribution in #87
- @semenovm made their first contribution in #120
- @MitkoDeyanovMitev made their first contribution in #149
- @gaureshpai made their first contribution in #99
- @richmolj made their first contribution in #147
- @westeezy made their first contribution in #157
- @matthutchinson made their first contribution in #143
- @muzaffersenkal made their first contribution in #76
- @nearlyforget made their first contribution in #167
- @deinck6 made their first contribution in #210
- @alexpark20 made their first contribution in #216
- @dependabot[bot] made their first contribution in #169
- @jingyli made their first contribution in #326
Full Changelog: v2026-01-23...v2026-04-08