Skip to content

Clarification on well-known endpoint and possible combinatorial explosion of versions #273

@matthutchinson

Description

@matthutchinson

As we work to implement UCP versioning on the well-known endpoint, should the merchant always list ALL supported versions of the UCP version's available capabilities and extensions in their business profile.

As an example, would the well-known endpoint for UCP draft version include, both draft and 2026-01-23 (and any/all other prior) versions of the checkout capability (and same for capability extensions)?


	"ucp": {
		"version": "draft",
		"supported_versions": {
			"draft": "http://retro-rewind-shop.myshopify.com/.well-known/ucp/draft",
			"2026-01-23": "http://retro-rewind-shop.myshopify.com/.well-known/ucp/2026-01-23"
		},
		"services": { ... },
		"capabilities": {
			"dev.ucp.shopping.checkout": [
				{
					"version": "draft",
					"spec": "https://ucp.dev/latest/specification/checkout",
					"schema": "https://ucp.dev/latest/schemas/shopping/checkout.json"
				},
                                 {
					"version": "2026-01-23",
					"spec": "https://ucp.dev/2026-01-23/specification/checkout",
					"schema": "https://ucp.dev/2026-01-23/schemas/shopping/checkout.json"
				}
			],
                         "dev.ucp.shopping.fulfillment": [
                                  {
					"version": "draft",
					"spec": "https://ucp.dev/latest/specification/fulfillment",
					"schema": "https://ucp.dev/latest/schemas/shopping/fulfillment.json",
					"extends": "dev.ucp.shopping.checkout",
					"config": { ... }
				},
				{
					"version": "2026-01-23",
					"spec": "https://ucp.dev/2026-01-23/specification/fulfillment",
					"schema": "https://ucp.dev/2026-01-23/schemas/shopping/fulfillment.json",
					"extends": "dev.ucp.shopping.checkout",
					"config": { ... }
				}
			],

Since the well-known endpoint does not accept an agent profile (HTTP GET), I assume this is the case. But as versions grow, this list could become quite verbose, and also leads to a combinatorial explosion of versions to reason about, (at 3 levels);

  • UCP version
  • Capability version
  • Capability extension version

(but I assume this is intentional, and part of the spec's flexibility)

-- cc @richmolj / @igrigorik

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions