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: 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
- feat!: identity linking OAuth 2.0 foundation with capability-driven scopes by @amithanda in #354
- feat: attribution field for platform referral context by @igrigorik in #391
📝 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
- docs: omit deprecated checkout id from playground payload by @gaureshpai in #332
- docs: adds descriptions to links in llms-txt by @nicholasjameshall in #419
- docs: Fix typos and improve formatting in versioning by @pemamian in #416
- docs: enrich core-concepts with comprehensive UCP protocol overview by @amithanda in #336
- docs: add centralized glossary and acronym standards by @gsmith85 in #241
- docs: add extensibility and forward compatibility guidelines by @gsmith85 in #290
- docs: Modernize diagram in signatures.md by @gaureshpai in #331
- docs: Correct profile examples in docs Playground widget by @dkoch74 in #236
- docs: remove entity wrapper from MCP response examples by @jamesandersen in #360
- docs: fix accuracy issues in documentation pages by @pjordan in #365
- docs: fix inconsistencies in specification examples by @pjordan in #363
- docs: Update signature requirements in documentation (format only) by @TioBorracho in #242
- docs: update line item ids to differentiate from item ids by @thompson-tomo in #112
🛠 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
- fix!: Pull out dangling webhook fields into headers so transport reference only base schemas by @jingyli in #350
- fix!: rename variant.selected_options → options by @igrigorik in #356
- fix: add missing ucp_agent parameter to create_cart REST operation by @pjordan in #362
- fix!: repair profile schemas to pass validation & endpoint contract by @igrigorik in #429
- fix: Fix inconsistent schema on documentation examples & discounts extension schema by @jingyli in #371
- fix: render Total and Totals fields on schema reference page by @ynachiket in #352
- fix: standardize package registries in lockfile by @ptiper in #368
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