feat(permalink): add ucp/version protocol version parameter - #793
Open
gil-- wants to merge 1 commit into
Open
Conversation
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
gil--
force-pushed
the
gil/permalink-ucp-version
branch
from
September 1, 2026 20:59
9782fea to
20b280f
Compare
A permalink is a browser GET with no version negotiation, and links outlive their authoring, so the URL must carry the release it was generated against. Add `ucp/version` as a control parameter in the reserved `ucp` root: - Platforms MUST include exactly one `ucp/version`, set to the `ucp.version` of the profile the endpoint was discovered from (dated release only). - Businesses select the release before resolving any field path or compact item token; MUST accept current and `supported_versions` releases and SHOULD keep resolving retired ones; absent -> documented default (SHOULD be oldest supported); unknown well-formed -> fall forward to the oldest later release; never answer with a UCP JSON `version_unsupported` error. - `ucp/version` is consumed on resolution and SHOULD NOT appear on the redirect URL; other `ucp/*` pointers are consumed and never applied. Updates the OpenAPI binding (shared `ucp_version` parameter, control parameter list) and the capability schema description accordingly.
gil--
force-pushed
the
gil/permalink-ucp-version
branch
from
September 1, 2026 20:59
20b280f to
3c51764
Compare
gil--
marked this pull request as ready for review
September 3, 2026 13:27
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
A shopping permalink is a browser
GETwith no version negotiation, and links outlive their authoring (emails, QR codes, social posts). Today nothing in the URL says which UCP release the field paths and compact item tokens were written against, so a Business cannot interpret an older link deterministically once its schemas move.This adds
ucp/versionas a protocol parameter in the reserveducproot of the permalink query string. It carries the same value asucp.versionin a profile (YYYY-MM-DD), so a permalink is pinned to one release.Platform requirements
ucp/versionin every generated permalink, set to theucp.versionof the profile the endpoint was discovered from (asupported_versionsleaf may carry its own endpoint at its own version).Business requirements
ucp/versionbefore resolving any field-path parameter or compact item token.supported_versionsrelease; SHOULD keep resolving retired releases (resolution-only compatibility).version_unsupportederror.ucp/*pointers are consumed and never applied as shopping state.Changes
docs/specification/permalink.md: new Protocol Version (ucp/version) section; discovery, URL shape, query processing (release selection precedes classification), redirect resolution, error handling, and all examples updated.source/services/shopping/permalink.openapi.json: shareducp_versionquery parameter on both routes;x-ucp-query-semantics.control_parametersnow["ucp/version", "continue_to"].source/schemas/shopping/permalink.json: description notes field paths are interpreted under the pinned release.Opened as a draft for early feedback on the semantics (in particular default-when-absent = oldest supported, and fall-forward for unknown versions), before any Enhancement Proposal if maintainers consider this a significant change.
Category (Required)
Related Issues
Follow-up to #523 (permalink capability).
Checklist
!for breaking changes).ucp-schema lint source/,scripts/validate_examples.py, cspell, markdownlint).descriptionchanged.)Screenshots / Logs (if applicable)
Not a breaking change:
ucp/versionis optional for Businesses to receive, and existing permalinks without it resolve under the Business's default release.