Skip to content

Commit 08f565d

Browse files
authored
fix: promote reverse_domain_name to standalone type (#260)
Extract reverse_domain_name from ucp.json $defs into shopping/types/reverse_domain_name.json. Update all propertyNames refs in ucp.json to point to the standalone file directly. The docs renderer generates page-local anchors for $defs entries (prefixed with the parent schema name), but standalone types get rendered on the reference page with a linkable section. The $defs indirection caused broken #ucp-reverse-domain-name anchors on checkout, cart, catalog, and reference pages.
1 parent 0bcc5c2 commit 08f565d

2 files changed

Lines changed: 12 additions & 10 deletions

File tree

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"$schema": "https://json-schema.org/draft/2020-12/schema",
3+
"$id": "https://ucp.dev/schemas/shopping/types/reverse_domain_name.json",
4+
"title": "Reverse Domain Name",
5+
"description": "Reverse-domain identifier used for collision-safe namespacing of capabilities, services, handlers, eligibility claims, and extension-contributed keys. Must contain at least two dot-separated segments (e.g., 'dev.ucp.shopping.checkout', 'com.example.loyalty_gold').",
6+
"type": "string",
7+
"pattern": "^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+$"
8+
}

source/schemas/ucp.json

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,6 @@
1111
"description": "UCP version in YYYY-MM-DD format."
1212
},
1313

14-
"reverse_domain_name": {
15-
"type": "string",
16-
"pattern": "^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9_]*)+$",
17-
"description": "Reverse-domain identifier (e.g., com.google.pay, dev.ucp.shopping.checkout)"
18-
},
19-
2014
"version_constraint": {
2115
"type": "object",
2216
"description": "Version range requirement with minimum and optional maximum.",
@@ -45,7 +39,7 @@
4539
"capabilities": {
4640
"type": "object",
4741
"description": "Required capability versions, keyed by capability name. Keys must be a subset of the extension's $defs keys.",
48-
"propertyNames": { "$ref": "#/$defs/reverse_domain_name" },
42+
"propertyNames": { "$ref": "shopping/types/reverse_domain_name.json" },
4943
"additionalProperties": { "$ref": "#/$defs/version_constraint" }
5044
}
5145
},
@@ -98,7 +92,7 @@
9892
"services": {
9993
"type": "object",
10094
"description": "Service registry keyed by reverse-domain name.",
101-
"propertyNames": { "$ref": "#/$defs/reverse_domain_name" },
95+
"propertyNames": { "$ref": "shopping/types/reverse_domain_name.json" },
10296
"additionalProperties": {
10397
"type": "array",
10498
"items": { "$ref": "service.json#/$defs/base" }
@@ -107,7 +101,7 @@
107101
"capabilities": {
108102
"type": "object",
109103
"description": "Capability registry keyed by reverse-domain name.",
110-
"propertyNames": { "$ref": "#/$defs/reverse_domain_name" },
104+
"propertyNames": { "$ref": "shopping/types/reverse_domain_name.json" },
111105
"additionalProperties": {
112106
"type": "array",
113107
"items": { "$ref": "capability.json#/$defs/base" }
@@ -116,7 +110,7 @@
116110
"payment_handlers": {
117111
"type": "object",
118112
"description": "Payment handler registry keyed by reverse-domain name.",
119-
"propertyNames": { "$ref": "#/$defs/reverse_domain_name" },
113+
"propertyNames": { "$ref": "shopping/types/reverse_domain_name.json" },
120114
"additionalProperties": {
121115
"type": "array",
122116
"items": { "$ref": "payment_handler.json#/$defs/base" }

0 commit comments

Comments
 (0)