@pagefront/lint-commerce 0.12.1 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -13
- package/dist/catalogue.js +8 -2
- package/dist/collection-catalogue.d.ts +15 -0
- package/dist/collection-catalogue.js +31 -0
- package/dist/generated/release-manifest.d.ts +9 -0
- package/dist/generated/release-manifest.js +10 -0
- package/dist/generated/schema-ids.js +3 -0
- package/dist/generated/schemas.js +2744 -23
- package/dist/index.d.ts +3 -2
- package/dist/index.js +3 -2
- package/dist/lint-sheet.d.ts +4 -3
- package/dist/lint-sheet.js +9 -6
- package/dist/organization-catalogue.d.ts +4 -4
- package/dist/organization-catalogue.js +8 -6
- package/dist/overrides.d.ts +36 -0
- package/dist/overrides.js +5 -0
- package/dist/releases.d.ts +21 -6
- package/dist/releases.js +30 -8
- package/dist/rules/checkout-template.d.ts +69 -0
- package/dist/rules/checkout-template.js +165 -0
- package/dist/rules/col-e-001.d.ts +11 -0
- package/dist/rules/col-e-001.js +31 -0
- package/dist/rules/col-e-002.d.ts +2 -0
- package/dist/rules/col-e-002.js +37 -0
- package/dist/rules/col-e-003.d.ts +11 -0
- package/dist/rules/col-e-003.js +18 -0
- package/dist/rules/col-e-004.d.ts +12 -0
- package/dist/rules/col-e-004.js +19 -0
- package/dist/rules/col-e-005.d.ts +16 -0
- package/dist/rules/col-e-005.js +64 -0
- package/dist/rules/col-shared.d.ts +25 -0
- package/dist/rules/col-shared.js +43 -0
- package/dist/rules/col-w-001.d.ts +11 -0
- package/dist/rules/col-w-001.js +21 -0
- package/dist/rules/col-w-002.d.ts +12 -0
- package/dist/rules/col-w-002.js +31 -0
- package/dist/rules/col-w-004.d.ts +12 -0
- package/dist/rules/col-w-004.js +37 -0
- package/dist/rules/col-w-005.d.ts +12 -0
- package/dist/rules/col-w-005.js +41 -0
- package/dist/rules/col-w-006.d.ts +11 -0
- package/dist/rules/col-w-006.js +37 -0
- package/dist/rules/col-w-007.d.ts +13 -0
- package/dist/rules/col-w-007.js +32 -0
- package/dist/rules/org-w-007.d.ts +15 -0
- package/dist/rules/org-w-007.js +47 -0
- package/dist/rules/org-w-008.d.ts +15 -0
- package/dist/rules/org-w-008.js +59 -0
- package/dist/rules/pdp-e-005.d.ts +3 -1
- package/dist/rules/pdp-e-005.js +7 -5
- package/dist/rules/pdp-e-019.d.ts +2 -0
- package/dist/rules/pdp-e-019.js +50 -0
- package/dist/rules/pdp-e-020.d.ts +13 -0
- package/dist/rules/pdp-e-020.js +31 -0
- package/dist/rules/pdp-e-021.d.ts +11 -0
- package/dist/rules/pdp-e-021.js +32 -0
- package/dist/rules/pdp-e-022.d.ts +13 -0
- package/dist/rules/pdp-e-022.js +33 -0
- package/dist/rules/pdp-w-016.d.ts +4 -0
- package/dist/rules/pdp-w-016.js +7 -0
- package/dist/rules/pdp-w-021.js +1 -1
- package/dist/rules/pdp-w-031.d.ts +4 -4
- package/dist/rules/pdp-w-031.js +9 -7
- package/dist/rules/pdp-w-040.d.ts +12 -0
- package/dist/rules/pdp-w-040.js +37 -0
- package/dist/rules/pdp-w-041.d.ts +15 -0
- package/dist/rules/pdp-w-041.js +53 -0
- package/dist/rules/release-schema.d.ts +3 -2
- package/dist/rules/release-schema.js +11 -11
- package/dist/rules/unavailable-offer.d.ts +2 -0
- package/dist/rules/unavailable-offer.js +13 -0
- package/dist/schema-registry.d.ts +11 -0
- package/dist/schema-registry.js +24 -9
- package/dist/schema-validators.js +14 -5
- package/dist/sheet-type.d.ts +17 -12
- package/dist/sheet-type.js +11 -0
- package/dist/test-hooks.d.ts +15 -0
- package/dist/test-hooks.js +28 -0
- package/dist/validate-and-lint.d.ts +9 -5
- package/dist/validate-and-lint.js +33 -5
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
|
@@ -1,5 +1,226 @@
|
|
|
1
1
|
// Generated by scripts/bundle-schemas.mjs; do not edit, do not commit.
|
|
2
2
|
export const SCHEMAS = {
|
|
3
|
+
"https://themachineweb.org/pagefront/spec/commerce/collection/v0.1.0.json": {
|
|
4
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
5
|
+
"$id": "https://themachineweb.org/pagefront/spec/commerce/collection/v0.1.0.json",
|
|
6
|
+
"title": "Pagefront Commerce Collection Sheet 0.1.0",
|
|
7
|
+
"description": "Sheet spec version 0.1.0, a member of commerce release 0.5.0, the release with which the Collection Sheet spec joined the release line; it has no legacy draft line. Formal schema for the Pagefront Commerce Collection Sheet, the sheet describing a listing page: a category page, a curated collection page, a brand page on a multi-brand store or a filtered listing with a URL of its own. The envelope is the one every Pagefront Sheet carries: $schema, release, schema_org_version, canonical_url, generated_at and data are required, sheet_url and expires_at are optional, and format_version is not accepted beside release. The data block roots on Schema.org Collection and declares the pagefront prefix in the array form of @context, since every collection sheet uses pagefront:collectionKind, the required kind discriminator (category, collection or brand). hasPart lists the set's direct members as thin entries (@type, @id and url required; pagefront:sheetUrl, name and, on a Collection entry, pagefront:collectionKind optional) and may be empty; isPartOf lists the parent sets in the same entry shape; brand is the Brand reference a brand collection is keyed on. Validates the envelope and pagefront-namespaced extensions strictly; Schema.org-typed blocks permit additional unspecified properties.",
|
|
8
|
+
"type": "object",
|
|
9
|
+
"required": [
|
|
10
|
+
"$schema",
|
|
11
|
+
"release",
|
|
12
|
+
"schema_org_version",
|
|
13
|
+
"canonical_url",
|
|
14
|
+
"generated_at",
|
|
15
|
+
"data"
|
|
16
|
+
],
|
|
17
|
+
"properties": {
|
|
18
|
+
"$schema": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"format": "uri"
|
|
21
|
+
},
|
|
22
|
+
"release": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"
|
|
25
|
+
},
|
|
26
|
+
"schema_org_version": {
|
|
27
|
+
"type": "string",
|
|
28
|
+
"pattern": "^\\d+(\\.\\d+)?$"
|
|
29
|
+
},
|
|
30
|
+
"canonical_url": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"format": "uri"
|
|
33
|
+
},
|
|
34
|
+
"sheet_url": {
|
|
35
|
+
"type": "string",
|
|
36
|
+
"format": "uri"
|
|
37
|
+
},
|
|
38
|
+
"generated_at": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"format": "date-time"
|
|
41
|
+
},
|
|
42
|
+
"expires_at": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"format": "date-time"
|
|
45
|
+
},
|
|
46
|
+
"data": {
|
|
47
|
+
"$ref": "#/$defs/dataBlock"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"additionalProperties": false,
|
|
51
|
+
"$defs": {
|
|
52
|
+
"dataBlock": {
|
|
53
|
+
"type": "object",
|
|
54
|
+
"required": [
|
|
55
|
+
"@context",
|
|
56
|
+
"@type",
|
|
57
|
+
"@id",
|
|
58
|
+
"name",
|
|
59
|
+
"inLanguage",
|
|
60
|
+
"url",
|
|
61
|
+
"pagefront:collectionKind",
|
|
62
|
+
"hasPart"
|
|
63
|
+
],
|
|
64
|
+
"properties": {
|
|
65
|
+
"@context": {
|
|
66
|
+
"type": "array",
|
|
67
|
+
"minItems": 1,
|
|
68
|
+
"items": {
|
|
69
|
+
"oneOf": [
|
|
70
|
+
{
|
|
71
|
+
"type": "string",
|
|
72
|
+
"format": "uri"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"type": "object"
|
|
76
|
+
}
|
|
77
|
+
]
|
|
78
|
+
},
|
|
79
|
+
"contains": {
|
|
80
|
+
"type": "object",
|
|
81
|
+
"required": [
|
|
82
|
+
"pagefront"
|
|
83
|
+
],
|
|
84
|
+
"properties": {
|
|
85
|
+
"pagefront": {
|
|
86
|
+
"const": "https://themachineweb.org/pagefront/vocabulary/"
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"@type": {
|
|
92
|
+
"const": "Collection"
|
|
93
|
+
},
|
|
94
|
+
"@id": {
|
|
95
|
+
"type": "string",
|
|
96
|
+
"format": "uri"
|
|
97
|
+
},
|
|
98
|
+
"name": {
|
|
99
|
+
"type": "string",
|
|
100
|
+
"minLength": 1
|
|
101
|
+
},
|
|
102
|
+
"inLanguage": {
|
|
103
|
+
"type": "string"
|
|
104
|
+
},
|
|
105
|
+
"url": {
|
|
106
|
+
"type": "string",
|
|
107
|
+
"format": "uri"
|
|
108
|
+
},
|
|
109
|
+
"description": {
|
|
110
|
+
"type": "string"
|
|
111
|
+
},
|
|
112
|
+
"image": {
|
|
113
|
+
"oneOf": [
|
|
114
|
+
{
|
|
115
|
+
"type": "string",
|
|
116
|
+
"format": "uri"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"type": "object"
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
},
|
|
123
|
+
"brand": {
|
|
124
|
+
"type": "object",
|
|
125
|
+
"required": [
|
|
126
|
+
"@type",
|
|
127
|
+
"@id"
|
|
128
|
+
],
|
|
129
|
+
"properties": {
|
|
130
|
+
"@type": {
|
|
131
|
+
"type": "string"
|
|
132
|
+
},
|
|
133
|
+
"@id": {
|
|
134
|
+
"type": "string",
|
|
135
|
+
"format": "uri"
|
|
136
|
+
},
|
|
137
|
+
"pagefront:sheetUrl": {
|
|
138
|
+
"type": "string",
|
|
139
|
+
"format": "uri"
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
"additionalProperties": true
|
|
143
|
+
},
|
|
144
|
+
"pagefront:collectionKind": {
|
|
145
|
+
"$ref": "#/$defs/collectionKind"
|
|
146
|
+
},
|
|
147
|
+
"hasPart": {
|
|
148
|
+
"type": "array",
|
|
149
|
+
"items": {
|
|
150
|
+
"$ref": "#/$defs/memberEntry"
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
"isPartOf": {
|
|
154
|
+
"type": "array",
|
|
155
|
+
"items": {
|
|
156
|
+
"$ref": "#/$defs/memberEntry"
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
"pagefront:availableLanguages": {
|
|
160
|
+
"type": "array",
|
|
161
|
+
"items": {
|
|
162
|
+
"type": "object",
|
|
163
|
+
"required": [
|
|
164
|
+
"lang",
|
|
165
|
+
"url"
|
|
166
|
+
],
|
|
167
|
+
"properties": {
|
|
168
|
+
"lang": {
|
|
169
|
+
"type": "string"
|
|
170
|
+
},
|
|
171
|
+
"url": {
|
|
172
|
+
"type": "string",
|
|
173
|
+
"format": "uri"
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
"additionalProperties": false
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"additionalProperties": true
|
|
181
|
+
},
|
|
182
|
+
"collectionKind": {
|
|
183
|
+
"type": "string",
|
|
184
|
+
"enum": [
|
|
185
|
+
"category",
|
|
186
|
+
"collection",
|
|
187
|
+
"brand"
|
|
188
|
+
]
|
|
189
|
+
},
|
|
190
|
+
"memberEntry": {
|
|
191
|
+
"type": "object",
|
|
192
|
+
"required": [
|
|
193
|
+
"@type",
|
|
194
|
+
"@id",
|
|
195
|
+
"url"
|
|
196
|
+
],
|
|
197
|
+
"properties": {
|
|
198
|
+
"@type": {
|
|
199
|
+
"type": "string"
|
|
200
|
+
},
|
|
201
|
+
"@id": {
|
|
202
|
+
"type": "string",
|
|
203
|
+
"format": "uri"
|
|
204
|
+
},
|
|
205
|
+
"url": {
|
|
206
|
+
"type": "string",
|
|
207
|
+
"format": "uri"
|
|
208
|
+
},
|
|
209
|
+
"pagefront:sheetUrl": {
|
|
210
|
+
"type": "string",
|
|
211
|
+
"format": "uri"
|
|
212
|
+
},
|
|
213
|
+
"name": {
|
|
214
|
+
"type": "string"
|
|
215
|
+
},
|
|
216
|
+
"pagefront:collectionKind": {
|
|
217
|
+
"$ref": "#/$defs/collectionKind"
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
"additionalProperties": true
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
},
|
|
3
224
|
"https://themachineweb.org/pagefront/spec/commerce/organization/v0.3.0.json": {
|
|
4
225
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
5
226
|
"$id": "https://themachineweb.org/pagefront/spec/commerce/organization/v0.3.0.json",
|
|
@@ -869,17 +1090,17 @@ export const SCHEMAS = {
|
|
|
869
1090
|
}
|
|
870
1091
|
}
|
|
871
1092
|
},
|
|
872
|
-
"https://themachineweb.org/pagefront/spec/commerce/organization/v0.
|
|
1093
|
+
"https://themachineweb.org/pagefront/spec/commerce/organization/v0.5.0.json": {
|
|
873
1094
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
874
|
-
"$id": "https://themachineweb.org/pagefront/spec/commerce/organization/v0.
|
|
875
|
-
"title": "Pagefront Commerce Organization Sheet
|
|
876
|
-
"description": "Formal schema for the Pagefront Commerce Organization Sheet — the sheet describing the entity behind products (brand owner, manufacturer, seller), introduced with commerce format 0.9 alongside the reference-capable legalEntity and the seller-sheet return/shipping model. The data block roots on Schema.org Organization (recognized subtypes permitted; @type is not constrained to a single value). pagefront:commerceRole is the required role discriminator, an array of one or more values from the closed enum brand_owner / manufacturer / seller. pagefront:fulfillmentTerms carries the store-wide shipping defaults as an array of Schema.org-native OfferShippingDetails objects; only the attachment shell is validated, the payload is Schema.org content. pagefront:socialAccount carries the organization's official social accounts (platform / url / handle; publisher-stated only), distinct from sameAs, which carries identity authority records only. pagefront:authorizedResellers carries the brand's authorization claim over its distribution — a pagefront:AuthorizedResellers object with an optional exhaustive flag and a reseller array whose entries name an Organization either as a reference stub (@id) or inline (name plus url and/or address), with optional Schema.org-native areaServed; valid only where commerceRole includes brand_owner (linter ORG-W-006). There is no GTIN-equivalent identifier requirement: identity is @id + name. Validates the envelope and pagefront-namespaced extensions strictly; Schema.org-typed blocks permit additional unspecified properties.",
|
|
1095
|
+
"$id": "https://themachineweb.org/pagefront/spec/commerce/organization/v0.5.0.json",
|
|
1096
|
+
"title": "Pagefront Commerce Organization Sheet 0.5.0",
|
|
1097
|
+
"description": "Sheet spec version 0.5.0, a member of commerce release 0.5.0. Since 0.5.0 the sheet may carry hasOfferCatalog, the catalogue entry point: a flat Schema.org OfferCatalog whose itemListElement lists the storefront's root collections as Collection member entries (@type, @id and url required; pagefront:sheetUrl, name and pagefront:collectionKind optional), valid for any commerce role, referencing Commerce Collection Sheets on the sheet's own host. Since 0.5.0 sheet_url is optional: it is an address the sheet is served from as known at generation time, and the page's alternate link locates the sheet. Since 0.4.0 the envelope requires $schema. The envelope carries release in place of format_version, and $schema, which is required, names this sheet-spec version; a sheet carrying format_version belongs to the legacy draft line and validates against the legacy schema at .../organization/v0.9.json, which is otherwise identical. Formal schema for the Pagefront Commerce Organization Sheet — the sheet describing the entity behind products (brand owner, manufacturer, seller), introduced with commerce format 0.9 alongside the reference-capable legalEntity and the seller-sheet return/shipping model. The data block roots on Schema.org Organization (recognized subtypes permitted; @type is not constrained to a single value). pagefront:commerceRole is the required role discriminator, an array of one or more values from the closed enum brand_owner / manufacturer / seller. pagefront:fulfillmentTerms carries the store-wide shipping defaults as an array of Schema.org-native OfferShippingDetails objects; only the attachment shell is validated, the payload is Schema.org content. pagefront:socialAccount carries the organization's official social accounts (platform / url / handle; publisher-stated only), distinct from sameAs, which carries identity authority records only. pagefront:authorizedResellers carries the brand's authorization claim over its distribution — a pagefront:AuthorizedResellers object with an optional exhaustive flag and a reseller array whose entries name an Organization either as a reference stub (@id) or inline (name plus url and/or address), with optional Schema.org-native areaServed; valid only where commerceRole includes brand_owner (linter ORG-W-006). There is no GTIN-equivalent identifier requirement: identity is @id + name. Validates the envelope and pagefront-namespaced extensions strictly; Schema.org-typed blocks permit additional unspecified properties.",
|
|
877
1098
|
"type": "object",
|
|
878
1099
|
"required": [
|
|
879
|
-
"
|
|
1100
|
+
"$schema",
|
|
1101
|
+
"release",
|
|
880
1102
|
"schema_org_version",
|
|
881
1103
|
"canonical_url",
|
|
882
|
-
"sheet_url",
|
|
883
1104
|
"generated_at",
|
|
884
1105
|
"data"
|
|
885
1106
|
],
|
|
@@ -888,8 +1109,9 @@ export const SCHEMAS = {
|
|
|
888
1109
|
"type": "string",
|
|
889
1110
|
"format": "uri"
|
|
890
1111
|
},
|
|
891
|
-
"
|
|
892
|
-
"
|
|
1112
|
+
"release": {
|
|
1113
|
+
"type": "string",
|
|
1114
|
+
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"
|
|
893
1115
|
},
|
|
894
1116
|
"schema_org_version": {
|
|
895
1117
|
"type": "string",
|
|
@@ -1112,6 +1334,28 @@ export const SCHEMAS = {
|
|
|
1112
1334
|
}
|
|
1113
1335
|
]
|
|
1114
1336
|
},
|
|
1337
|
+
"hasOfferCatalog": {
|
|
1338
|
+
"type": "object",
|
|
1339
|
+
"required": [
|
|
1340
|
+
"@type",
|
|
1341
|
+
"itemListElement"
|
|
1342
|
+
],
|
|
1343
|
+
"properties": {
|
|
1344
|
+
"@type": {
|
|
1345
|
+
"const": "OfferCatalog"
|
|
1346
|
+
},
|
|
1347
|
+
"name": {
|
|
1348
|
+
"type": "string"
|
|
1349
|
+
},
|
|
1350
|
+
"itemListElement": {
|
|
1351
|
+
"type": "array",
|
|
1352
|
+
"items": {
|
|
1353
|
+
"$ref": "#/$defs/memberEntry"
|
|
1354
|
+
}
|
|
1355
|
+
}
|
|
1356
|
+
},
|
|
1357
|
+
"additionalProperties": true
|
|
1358
|
+
},
|
|
1115
1359
|
"pagefront:commerceRole": {
|
|
1116
1360
|
"type": "array",
|
|
1117
1361
|
"minItems": 1,
|
|
@@ -1299,21 +1543,2498 @@ export const SCHEMAS = {
|
|
|
1299
1543
|
}
|
|
1300
1544
|
},
|
|
1301
1545
|
"additionalProperties": true
|
|
1302
|
-
}
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1546
|
+
},
|
|
1547
|
+
"memberEntry": {
|
|
1548
|
+
"type": "object",
|
|
1549
|
+
"required": [
|
|
1550
|
+
"@type",
|
|
1551
|
+
"@id",
|
|
1552
|
+
"url"
|
|
1553
|
+
],
|
|
1554
|
+
"properties": {
|
|
1555
|
+
"@type": {
|
|
1556
|
+
"type": "string"
|
|
1557
|
+
},
|
|
1558
|
+
"@id": {
|
|
1559
|
+
"type": "string",
|
|
1560
|
+
"format": "uri"
|
|
1561
|
+
},
|
|
1562
|
+
"url": {
|
|
1563
|
+
"type": "string",
|
|
1564
|
+
"format": "uri"
|
|
1565
|
+
},
|
|
1566
|
+
"pagefront:sheetUrl": {
|
|
1567
|
+
"type": "string",
|
|
1568
|
+
"format": "uri"
|
|
1569
|
+
},
|
|
1570
|
+
"name": {
|
|
1571
|
+
"type": "string"
|
|
1572
|
+
},
|
|
1573
|
+
"pagefront:collectionKind": {
|
|
1574
|
+
"type": "string",
|
|
1575
|
+
"enum": [
|
|
1576
|
+
"category",
|
|
1577
|
+
"collection",
|
|
1578
|
+
"brand"
|
|
1579
|
+
]
|
|
1580
|
+
}
|
|
1581
|
+
},
|
|
1582
|
+
"additionalProperties": true
|
|
1583
|
+
}
|
|
1584
|
+
}
|
|
1585
|
+
},
|
|
1586
|
+
"https://themachineweb.org/pagefront/spec/commerce/organization/v0.9.json": {
|
|
1587
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
1588
|
+
"$id": "https://themachineweb.org/pagefront/spec/commerce/organization/v0.9.json",
|
|
1589
|
+
"title": "Pagefront Commerce Organization Sheet v0.9",
|
|
1590
|
+
"description": "Formal schema for the Pagefront Commerce Organization Sheet — the sheet describing the entity behind products (brand owner, manufacturer, seller), introduced with commerce format 0.9 alongside the reference-capable legalEntity and the seller-sheet return/shipping model. The data block roots on Schema.org Organization (recognized subtypes permitted; @type is not constrained to a single value). pagefront:commerceRole is the required role discriminator, an array of one or more values from the closed enum brand_owner / manufacturer / seller. pagefront:fulfillmentTerms carries the store-wide shipping defaults as an array of Schema.org-native OfferShippingDetails objects; only the attachment shell is validated, the payload is Schema.org content. pagefront:socialAccount carries the organization's official social accounts (platform / url / handle; publisher-stated only), distinct from sameAs, which carries identity authority records only. pagefront:authorizedResellers carries the brand's authorization claim over its distribution — a pagefront:AuthorizedResellers object with an optional exhaustive flag and a reseller array whose entries name an Organization either as a reference stub (@id) or inline (name plus url and/or address), with optional Schema.org-native areaServed; valid only where commerceRole includes brand_owner (linter ORG-W-006). There is no GTIN-equivalent identifier requirement: identity is @id + name. Validates the envelope and pagefront-namespaced extensions strictly; Schema.org-typed blocks permit additional unspecified properties.",
|
|
1591
|
+
"type": "object",
|
|
1592
|
+
"required": [
|
|
1593
|
+
"format_version",
|
|
1594
|
+
"schema_org_version",
|
|
1595
|
+
"canonical_url",
|
|
1596
|
+
"sheet_url",
|
|
1597
|
+
"generated_at",
|
|
1598
|
+
"data"
|
|
1599
|
+
],
|
|
1600
|
+
"properties": {
|
|
1601
|
+
"$schema": {
|
|
1602
|
+
"type": "string",
|
|
1603
|
+
"format": "uri"
|
|
1604
|
+
},
|
|
1605
|
+
"format_version": {
|
|
1606
|
+
"const": "0.9"
|
|
1607
|
+
},
|
|
1608
|
+
"schema_org_version": {
|
|
1609
|
+
"type": "string",
|
|
1610
|
+
"pattern": "^\\d+(\\.\\d+)?$"
|
|
1611
|
+
},
|
|
1612
|
+
"canonical_url": {
|
|
1613
|
+
"type": "string",
|
|
1614
|
+
"format": "uri"
|
|
1615
|
+
},
|
|
1616
|
+
"sheet_url": {
|
|
1617
|
+
"type": "string",
|
|
1618
|
+
"format": "uri"
|
|
1619
|
+
},
|
|
1620
|
+
"generated_at": {
|
|
1621
|
+
"type": "string",
|
|
1622
|
+
"format": "date-time"
|
|
1623
|
+
},
|
|
1624
|
+
"expires_at": {
|
|
1625
|
+
"type": "string",
|
|
1626
|
+
"format": "date-time"
|
|
1627
|
+
},
|
|
1628
|
+
"data": {
|
|
1629
|
+
"$ref": "#/$defs/dataBlock"
|
|
1630
|
+
}
|
|
1631
|
+
},
|
|
1632
|
+
"additionalProperties": false,
|
|
1633
|
+
"$defs": {
|
|
1634
|
+
"dataBlock": {
|
|
1635
|
+
"type": "object",
|
|
1636
|
+
"required": [
|
|
1637
|
+
"@context",
|
|
1638
|
+
"@type",
|
|
1639
|
+
"@id",
|
|
1640
|
+
"name",
|
|
1641
|
+
"inLanguage",
|
|
1642
|
+
"pagefront:commerceRole"
|
|
1643
|
+
],
|
|
1644
|
+
"properties": {
|
|
1645
|
+
"@context": {
|
|
1646
|
+
"oneOf": [
|
|
1647
|
+
{
|
|
1648
|
+
"const": "https://schema.org"
|
|
1649
|
+
},
|
|
1650
|
+
{
|
|
1651
|
+
"type": "array",
|
|
1652
|
+
"items": {
|
|
1653
|
+
"oneOf": [
|
|
1654
|
+
{
|
|
1655
|
+
"type": "string",
|
|
1656
|
+
"format": "uri"
|
|
1657
|
+
},
|
|
1658
|
+
{
|
|
1659
|
+
"type": "object"
|
|
1660
|
+
}
|
|
1661
|
+
]
|
|
1662
|
+
},
|
|
1663
|
+
"minItems": 1
|
|
1664
|
+
}
|
|
1665
|
+
]
|
|
1666
|
+
},
|
|
1667
|
+
"@type": {
|
|
1668
|
+
"type": "string"
|
|
1669
|
+
},
|
|
1670
|
+
"@id": {
|
|
1671
|
+
"type": "string",
|
|
1672
|
+
"format": "uri"
|
|
1673
|
+
},
|
|
1674
|
+
"name": {
|
|
1675
|
+
"type": "string",
|
|
1676
|
+
"minLength": 1
|
|
1677
|
+
},
|
|
1678
|
+
"legalName": {
|
|
1679
|
+
"type": "string"
|
|
1680
|
+
},
|
|
1681
|
+
"inLanguage": {
|
|
1682
|
+
"type": "string"
|
|
1683
|
+
},
|
|
1684
|
+
"url": {
|
|
1685
|
+
"type": "string",
|
|
1686
|
+
"format": "uri"
|
|
1687
|
+
},
|
|
1688
|
+
"description": {
|
|
1689
|
+
"type": "string"
|
|
1690
|
+
},
|
|
1691
|
+
"slogan": {
|
|
1692
|
+
"type": "string"
|
|
1693
|
+
},
|
|
1694
|
+
"logo": {
|
|
1695
|
+
"oneOf": [
|
|
1696
|
+
{
|
|
1697
|
+
"type": "string",
|
|
1698
|
+
"format": "uri"
|
|
1699
|
+
},
|
|
1700
|
+
{
|
|
1701
|
+
"type": "object"
|
|
1702
|
+
}
|
|
1703
|
+
]
|
|
1704
|
+
},
|
|
1705
|
+
"iso6523Code": {
|
|
1706
|
+
"type": "string"
|
|
1707
|
+
},
|
|
1708
|
+
"identifier": {
|
|
1709
|
+
"oneOf": [
|
|
1710
|
+
{
|
|
1711
|
+
"type": "string"
|
|
1712
|
+
},
|
|
1713
|
+
{
|
|
1714
|
+
"type": "object"
|
|
1715
|
+
},
|
|
1716
|
+
{
|
|
1717
|
+
"type": "array",
|
|
1718
|
+
"items": {
|
|
1719
|
+
"oneOf": [
|
|
1720
|
+
{
|
|
1721
|
+
"type": "string"
|
|
1722
|
+
},
|
|
1723
|
+
{
|
|
1724
|
+
"type": "object"
|
|
1725
|
+
}
|
|
1726
|
+
]
|
|
1727
|
+
}
|
|
1728
|
+
}
|
|
1729
|
+
]
|
|
1730
|
+
},
|
|
1731
|
+
"sameAs": {
|
|
1732
|
+
"oneOf": [
|
|
1733
|
+
{
|
|
1734
|
+
"type": "string",
|
|
1735
|
+
"format": "uri"
|
|
1736
|
+
},
|
|
1737
|
+
{
|
|
1738
|
+
"type": "array",
|
|
1739
|
+
"items": {
|
|
1740
|
+
"type": "string",
|
|
1741
|
+
"format": "uri"
|
|
1742
|
+
}
|
|
1743
|
+
}
|
|
1744
|
+
]
|
|
1745
|
+
},
|
|
1746
|
+
"email": {
|
|
1747
|
+
"type": "string",
|
|
1748
|
+
"format": "email"
|
|
1749
|
+
},
|
|
1750
|
+
"address": {
|
|
1751
|
+
"type": "object"
|
|
1752
|
+
},
|
|
1753
|
+
"contactPoint": {
|
|
1754
|
+
"oneOf": [
|
|
1755
|
+
{
|
|
1756
|
+
"type": "object"
|
|
1757
|
+
},
|
|
1758
|
+
{
|
|
1759
|
+
"type": "array",
|
|
1760
|
+
"items": {
|
|
1761
|
+
"type": "object"
|
|
1762
|
+
}
|
|
1763
|
+
}
|
|
1764
|
+
]
|
|
1765
|
+
},
|
|
1766
|
+
"foundingDate": {
|
|
1767
|
+
"type": "string"
|
|
1768
|
+
},
|
|
1769
|
+
"numberOfEmployees": {
|
|
1770
|
+
"type": "object"
|
|
1771
|
+
},
|
|
1772
|
+
"parentOrganization": {
|
|
1773
|
+
"type": "object"
|
|
1774
|
+
},
|
|
1775
|
+
"subOrganization": {
|
|
1776
|
+
"oneOf": [
|
|
1777
|
+
{
|
|
1778
|
+
"type": "object"
|
|
1779
|
+
},
|
|
1780
|
+
{
|
|
1781
|
+
"type": "array",
|
|
1782
|
+
"items": {
|
|
1783
|
+
"type": "object"
|
|
1784
|
+
}
|
|
1785
|
+
}
|
|
1786
|
+
]
|
|
1787
|
+
},
|
|
1788
|
+
"location": {
|
|
1789
|
+
"oneOf": [
|
|
1790
|
+
{
|
|
1791
|
+
"type": "object"
|
|
1792
|
+
},
|
|
1793
|
+
{
|
|
1794
|
+
"type": "array",
|
|
1795
|
+
"items": {
|
|
1796
|
+
"type": "object"
|
|
1797
|
+
}
|
|
1798
|
+
}
|
|
1799
|
+
]
|
|
1800
|
+
},
|
|
1801
|
+
"brand": {
|
|
1802
|
+
"type": "object"
|
|
1803
|
+
},
|
|
1804
|
+
"aggregateRating": {
|
|
1805
|
+
"type": "object"
|
|
1806
|
+
},
|
|
1807
|
+
"hasCertification": {
|
|
1808
|
+
"type": "array",
|
|
1809
|
+
"items": {
|
|
1810
|
+
"$ref": "#/$defs/certification"
|
|
1811
|
+
}
|
|
1812
|
+
},
|
|
1813
|
+
"hasMerchantReturnPolicy": {
|
|
1814
|
+
"type": "object"
|
|
1815
|
+
},
|
|
1816
|
+
"paymentAccepted": {
|
|
1817
|
+
"oneOf": [
|
|
1818
|
+
{
|
|
1819
|
+
"type": "string"
|
|
1820
|
+
},
|
|
1821
|
+
{
|
|
1822
|
+
"type": "array",
|
|
1823
|
+
"items": {
|
|
1824
|
+
"type": "string"
|
|
1825
|
+
}
|
|
1826
|
+
}
|
|
1827
|
+
]
|
|
1828
|
+
},
|
|
1829
|
+
"pagefront:commerceRole": {
|
|
1830
|
+
"type": "array",
|
|
1831
|
+
"minItems": 1,
|
|
1832
|
+
"items": {
|
|
1833
|
+
"type": "string",
|
|
1834
|
+
"enum": [
|
|
1835
|
+
"brand_owner",
|
|
1836
|
+
"manufacturer",
|
|
1837
|
+
"seller"
|
|
1838
|
+
]
|
|
1839
|
+
}
|
|
1840
|
+
},
|
|
1841
|
+
"pagefront:fulfillmentTerms": {
|
|
1842
|
+
"type": "array",
|
|
1843
|
+
"items": {
|
|
1844
|
+
"type": "object",
|
|
1845
|
+
"required": [
|
|
1846
|
+
"@type"
|
|
1847
|
+
],
|
|
1848
|
+
"properties": {
|
|
1849
|
+
"@type": {
|
|
1850
|
+
"const": "OfferShippingDetails"
|
|
1851
|
+
}
|
|
1852
|
+
},
|
|
1853
|
+
"additionalProperties": true
|
|
1854
|
+
}
|
|
1855
|
+
},
|
|
1856
|
+
"pagefront:socialAccount": {
|
|
1857
|
+
"type": "array",
|
|
1858
|
+
"items": {
|
|
1859
|
+
"type": "object",
|
|
1860
|
+
"required": [
|
|
1861
|
+
"platform",
|
|
1862
|
+
"url"
|
|
1863
|
+
],
|
|
1864
|
+
"properties": {
|
|
1865
|
+
"@type": {
|
|
1866
|
+
"const": "pagefront:SocialAccount"
|
|
1867
|
+
},
|
|
1868
|
+
"platform": {
|
|
1869
|
+
"type": "string",
|
|
1870
|
+
"minLength": 1
|
|
1871
|
+
},
|
|
1872
|
+
"url": {
|
|
1873
|
+
"type": "string",
|
|
1874
|
+
"format": "uri"
|
|
1875
|
+
},
|
|
1876
|
+
"handle": {
|
|
1877
|
+
"type": "string",
|
|
1878
|
+
"minLength": 1
|
|
1879
|
+
}
|
|
1880
|
+
},
|
|
1881
|
+
"additionalProperties": true
|
|
1882
|
+
}
|
|
1883
|
+
},
|
|
1884
|
+
"pagefront:authorizedResellers": {
|
|
1885
|
+
"type": "object",
|
|
1886
|
+
"required": [
|
|
1887
|
+
"reseller"
|
|
1888
|
+
],
|
|
1889
|
+
"properties": {
|
|
1890
|
+
"@type": {
|
|
1891
|
+
"const": "pagefront:AuthorizedResellers"
|
|
1892
|
+
},
|
|
1893
|
+
"exhaustive": {
|
|
1894
|
+
"type": "boolean"
|
|
1895
|
+
},
|
|
1896
|
+
"reseller": {
|
|
1897
|
+
"type": "array",
|
|
1898
|
+
"minItems": 1,
|
|
1899
|
+
"items": {
|
|
1900
|
+
"type": "object",
|
|
1901
|
+
"required": [
|
|
1902
|
+
"organization"
|
|
1903
|
+
],
|
|
1904
|
+
"properties": {
|
|
1905
|
+
"organization": {
|
|
1906
|
+
"type": "object",
|
|
1907
|
+
"properties": {
|
|
1908
|
+
"@type": {
|
|
1909
|
+
"type": "string"
|
|
1910
|
+
},
|
|
1911
|
+
"@id": {
|
|
1912
|
+
"type": "string",
|
|
1913
|
+
"format": "uri"
|
|
1914
|
+
},
|
|
1915
|
+
"name": {
|
|
1916
|
+
"type": "string",
|
|
1917
|
+
"minLength": 1
|
|
1918
|
+
},
|
|
1919
|
+
"url": {
|
|
1920
|
+
"type": "string",
|
|
1921
|
+
"format": "uri"
|
|
1922
|
+
},
|
|
1923
|
+
"address": {
|
|
1924
|
+
"type": "object"
|
|
1925
|
+
}
|
|
1926
|
+
},
|
|
1927
|
+
"anyOf": [
|
|
1928
|
+
{
|
|
1929
|
+
"required": [
|
|
1930
|
+
"@id"
|
|
1931
|
+
]
|
|
1932
|
+
},
|
|
1933
|
+
{
|
|
1934
|
+
"required": [
|
|
1935
|
+
"name",
|
|
1936
|
+
"url"
|
|
1937
|
+
]
|
|
1938
|
+
},
|
|
1939
|
+
{
|
|
1940
|
+
"required": [
|
|
1941
|
+
"name",
|
|
1942
|
+
"address"
|
|
1943
|
+
]
|
|
1944
|
+
}
|
|
1945
|
+
],
|
|
1946
|
+
"additionalProperties": true
|
|
1947
|
+
},
|
|
1948
|
+
"areaServed": {
|
|
1949
|
+
"oneOf": [
|
|
1950
|
+
{
|
|
1951
|
+
"type": "object"
|
|
1952
|
+
},
|
|
1953
|
+
{
|
|
1954
|
+
"type": "array",
|
|
1955
|
+
"minItems": 1,
|
|
1956
|
+
"items": {
|
|
1957
|
+
"type": "object"
|
|
1958
|
+
}
|
|
1959
|
+
}
|
|
1960
|
+
]
|
|
1961
|
+
}
|
|
1962
|
+
},
|
|
1963
|
+
"additionalProperties": false
|
|
1964
|
+
}
|
|
1965
|
+
}
|
|
1966
|
+
},
|
|
1967
|
+
"additionalProperties": false
|
|
1968
|
+
},
|
|
1969
|
+
"pagefront:availableLanguages": {
|
|
1970
|
+
"type": "array",
|
|
1971
|
+
"items": {
|
|
1972
|
+
"type": "object",
|
|
1973
|
+
"required": [
|
|
1974
|
+
"lang",
|
|
1975
|
+
"url"
|
|
1976
|
+
],
|
|
1977
|
+
"properties": {
|
|
1978
|
+
"lang": {
|
|
1979
|
+
"type": "string"
|
|
1980
|
+
},
|
|
1981
|
+
"url": {
|
|
1982
|
+
"type": "string",
|
|
1983
|
+
"format": "uri"
|
|
1984
|
+
}
|
|
1985
|
+
},
|
|
1986
|
+
"additionalProperties": false
|
|
1987
|
+
}
|
|
1988
|
+
}
|
|
1989
|
+
},
|
|
1990
|
+
"additionalProperties": true
|
|
1991
|
+
},
|
|
1992
|
+
"certification": {
|
|
1993
|
+
"type": "object",
|
|
1994
|
+
"required": [
|
|
1995
|
+
"@type",
|
|
1996
|
+
"name"
|
|
1997
|
+
],
|
|
1998
|
+
"properties": {
|
|
1999
|
+
"@type": {
|
|
2000
|
+
"const": "Certification"
|
|
2001
|
+
},
|
|
2002
|
+
"name": {
|
|
2003
|
+
"type": "string"
|
|
2004
|
+
},
|
|
2005
|
+
"issuedBy": {
|
|
2006
|
+
"type": "object"
|
|
2007
|
+
},
|
|
2008
|
+
"about": {
|
|
2009
|
+
"type": "string"
|
|
2010
|
+
},
|
|
2011
|
+
"additionalProperty": {
|
|
2012
|
+
"type": "array"
|
|
2013
|
+
}
|
|
2014
|
+
},
|
|
2015
|
+
"additionalProperties": true
|
|
2016
|
+
}
|
|
2017
|
+
}
|
|
2018
|
+
},
|
|
2019
|
+
"https://themachineweb.org/pagefront/spec/commerce/product/v0.10.0.json": {
|
|
2020
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
2021
|
+
"$id": "https://themachineweb.org/pagefront/spec/commerce/product/v0.10.0.json",
|
|
2022
|
+
"title": "Pagefront Product Sheet 0.10.0",
|
|
2023
|
+
"description": "Formal schema for the Pagefront Product Sheet, sheet spec version 0.10.0, a member of commerce release 0.4.0. Since 0.10.0 the envelope requires $schema. The envelope carries release in place of format_version: release names the commerce release the sheet is written against, and $schema, which is required, names this sheet-spec version. A sheet carrying format_version belongs to the legacy draft line and validates against the legacy schema at .../product/v0.9.json, which is otherwise identical. History, in legacy format versions: revision of 2026-10-01 (breaking, within v0.9): configurator pricing moves from pagefront:configurator to the offer. The configurator loses basePrice, basePriceCurrency and priceFormula, its options lose priceModifier and currency, and it gains an optional @id and an exclusions[] array; configurator dimensions gain affectsPrice, inputType (select or text, for free-text dimensions) and maxLength; Offer and AggregateOffer accept pagefront:configuratorPricing, which names the configurator it prices and carries baseConfiguration, basePrice, modifiers, optional adjustments[] and a pricing completeness flag; every amount field (Offer price, AggregateOffer lowPrice and highPrice, variant price hints, promotion discountAmount, and the pricing block's basePrice, modifiers and adjustment amounts) references a shared definition, a JSON number or a plain decimal string: nonNegativeAmount for prices, bounds, base prices, price hints and discount amounts, and the signed amount for modifiers and adjustment amounts. v0.9 sheets that carried prices inside the configurator no longer validate. v0.9 was otherwise an additive release on top of v0.8: the legalEntity entry's organization now also validates in reference-stub form (@type + @id, no name) so entries can reference a Commerce Organization Sheet; the inline form and all other constraints are unchanged, and v0.8 sheets remain valid once their format_version is updated. v0.8 is an additive release on top of v0.7: it adds a pagefront:featureGroup[] array for grouped, ordered technical specifications (groups of Schema.org PropertyValue entries, with an optional pagefront:presentationValue display variant per entry), a pagefront:productHighlights[] array of ordered publisher-authored selling-point strings, and a pagefront:legalEntity[] array for role-typed legal entities behind a product (closed role enum: brand_owner, licensee, authorized_representative, importer, manufacturer — EU GPSR responsible persons and similar). gtin and gtin13 now accept a string or an array of strings (regional packaging, re-releases); category now accepts the display string, a Schema.org CategoryCode object, or a mixed array of both. The pagefront:Document role enum gains repairability_index, recall_notice, and declaration_of_conformity; the pagefront:RelatedProduct relationship enum gains service. v0.8 also adds two GPSR-driven safety fields: a pagefront:safetyWarning[] array for typed, language-scoped safety warnings (text required; optional pictogram URL and open-vocabulary hazardCategory) and a pagefront:safetyNotice[] array for structured recall/safety notices (closed noticeType enum: recall, warning; closed remedy enum: repair, replacement, refund). v0.7 sheets remain valid under v0.8 once their format_version is updated. Validates the envelope and pagefront-namespaced extensions strictly; Schema.org-typed blocks permit additional unspecified properties.",
|
|
2024
|
+
"type": "object",
|
|
2025
|
+
"required": [
|
|
2026
|
+
"$schema",
|
|
2027
|
+
"release",
|
|
2028
|
+
"schema_org_version",
|
|
2029
|
+
"canonical_url",
|
|
2030
|
+
"sheet_url",
|
|
2031
|
+
"generated_at",
|
|
2032
|
+
"data"
|
|
2033
|
+
],
|
|
2034
|
+
"properties": {
|
|
2035
|
+
"$schema": {
|
|
2036
|
+
"type": "string",
|
|
2037
|
+
"format": "uri"
|
|
2038
|
+
},
|
|
2039
|
+
"release": {
|
|
2040
|
+
"type": "string",
|
|
2041
|
+
"pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$"
|
|
2042
|
+
},
|
|
2043
|
+
"schema_org_version": {
|
|
2044
|
+
"type": "string",
|
|
2045
|
+
"pattern": "^\\d+(\\.\\d+)?$"
|
|
2046
|
+
},
|
|
2047
|
+
"canonical_url": {
|
|
2048
|
+
"type": "string",
|
|
2049
|
+
"format": "uri"
|
|
2050
|
+
},
|
|
2051
|
+
"sheet_url": {
|
|
2052
|
+
"type": "string",
|
|
2053
|
+
"format": "uri"
|
|
2054
|
+
},
|
|
2055
|
+
"generated_at": {
|
|
2056
|
+
"type": "string",
|
|
2057
|
+
"format": "date-time"
|
|
2058
|
+
},
|
|
2059
|
+
"expires_at": {
|
|
2060
|
+
"type": "string",
|
|
2061
|
+
"format": "date-time"
|
|
2062
|
+
},
|
|
2063
|
+
"data": {
|
|
2064
|
+
"$ref": "#/$defs/dataBlock"
|
|
2065
|
+
}
|
|
2066
|
+
},
|
|
2067
|
+
"additionalProperties": false,
|
|
2068
|
+
"$defs": {
|
|
2069
|
+
"dataBlock": {
|
|
2070
|
+
"type": "object",
|
|
2071
|
+
"required": [
|
|
2072
|
+
"@context",
|
|
2073
|
+
"@type",
|
|
2074
|
+
"@id",
|
|
2075
|
+
"name",
|
|
2076
|
+
"inLanguage"
|
|
2077
|
+
],
|
|
2078
|
+
"properties": {
|
|
2079
|
+
"@context": {
|
|
2080
|
+
"oneOf": [
|
|
2081
|
+
{
|
|
2082
|
+
"const": "https://schema.org"
|
|
2083
|
+
},
|
|
2084
|
+
{
|
|
2085
|
+
"type": "array",
|
|
2086
|
+
"items": {
|
|
2087
|
+
"oneOf": [
|
|
2088
|
+
{
|
|
2089
|
+
"type": "string",
|
|
2090
|
+
"format": "uri"
|
|
2091
|
+
},
|
|
2092
|
+
{
|
|
2093
|
+
"type": "object"
|
|
2094
|
+
}
|
|
2095
|
+
]
|
|
2096
|
+
},
|
|
2097
|
+
"minItems": 1
|
|
2098
|
+
}
|
|
2099
|
+
]
|
|
2100
|
+
},
|
|
2101
|
+
"@type": {
|
|
2102
|
+
"type": "string"
|
|
2103
|
+
},
|
|
2104
|
+
"@id": {
|
|
2105
|
+
"type": "string",
|
|
2106
|
+
"format": "uri"
|
|
2107
|
+
},
|
|
2108
|
+
"url": {
|
|
2109
|
+
"type": "string",
|
|
2110
|
+
"format": "uri"
|
|
2111
|
+
},
|
|
2112
|
+
"name": {
|
|
2113
|
+
"type": "string",
|
|
2114
|
+
"minLength": 1
|
|
2115
|
+
},
|
|
2116
|
+
"inLanguage": {
|
|
2117
|
+
"type": "string"
|
|
2118
|
+
},
|
|
2119
|
+
"sku": {
|
|
2120
|
+
"type": "string"
|
|
2121
|
+
},
|
|
2122
|
+
"gtin13": {
|
|
2123
|
+
"$ref": "#/$defs/gtin13Value"
|
|
2124
|
+
},
|
|
2125
|
+
"gtin": {
|
|
2126
|
+
"$ref": "#/$defs/gtinValue"
|
|
2127
|
+
},
|
|
2128
|
+
"mpn": {
|
|
2129
|
+
"type": "string"
|
|
2130
|
+
},
|
|
2131
|
+
"productID": {
|
|
2132
|
+
"type": "string"
|
|
2133
|
+
},
|
|
2134
|
+
"productGroupID": {
|
|
2135
|
+
"type": "string"
|
|
2136
|
+
},
|
|
2137
|
+
"variesBy": {
|
|
2138
|
+
"type": "array",
|
|
2139
|
+
"items": {
|
|
2140
|
+
"type": "string"
|
|
2141
|
+
}
|
|
2142
|
+
},
|
|
2143
|
+
"hasVariant": {
|
|
2144
|
+
"type": "array",
|
|
2145
|
+
"items": {
|
|
2146
|
+
"$ref": "#/$defs/variantEntry"
|
|
2147
|
+
}
|
|
2148
|
+
},
|
|
2149
|
+
"brand": {
|
|
2150
|
+
"type": "object",
|
|
2151
|
+
"properties": {
|
|
2152
|
+
"pagefront:sheetUrl": {
|
|
2153
|
+
"type": "string",
|
|
2154
|
+
"format": "uri"
|
|
2155
|
+
}
|
|
2156
|
+
}
|
|
2157
|
+
},
|
|
2158
|
+
"description": {
|
|
2159
|
+
"type": "string"
|
|
2160
|
+
},
|
|
2161
|
+
"category": {
|
|
2162
|
+
"oneOf": [
|
|
2163
|
+
{
|
|
2164
|
+
"type": "string"
|
|
2165
|
+
},
|
|
2166
|
+
{
|
|
2167
|
+
"$ref": "#/$defs/categoryCode"
|
|
2168
|
+
},
|
|
2169
|
+
{
|
|
2170
|
+
"type": "array",
|
|
2171
|
+
"items": {
|
|
2172
|
+
"oneOf": [
|
|
2173
|
+
{
|
|
2174
|
+
"type": "string"
|
|
2175
|
+
},
|
|
2176
|
+
{
|
|
2177
|
+
"$ref": "#/$defs/categoryCode"
|
|
2178
|
+
}
|
|
2179
|
+
]
|
|
2180
|
+
},
|
|
2181
|
+
"minItems": 1
|
|
2182
|
+
}
|
|
2183
|
+
]
|
|
2184
|
+
},
|
|
2185
|
+
"color": {
|
|
2186
|
+
"type": "string"
|
|
2187
|
+
},
|
|
2188
|
+
"material": {
|
|
2189
|
+
"type": "string"
|
|
2190
|
+
},
|
|
2191
|
+
"weight": {
|
|
2192
|
+
"type": "object"
|
|
2193
|
+
},
|
|
2194
|
+
"height": {
|
|
2195
|
+
"type": "object"
|
|
2196
|
+
},
|
|
2197
|
+
"width": {
|
|
2198
|
+
"type": "object"
|
|
2199
|
+
},
|
|
2200
|
+
"depth": {
|
|
2201
|
+
"type": "object"
|
|
2202
|
+
},
|
|
2203
|
+
"countryOfOrigin": {
|
|
2204
|
+
"type": "string",
|
|
2205
|
+
"pattern": "^[A-Z]{2}$"
|
|
2206
|
+
},
|
|
2207
|
+
"image": {
|
|
2208
|
+
"type": "array",
|
|
2209
|
+
"items": {
|
|
2210
|
+
"$ref": "#/$defs/imageObject"
|
|
2211
|
+
}
|
|
2212
|
+
},
|
|
2213
|
+
"video": {
|
|
2214
|
+
"type": "array",
|
|
2215
|
+
"items": {
|
|
2216
|
+
"$ref": "#/$defs/videoObject"
|
|
2217
|
+
}
|
|
2218
|
+
},
|
|
2219
|
+
"additionalProperty": {
|
|
2220
|
+
"type": "array"
|
|
2221
|
+
},
|
|
2222
|
+
"hasCertification": {
|
|
2223
|
+
"type": "array",
|
|
2224
|
+
"items": {
|
|
2225
|
+
"$ref": "#/$defs/certification"
|
|
2226
|
+
}
|
|
2227
|
+
},
|
|
2228
|
+
"manufacturer": {
|
|
2229
|
+
"type": "object"
|
|
2230
|
+
},
|
|
2231
|
+
"offers": {
|
|
2232
|
+
"type": "array",
|
|
2233
|
+
"items": {
|
|
2234
|
+
"oneOf": [
|
|
2235
|
+
{
|
|
2236
|
+
"$ref": "#/$defs/offer"
|
|
2237
|
+
},
|
|
2238
|
+
{
|
|
2239
|
+
"$ref": "#/$defs/aggregateOffer"
|
|
2240
|
+
}
|
|
2241
|
+
]
|
|
2242
|
+
},
|
|
2243
|
+
"minItems": 1
|
|
2244
|
+
},
|
|
2245
|
+
"aggregateRating": {
|
|
2246
|
+
"type": "object"
|
|
2247
|
+
},
|
|
2248
|
+
"review": {
|
|
2249
|
+
"type": "array"
|
|
2250
|
+
},
|
|
2251
|
+
"isVariantOf": {
|
|
2252
|
+
"type": "object"
|
|
2253
|
+
},
|
|
2254
|
+
"isRelatedTo": {
|
|
2255
|
+
"type": "array"
|
|
2256
|
+
},
|
|
2257
|
+
"isSimilarTo": {
|
|
2258
|
+
"type": "array"
|
|
2259
|
+
},
|
|
2260
|
+
"isPartOf": {
|
|
2261
|
+
"oneOf": [
|
|
2262
|
+
{
|
|
2263
|
+
"type": "object"
|
|
2264
|
+
},
|
|
2265
|
+
{
|
|
2266
|
+
"type": "array"
|
|
2267
|
+
}
|
|
2268
|
+
]
|
|
2269
|
+
},
|
|
2270
|
+
"hasPart": {
|
|
2271
|
+
"oneOf": [
|
|
2272
|
+
{
|
|
2273
|
+
"type": "object"
|
|
2274
|
+
},
|
|
2275
|
+
{
|
|
2276
|
+
"type": "array"
|
|
2277
|
+
}
|
|
2278
|
+
]
|
|
2279
|
+
},
|
|
2280
|
+
"question": {
|
|
2281
|
+
"type": "array",
|
|
2282
|
+
"items": {
|
|
2283
|
+
"$ref": "#/$defs/questionObject"
|
|
2284
|
+
}
|
|
2285
|
+
},
|
|
2286
|
+
"pagefront:document": {
|
|
2287
|
+
"type": "array",
|
|
2288
|
+
"items": {
|
|
2289
|
+
"$ref": "#/$defs/documentObject"
|
|
2290
|
+
}
|
|
2291
|
+
},
|
|
2292
|
+
"pagefront:relatedProduct": {
|
|
2293
|
+
"type": "array",
|
|
2294
|
+
"items": {
|
|
2295
|
+
"$ref": "#/$defs/relatedProductObject"
|
|
2296
|
+
}
|
|
2297
|
+
},
|
|
2298
|
+
"pagefront:featureGroup": {
|
|
2299
|
+
"type": "array",
|
|
2300
|
+
"items": {
|
|
2301
|
+
"$ref": "#/$defs/featureGroup"
|
|
2302
|
+
},
|
|
2303
|
+
"minItems": 1
|
|
2304
|
+
},
|
|
2305
|
+
"pagefront:productHighlights": {
|
|
2306
|
+
"type": "array",
|
|
2307
|
+
"items": {
|
|
2308
|
+
"type": "string"
|
|
2309
|
+
},
|
|
2310
|
+
"minItems": 1
|
|
2311
|
+
},
|
|
2312
|
+
"pagefront:legalEntity": {
|
|
2313
|
+
"type": "array",
|
|
2314
|
+
"items": {
|
|
2315
|
+
"$ref": "#/$defs/legalEntity"
|
|
2316
|
+
},
|
|
2317
|
+
"minItems": 1
|
|
2318
|
+
},
|
|
2319
|
+
"pagefront:safetyWarning": {
|
|
2320
|
+
"type": "array",
|
|
2321
|
+
"items": {
|
|
2322
|
+
"$ref": "#/$defs/safetyWarning"
|
|
2323
|
+
},
|
|
2324
|
+
"minItems": 1
|
|
2325
|
+
},
|
|
2326
|
+
"pagefront:safetyNotice": {
|
|
2327
|
+
"type": "array",
|
|
2328
|
+
"items": {
|
|
2329
|
+
"$ref": "#/$defs/safetyNotice"
|
|
2330
|
+
},
|
|
2331
|
+
"minItems": 1
|
|
2332
|
+
},
|
|
2333
|
+
"pagefront:sizeChart": {
|
|
2334
|
+
"$ref": "#/$defs/sizeChart"
|
|
2335
|
+
},
|
|
2336
|
+
"pagefront:sizeRecommendation": {
|
|
2337
|
+
"$ref": "#/$defs/sizeRecommendation"
|
|
2338
|
+
},
|
|
2339
|
+
"pagefront:materialComposition": {
|
|
2340
|
+
"type": "array",
|
|
2341
|
+
"items": {
|
|
2342
|
+
"$ref": "#/$defs/material"
|
|
2343
|
+
}
|
|
2344
|
+
},
|
|
2345
|
+
"pagefront:fabricComposition": {
|
|
2346
|
+
"type": "array",
|
|
2347
|
+
"items": {
|
|
2348
|
+
"$ref": "#/$defs/material"
|
|
2349
|
+
}
|
|
2350
|
+
},
|
|
2351
|
+
"pagefront:construction": {
|
|
2352
|
+
"$ref": "#/$defs/construction"
|
|
2353
|
+
},
|
|
2354
|
+
"pagefront:manufacturingChain": {
|
|
2355
|
+
"type": "array",
|
|
2356
|
+
"items": {
|
|
2357
|
+
"$ref": "#/$defs/manufacturingStage"
|
|
2358
|
+
}
|
|
2359
|
+
},
|
|
2360
|
+
"pagefront:gemstone": {
|
|
2361
|
+
"$ref": "#/$defs/gemstone"
|
|
2362
|
+
},
|
|
2363
|
+
"pagefront:configurator": {
|
|
2364
|
+
"$ref": "#/$defs/configurator"
|
|
2365
|
+
},
|
|
2366
|
+
"pagefront:madeToOrderTerms": {
|
|
2367
|
+
"$ref": "#/$defs/madeToOrderTerms"
|
|
2368
|
+
},
|
|
2369
|
+
"pagefront:manufacturerWarranty": {
|
|
2370
|
+
"type": "object"
|
|
2371
|
+
},
|
|
2372
|
+
"pagefront:careInstructions": {
|
|
2373
|
+
"type": "array",
|
|
2374
|
+
"items": {
|
|
2375
|
+
"type": "string"
|
|
2376
|
+
}
|
|
2377
|
+
},
|
|
2378
|
+
"pagefront:availableLanguages": {
|
|
2379
|
+
"type": "array",
|
|
2380
|
+
"items": {
|
|
2381
|
+
"type": "object",
|
|
2382
|
+
"required": [
|
|
2383
|
+
"lang",
|
|
2384
|
+
"url"
|
|
2385
|
+
],
|
|
2386
|
+
"properties": {
|
|
2387
|
+
"lang": {
|
|
2388
|
+
"type": "string"
|
|
2389
|
+
},
|
|
2390
|
+
"url": {
|
|
2391
|
+
"type": "string",
|
|
2392
|
+
"format": "uri"
|
|
2393
|
+
}
|
|
2394
|
+
},
|
|
2395
|
+
"additionalProperties": false
|
|
2396
|
+
}
|
|
2397
|
+
}
|
|
2398
|
+
},
|
|
2399
|
+
"if": {
|
|
2400
|
+
"properties": {
|
|
2401
|
+
"@type": {
|
|
2402
|
+
"const": "ProductGroup"
|
|
2403
|
+
}
|
|
2404
|
+
},
|
|
2405
|
+
"required": [
|
|
2406
|
+
"@type"
|
|
2407
|
+
]
|
|
2408
|
+
},
|
|
2409
|
+
"then": {
|
|
2410
|
+
"required": [
|
|
2411
|
+
"productGroupID"
|
|
2412
|
+
]
|
|
2413
|
+
},
|
|
2414
|
+
"else": {
|
|
2415
|
+
"required": [
|
|
2416
|
+
"url"
|
|
2417
|
+
],
|
|
2418
|
+
"anyOf": [
|
|
2419
|
+
{
|
|
2420
|
+
"required": [
|
|
2421
|
+
"sku"
|
|
2422
|
+
]
|
|
2423
|
+
},
|
|
2424
|
+
{
|
|
2425
|
+
"required": [
|
|
2426
|
+
"gtin13"
|
|
2427
|
+
]
|
|
2428
|
+
},
|
|
2429
|
+
{
|
|
2430
|
+
"required": [
|
|
2431
|
+
"gtin"
|
|
2432
|
+
]
|
|
2433
|
+
},
|
|
2434
|
+
{
|
|
2435
|
+
"required": [
|
|
2436
|
+
"mpn"
|
|
2437
|
+
]
|
|
2438
|
+
},
|
|
2439
|
+
{
|
|
2440
|
+
"required": [
|
|
2441
|
+
"productID"
|
|
2442
|
+
]
|
|
2443
|
+
}
|
|
2444
|
+
]
|
|
2445
|
+
},
|
|
2446
|
+
"additionalProperties": true
|
|
2447
|
+
},
|
|
2448
|
+
"amount": {
|
|
2449
|
+
"description": "A currency amount: a JSON number, or a decimal string with a dot as decimal point, no thousands separators and no currency symbol. A Sheet uses one of the two carriers for all its amounts.",
|
|
2450
|
+
"oneOf": [
|
|
2451
|
+
{
|
|
2452
|
+
"type": "number"
|
|
2453
|
+
},
|
|
2454
|
+
{
|
|
2455
|
+
"type": "string",
|
|
2456
|
+
"pattern": "^-?\\d+(\\.\\d+)?$"
|
|
2457
|
+
}
|
|
2458
|
+
]
|
|
2459
|
+
},
|
|
2460
|
+
"nonNegativeAmount": {
|
|
2461
|
+
"description": "An amount that is zero or positive: the same two carriers as amount, with no leading minus. Used for prices, price bounds, base prices, price hints and discount amounts; only modifiers and adjustment amounts are signed.",
|
|
2462
|
+
"oneOf": [
|
|
2463
|
+
{
|
|
2464
|
+
"type": "number",
|
|
2465
|
+
"minimum": 0
|
|
2466
|
+
},
|
|
2467
|
+
{
|
|
2468
|
+
"type": "string",
|
|
2469
|
+
"pattern": "^\\d+(\\.\\d+)?$"
|
|
2470
|
+
}
|
|
2471
|
+
]
|
|
2472
|
+
},
|
|
2473
|
+
"variantEntry": {
|
|
2474
|
+
"type": "object",
|
|
2475
|
+
"required": [
|
|
2476
|
+
"@type"
|
|
2477
|
+
],
|
|
2478
|
+
"properties": {
|
|
2479
|
+
"@type": {
|
|
2480
|
+
"type": "string"
|
|
2481
|
+
},
|
|
2482
|
+
"@id": {
|
|
2483
|
+
"type": "string",
|
|
2484
|
+
"format": "uri"
|
|
2485
|
+
},
|
|
2486
|
+
"url": {
|
|
2487
|
+
"type": "string",
|
|
2488
|
+
"format": "uri"
|
|
2489
|
+
},
|
|
2490
|
+
"sheet_url": {
|
|
2491
|
+
"type": "string",
|
|
2492
|
+
"format": "uri"
|
|
2493
|
+
},
|
|
2494
|
+
"name": {
|
|
2495
|
+
"type": "string"
|
|
2496
|
+
},
|
|
2497
|
+
"sku": {
|
|
2498
|
+
"type": "string"
|
|
2499
|
+
},
|
|
2500
|
+
"gtin13": {
|
|
2501
|
+
"$ref": "#/$defs/gtin13Value"
|
|
2502
|
+
},
|
|
2503
|
+
"gtin": {
|
|
2504
|
+
"$ref": "#/$defs/gtinValue"
|
|
2505
|
+
},
|
|
2506
|
+
"mpn": {
|
|
2507
|
+
"type": "string"
|
|
2508
|
+
},
|
|
2509
|
+
"productID": {
|
|
2510
|
+
"type": "string"
|
|
2511
|
+
},
|
|
2512
|
+
"color": {
|
|
2513
|
+
"type": "string"
|
|
2514
|
+
},
|
|
2515
|
+
"size": {
|
|
2516
|
+
"type": "string"
|
|
2517
|
+
},
|
|
2518
|
+
"material": {
|
|
2519
|
+
"type": "string"
|
|
2520
|
+
},
|
|
2521
|
+
"price": {
|
|
2522
|
+
"$ref": "#/$defs/nonNegativeAmount"
|
|
2523
|
+
},
|
|
2524
|
+
"image": {
|
|
2525
|
+
"type": "string",
|
|
2526
|
+
"format": "uri"
|
|
2527
|
+
},
|
|
2528
|
+
"additionalProperty": {
|
|
2529
|
+
"type": "array"
|
|
2530
|
+
}
|
|
2531
|
+
},
|
|
2532
|
+
"additionalProperties": true
|
|
2533
|
+
},
|
|
2534
|
+
"imageObject": {
|
|
2535
|
+
"type": "object",
|
|
2536
|
+
"required": [
|
|
2537
|
+
"@type",
|
|
2538
|
+
"url"
|
|
2539
|
+
],
|
|
2540
|
+
"properties": {
|
|
2541
|
+
"@type": {
|
|
2542
|
+
"const": "ImageObject"
|
|
2543
|
+
},
|
|
2544
|
+
"url": {
|
|
2545
|
+
"type": "string",
|
|
2546
|
+
"format": "uri"
|
|
2547
|
+
},
|
|
2548
|
+
"caption": {
|
|
2549
|
+
"type": "string"
|
|
2550
|
+
},
|
|
2551
|
+
"additionalProperty": {
|
|
2552
|
+
"type": "array",
|
|
2553
|
+
"items": {
|
|
2554
|
+
"type": "object",
|
|
2555
|
+
"properties": {
|
|
2556
|
+
"@type": {
|
|
2557
|
+
"const": "PropertyValue"
|
|
2558
|
+
},
|
|
2559
|
+
"name": {
|
|
2560
|
+
"type": "string"
|
|
2561
|
+
},
|
|
2562
|
+
"value": {
|
|
2563
|
+
"type": "string"
|
|
2564
|
+
}
|
|
2565
|
+
},
|
|
2566
|
+
"allOf": [
|
|
2567
|
+
{
|
|
2568
|
+
"if": {
|
|
2569
|
+
"properties": {
|
|
2570
|
+
"name": {
|
|
2571
|
+
"const": "role"
|
|
2572
|
+
}
|
|
2573
|
+
},
|
|
2574
|
+
"required": [
|
|
2575
|
+
"name"
|
|
2576
|
+
]
|
|
2577
|
+
},
|
|
2578
|
+
"then": {
|
|
2579
|
+
"properties": {
|
|
2580
|
+
"value": {
|
|
2581
|
+
"enum": [
|
|
2582
|
+
"hero",
|
|
2583
|
+
"packshot",
|
|
2584
|
+
"lifestyle",
|
|
2585
|
+
"detail",
|
|
2586
|
+
"flatlay",
|
|
2587
|
+
"swatch",
|
|
2588
|
+
"size_chart",
|
|
2589
|
+
"context"
|
|
2590
|
+
]
|
|
2591
|
+
}
|
|
2592
|
+
}
|
|
2593
|
+
}
|
|
2594
|
+
}
|
|
2595
|
+
]
|
|
2596
|
+
}
|
|
2597
|
+
}
|
|
2598
|
+
},
|
|
2599
|
+
"additionalProperties": true
|
|
2600
|
+
},
|
|
2601
|
+
"videoObject": {
|
|
2602
|
+
"type": "object",
|
|
2603
|
+
"required": [
|
|
2604
|
+
"@type"
|
|
2605
|
+
],
|
|
2606
|
+
"properties": {
|
|
2607
|
+
"@type": {
|
|
2608
|
+
"const": "VideoObject"
|
|
2609
|
+
},
|
|
2610
|
+
"url": {
|
|
2611
|
+
"type": "string",
|
|
2612
|
+
"format": "uri"
|
|
2613
|
+
},
|
|
2614
|
+
"contentUrl": {
|
|
2615
|
+
"type": "string",
|
|
2616
|
+
"format": "uri"
|
|
2617
|
+
},
|
|
2618
|
+
"embedUrl": {
|
|
2619
|
+
"type": "string",
|
|
2620
|
+
"format": "uri"
|
|
2621
|
+
},
|
|
2622
|
+
"thumbnailUrl": {
|
|
2623
|
+
"type": "string",
|
|
2624
|
+
"format": "uri"
|
|
2625
|
+
},
|
|
2626
|
+
"duration": {
|
|
2627
|
+
"type": "string",
|
|
2628
|
+
"pattern": "^P(?:\\d+Y)?(?:\\d+M)?(?:\\d+D)?(?:T(?:\\d+H)?(?:\\d+M)?(?:\\d+(?:\\.\\d+)?S)?)?$"
|
|
2629
|
+
},
|
|
2630
|
+
"uploadDate": {
|
|
2631
|
+
"type": "string"
|
|
2632
|
+
},
|
|
2633
|
+
"caption": {
|
|
2634
|
+
"type": "string"
|
|
2635
|
+
},
|
|
2636
|
+
"transcript": {
|
|
2637
|
+
"type": "string"
|
|
2638
|
+
},
|
|
2639
|
+
"description": {
|
|
2640
|
+
"type": "string"
|
|
2641
|
+
},
|
|
2642
|
+
"name": {
|
|
2643
|
+
"type": "string"
|
|
2644
|
+
},
|
|
2645
|
+
"additionalProperty": {
|
|
2646
|
+
"type": "array",
|
|
2647
|
+
"items": {
|
|
2648
|
+
"type": "object",
|
|
2649
|
+
"properties": {
|
|
2650
|
+
"@type": {
|
|
2651
|
+
"const": "PropertyValue"
|
|
2652
|
+
},
|
|
2653
|
+
"name": {
|
|
2654
|
+
"type": "string"
|
|
2655
|
+
},
|
|
2656
|
+
"value": {
|
|
2657
|
+
"type": "string"
|
|
2658
|
+
}
|
|
2659
|
+
},
|
|
2660
|
+
"allOf": [
|
|
2661
|
+
{
|
|
2662
|
+
"if": {
|
|
2663
|
+
"properties": {
|
|
2664
|
+
"name": {
|
|
2665
|
+
"const": "role"
|
|
2666
|
+
}
|
|
2667
|
+
},
|
|
2668
|
+
"required": [
|
|
2669
|
+
"name"
|
|
2670
|
+
]
|
|
2671
|
+
},
|
|
2672
|
+
"then": {
|
|
2673
|
+
"properties": {
|
|
2674
|
+
"value": {
|
|
2675
|
+
"enum": [
|
|
2676
|
+
"overview",
|
|
2677
|
+
"tutorial",
|
|
2678
|
+
"lifestyle",
|
|
2679
|
+
"construction",
|
|
2680
|
+
"demonstration",
|
|
2681
|
+
"comparison",
|
|
2682
|
+
"unboxing",
|
|
2683
|
+
"spin"
|
|
2684
|
+
]
|
|
2685
|
+
}
|
|
2686
|
+
}
|
|
2687
|
+
}
|
|
2688
|
+
}
|
|
2689
|
+
]
|
|
2690
|
+
}
|
|
2691
|
+
}
|
|
2692
|
+
},
|
|
2693
|
+
"anyOf": [
|
|
2694
|
+
{
|
|
2695
|
+
"required": [
|
|
2696
|
+
"url"
|
|
2697
|
+
]
|
|
2698
|
+
},
|
|
2699
|
+
{
|
|
2700
|
+
"required": [
|
|
2701
|
+
"contentUrl"
|
|
2702
|
+
]
|
|
2703
|
+
},
|
|
2704
|
+
{
|
|
2705
|
+
"required": [
|
|
2706
|
+
"embedUrl"
|
|
2707
|
+
]
|
|
2708
|
+
}
|
|
2709
|
+
],
|
|
2710
|
+
"additionalProperties": true
|
|
2711
|
+
},
|
|
2712
|
+
"questionObject": {
|
|
2713
|
+
"type": "object",
|
|
2714
|
+
"required": [
|
|
2715
|
+
"@type",
|
|
2716
|
+
"name",
|
|
2717
|
+
"acceptedAnswer"
|
|
2718
|
+
],
|
|
2719
|
+
"properties": {
|
|
2720
|
+
"@type": {
|
|
2721
|
+
"const": "Question"
|
|
2722
|
+
},
|
|
2723
|
+
"name": {
|
|
2724
|
+
"type": "string",
|
|
2725
|
+
"minLength": 1
|
|
2726
|
+
},
|
|
2727
|
+
"acceptedAnswer": {
|
|
2728
|
+
"type": "object",
|
|
2729
|
+
"required": [
|
|
2730
|
+
"@type",
|
|
2731
|
+
"text"
|
|
2732
|
+
],
|
|
2733
|
+
"properties": {
|
|
2734
|
+
"@type": {
|
|
2735
|
+
"const": "Answer"
|
|
2736
|
+
},
|
|
2737
|
+
"text": {
|
|
2738
|
+
"type": "string",
|
|
2739
|
+
"minLength": 1
|
|
2740
|
+
}
|
|
2741
|
+
},
|
|
2742
|
+
"additionalProperties": true
|
|
2743
|
+
},
|
|
2744
|
+
"suggestedAnswer": {
|
|
2745
|
+
"type": "array",
|
|
2746
|
+
"items": {
|
|
2747
|
+
"type": "object",
|
|
2748
|
+
"required": [
|
|
2749
|
+
"@type",
|
|
2750
|
+
"text"
|
|
2751
|
+
],
|
|
2752
|
+
"properties": {
|
|
2753
|
+
"@type": {
|
|
2754
|
+
"const": "Answer"
|
|
2755
|
+
},
|
|
2756
|
+
"text": {
|
|
2757
|
+
"type": "string",
|
|
2758
|
+
"minLength": 1
|
|
2759
|
+
}
|
|
2760
|
+
},
|
|
2761
|
+
"additionalProperties": true
|
|
2762
|
+
}
|
|
2763
|
+
}
|
|
2764
|
+
},
|
|
2765
|
+
"additionalProperties": true
|
|
2766
|
+
},
|
|
2767
|
+
"documentObject": {
|
|
2768
|
+
"type": "object",
|
|
2769
|
+
"required": [
|
|
2770
|
+
"@type",
|
|
2771
|
+
"url",
|
|
2772
|
+
"role"
|
|
2773
|
+
],
|
|
2774
|
+
"properties": {
|
|
2775
|
+
"@type": {
|
|
2776
|
+
"const": "pagefront:Document"
|
|
2777
|
+
},
|
|
2778
|
+
"url": {
|
|
2779
|
+
"type": "string",
|
|
2780
|
+
"format": "uri"
|
|
2781
|
+
},
|
|
2782
|
+
"role": {
|
|
2783
|
+
"type": "string",
|
|
2784
|
+
"enum": [
|
|
2785
|
+
"manual",
|
|
2786
|
+
"assembly",
|
|
2787
|
+
"care_guide",
|
|
2788
|
+
"spec_sheet",
|
|
2789
|
+
"compatibility",
|
|
2790
|
+
"warranty",
|
|
2791
|
+
"certificate",
|
|
2792
|
+
"environmental_declaration",
|
|
2793
|
+
"audit_report",
|
|
2794
|
+
"lab_test",
|
|
2795
|
+
"safety_data_sheet",
|
|
2796
|
+
"installation_guide",
|
|
2797
|
+
"user_guide",
|
|
2798
|
+
"quick_start",
|
|
2799
|
+
"brochure",
|
|
2800
|
+
"repairability_index",
|
|
2801
|
+
"recall_notice",
|
|
2802
|
+
"declaration_of_conformity"
|
|
2803
|
+
]
|
|
2804
|
+
},
|
|
2805
|
+
"name": {
|
|
2806
|
+
"type": "string"
|
|
2807
|
+
},
|
|
2808
|
+
"inLanguage": {
|
|
2809
|
+
"type": "string"
|
|
2810
|
+
},
|
|
2811
|
+
"description": {
|
|
2812
|
+
"type": "string"
|
|
2813
|
+
},
|
|
2814
|
+
"encodingFormat": {
|
|
2815
|
+
"type": "string"
|
|
2816
|
+
}
|
|
2817
|
+
},
|
|
2818
|
+
"additionalProperties": false
|
|
2819
|
+
},
|
|
2820
|
+
"relatedProductObject": {
|
|
2821
|
+
"type": "object",
|
|
2822
|
+
"required": [
|
|
2823
|
+
"@type",
|
|
2824
|
+
"relationship"
|
|
2825
|
+
],
|
|
2826
|
+
"properties": {
|
|
2827
|
+
"@type": {
|
|
2828
|
+
"const": "pagefront:RelatedProduct"
|
|
2829
|
+
},
|
|
2830
|
+
"relationship": {
|
|
2831
|
+
"type": "string",
|
|
2832
|
+
"enum": [
|
|
2833
|
+
"accessory",
|
|
2834
|
+
"consumable",
|
|
2835
|
+
"required_part",
|
|
2836
|
+
"spare_part",
|
|
2837
|
+
"often_bought_with",
|
|
2838
|
+
"recommended_with",
|
|
2839
|
+
"replaces",
|
|
2840
|
+
"replaced_by",
|
|
2841
|
+
"bundle_component",
|
|
2842
|
+
"compatible_with",
|
|
2843
|
+
"service"
|
|
2844
|
+
]
|
|
2845
|
+
},
|
|
2846
|
+
"@id": {
|
|
2847
|
+
"type": "string",
|
|
2848
|
+
"format": "uri"
|
|
2849
|
+
},
|
|
2850
|
+
"sku": {
|
|
2851
|
+
"type": "string"
|
|
2852
|
+
},
|
|
2853
|
+
"gtin": {
|
|
2854
|
+
"type": "string"
|
|
2855
|
+
},
|
|
2856
|
+
"gtin13": {
|
|
2857
|
+
"type": "string",
|
|
2858
|
+
"pattern": "^[0-9]{13}$"
|
|
2859
|
+
},
|
|
2860
|
+
"mpn": {
|
|
2861
|
+
"type": "string"
|
|
2862
|
+
},
|
|
2863
|
+
"name": {
|
|
2864
|
+
"type": "string"
|
|
2865
|
+
},
|
|
2866
|
+
"url": {
|
|
2867
|
+
"type": "string",
|
|
2868
|
+
"format": "uri"
|
|
2869
|
+
},
|
|
2870
|
+
"image": {
|
|
2871
|
+
"type": "string",
|
|
2872
|
+
"format": "uri"
|
|
2873
|
+
}
|
|
2874
|
+
},
|
|
2875
|
+
"anyOf": [
|
|
2876
|
+
{
|
|
2877
|
+
"required": [
|
|
2878
|
+
"@id"
|
|
2879
|
+
]
|
|
2880
|
+
},
|
|
2881
|
+
{
|
|
2882
|
+
"required": [
|
|
2883
|
+
"sku"
|
|
2884
|
+
]
|
|
2885
|
+
},
|
|
2886
|
+
{
|
|
2887
|
+
"required": [
|
|
2888
|
+
"gtin"
|
|
2889
|
+
]
|
|
2890
|
+
},
|
|
2891
|
+
{
|
|
2892
|
+
"required": [
|
|
2893
|
+
"gtin13"
|
|
2894
|
+
]
|
|
2895
|
+
},
|
|
2896
|
+
{
|
|
2897
|
+
"required": [
|
|
2898
|
+
"mpn"
|
|
2899
|
+
]
|
|
2900
|
+
}
|
|
2901
|
+
],
|
|
2902
|
+
"additionalProperties": false
|
|
2903
|
+
},
|
|
2904
|
+
"gtinValue": {
|
|
2905
|
+
"oneOf": [
|
|
2906
|
+
{
|
|
2907
|
+
"type": "string"
|
|
2908
|
+
},
|
|
2909
|
+
{
|
|
2910
|
+
"type": "array",
|
|
2911
|
+
"items": {
|
|
2912
|
+
"type": "string"
|
|
2913
|
+
},
|
|
2914
|
+
"minItems": 1
|
|
2915
|
+
}
|
|
2916
|
+
]
|
|
2917
|
+
},
|
|
2918
|
+
"gtin13Value": {
|
|
2919
|
+
"oneOf": [
|
|
2920
|
+
{
|
|
2921
|
+
"type": "string",
|
|
2922
|
+
"pattern": "^[0-9]{13}$"
|
|
2923
|
+
},
|
|
2924
|
+
{
|
|
2925
|
+
"type": "array",
|
|
2926
|
+
"items": {
|
|
2927
|
+
"type": "string",
|
|
2928
|
+
"pattern": "^[0-9]{13}$"
|
|
2929
|
+
},
|
|
2930
|
+
"minItems": 1
|
|
2931
|
+
}
|
|
2932
|
+
]
|
|
2933
|
+
},
|
|
2934
|
+
"categoryCode": {
|
|
2935
|
+
"type": "object",
|
|
2936
|
+
"required": [
|
|
2937
|
+
"@type",
|
|
2938
|
+
"codeValue"
|
|
2939
|
+
],
|
|
2940
|
+
"properties": {
|
|
2941
|
+
"@type": {
|
|
2942
|
+
"const": "CategoryCode"
|
|
2943
|
+
},
|
|
2944
|
+
"codeValue": {
|
|
2945
|
+
"type": "string",
|
|
2946
|
+
"minLength": 1
|
|
2947
|
+
},
|
|
2948
|
+
"inCodeSet": {
|
|
2949
|
+
"oneOf": [
|
|
2950
|
+
{
|
|
2951
|
+
"type": "string",
|
|
2952
|
+
"format": "uri"
|
|
2953
|
+
},
|
|
2954
|
+
{
|
|
2955
|
+
"type": "object"
|
|
2956
|
+
}
|
|
2957
|
+
]
|
|
2958
|
+
},
|
|
2959
|
+
"name": {
|
|
2960
|
+
"type": "string"
|
|
2961
|
+
}
|
|
2962
|
+
},
|
|
2963
|
+
"additionalProperties": true
|
|
2964
|
+
},
|
|
2965
|
+
"featureGroup": {
|
|
2966
|
+
"type": "object",
|
|
2967
|
+
"required": [
|
|
2968
|
+
"@type",
|
|
2969
|
+
"name",
|
|
2970
|
+
"feature"
|
|
2971
|
+
],
|
|
2972
|
+
"properties": {
|
|
2973
|
+
"@type": {
|
|
2974
|
+
"const": "pagefront:FeatureGroup"
|
|
2975
|
+
},
|
|
2976
|
+
"name": {
|
|
2977
|
+
"type": "string",
|
|
2978
|
+
"minLength": 1
|
|
2979
|
+
},
|
|
2980
|
+
"sortOrder": {
|
|
2981
|
+
"type": "integer"
|
|
2982
|
+
},
|
|
2983
|
+
"feature": {
|
|
2984
|
+
"type": "array",
|
|
2985
|
+
"items": {
|
|
2986
|
+
"$ref": "#/$defs/featureEntry"
|
|
2987
|
+
},
|
|
2988
|
+
"minItems": 1
|
|
2989
|
+
}
|
|
2990
|
+
},
|
|
2991
|
+
"additionalProperties": false
|
|
2992
|
+
},
|
|
2993
|
+
"featureEntry": {
|
|
2994
|
+
"type": "object",
|
|
2995
|
+
"required": [
|
|
2996
|
+
"@type",
|
|
2997
|
+
"name",
|
|
2998
|
+
"value"
|
|
2999
|
+
],
|
|
3000
|
+
"properties": {
|
|
3001
|
+
"@type": {
|
|
3002
|
+
"const": "PropertyValue"
|
|
3003
|
+
},
|
|
3004
|
+
"propertyID": {
|
|
3005
|
+
"type": "string"
|
|
3006
|
+
},
|
|
3007
|
+
"name": {
|
|
3008
|
+
"type": "string",
|
|
3009
|
+
"minLength": 1
|
|
3010
|
+
},
|
|
3011
|
+
"value": {
|
|
3012
|
+
"anyOf": [
|
|
3013
|
+
{
|
|
3014
|
+
"type": "string"
|
|
3015
|
+
},
|
|
3016
|
+
{
|
|
3017
|
+
"type": "number"
|
|
3018
|
+
},
|
|
3019
|
+
{
|
|
3020
|
+
"type": "boolean"
|
|
3021
|
+
}
|
|
3022
|
+
]
|
|
3023
|
+
},
|
|
3024
|
+
"unitCode": {
|
|
3025
|
+
"type": "string"
|
|
3026
|
+
},
|
|
3027
|
+
"description": {
|
|
3028
|
+
"type": "string"
|
|
3029
|
+
},
|
|
3030
|
+
"pagefront:presentationValue": {
|
|
3031
|
+
"type": "string"
|
|
3032
|
+
}
|
|
3033
|
+
},
|
|
3034
|
+
"additionalProperties": true
|
|
3035
|
+
},
|
|
3036
|
+
"legalEntity": {
|
|
3037
|
+
"type": "object",
|
|
3038
|
+
"required": [
|
|
3039
|
+
"@type",
|
|
3040
|
+
"role",
|
|
3041
|
+
"organization"
|
|
3042
|
+
],
|
|
3043
|
+
"properties": {
|
|
3044
|
+
"@type": {
|
|
3045
|
+
"const": "pagefront:LegalEntity"
|
|
3046
|
+
},
|
|
3047
|
+
"role": {
|
|
3048
|
+
"type": "string",
|
|
3049
|
+
"enum": [
|
|
3050
|
+
"brand_owner",
|
|
3051
|
+
"licensee",
|
|
3052
|
+
"authorized_representative",
|
|
3053
|
+
"importer",
|
|
3054
|
+
"manufacturer"
|
|
3055
|
+
]
|
|
3056
|
+
},
|
|
3057
|
+
"organization": {
|
|
3058
|
+
"type": "object",
|
|
3059
|
+
"required": [
|
|
3060
|
+
"@type"
|
|
3061
|
+
],
|
|
3062
|
+
"anyOf": [
|
|
3063
|
+
{
|
|
3064
|
+
"required": [
|
|
3065
|
+
"name"
|
|
3066
|
+
]
|
|
3067
|
+
},
|
|
3068
|
+
{
|
|
3069
|
+
"required": [
|
|
3070
|
+
"@id"
|
|
3071
|
+
]
|
|
3072
|
+
}
|
|
3073
|
+
],
|
|
3074
|
+
"properties": {
|
|
3075
|
+
"@type": {
|
|
3076
|
+
"const": "Organization"
|
|
3077
|
+
},
|
|
3078
|
+
"@id": {
|
|
3079
|
+
"type": "string",
|
|
3080
|
+
"format": "uri"
|
|
3081
|
+
},
|
|
3082
|
+
"name": {
|
|
3083
|
+
"type": "string",
|
|
3084
|
+
"minLength": 1
|
|
3085
|
+
},
|
|
3086
|
+
"address": {
|
|
3087
|
+
"type": "object"
|
|
3088
|
+
},
|
|
3089
|
+
"url": {
|
|
3090
|
+
"type": "string",
|
|
3091
|
+
"format": "uri"
|
|
3092
|
+
},
|
|
3093
|
+
"email": {
|
|
3094
|
+
"type": "string",
|
|
3095
|
+
"format": "email"
|
|
3096
|
+
},
|
|
3097
|
+
"pagefront:sheetUrl": {
|
|
3098
|
+
"type": "string",
|
|
3099
|
+
"format": "uri"
|
|
3100
|
+
}
|
|
3101
|
+
},
|
|
3102
|
+
"additionalProperties": true
|
|
3103
|
+
}
|
|
3104
|
+
},
|
|
3105
|
+
"additionalProperties": false
|
|
3106
|
+
},
|
|
3107
|
+
"safetyWarning": {
|
|
3108
|
+
"type": "object",
|
|
3109
|
+
"required": [
|
|
3110
|
+
"@type",
|
|
3111
|
+
"text"
|
|
3112
|
+
],
|
|
3113
|
+
"properties": {
|
|
3114
|
+
"@type": {
|
|
3115
|
+
"const": "pagefront:SafetyWarning"
|
|
3116
|
+
},
|
|
3117
|
+
"text": {
|
|
3118
|
+
"type": "string",
|
|
3119
|
+
"minLength": 1
|
|
3120
|
+
},
|
|
3121
|
+
"pictogram": {
|
|
3122
|
+
"type": "string",
|
|
3123
|
+
"format": "uri"
|
|
3124
|
+
},
|
|
3125
|
+
"hazardCategory": {
|
|
3126
|
+
"type": "string"
|
|
3127
|
+
}
|
|
3128
|
+
},
|
|
3129
|
+
"additionalProperties": false
|
|
3130
|
+
},
|
|
3131
|
+
"safetyNotice": {
|
|
3132
|
+
"type": "object",
|
|
3133
|
+
"required": [
|
|
3134
|
+
"@type",
|
|
3135
|
+
"noticeType"
|
|
3136
|
+
],
|
|
3137
|
+
"properties": {
|
|
3138
|
+
"@type": {
|
|
3139
|
+
"const": "pagefront:SafetyNotice"
|
|
3140
|
+
},
|
|
3141
|
+
"noticeType": {
|
|
3142
|
+
"type": "string",
|
|
3143
|
+
"enum": [
|
|
3144
|
+
"recall",
|
|
3145
|
+
"warning"
|
|
3146
|
+
]
|
|
3147
|
+
},
|
|
3148
|
+
"hazard": {
|
|
3149
|
+
"type": "string"
|
|
3150
|
+
},
|
|
3151
|
+
"remedy": {
|
|
3152
|
+
"type": "string",
|
|
3153
|
+
"enum": [
|
|
3154
|
+
"repair",
|
|
3155
|
+
"replacement",
|
|
3156
|
+
"refund"
|
|
3157
|
+
]
|
|
3158
|
+
},
|
|
3159
|
+
"description": {
|
|
3160
|
+
"type": "string"
|
|
3161
|
+
},
|
|
3162
|
+
"reference": {
|
|
3163
|
+
"type": "string",
|
|
3164
|
+
"format": "uri"
|
|
3165
|
+
},
|
|
3166
|
+
"datePublished": {
|
|
3167
|
+
"type": "string",
|
|
3168
|
+
"format": "date"
|
|
3169
|
+
},
|
|
3170
|
+
"url": {
|
|
3171
|
+
"type": "string",
|
|
3172
|
+
"format": "uri"
|
|
3173
|
+
}
|
|
3174
|
+
},
|
|
3175
|
+
"additionalProperties": false
|
|
3176
|
+
},
|
|
3177
|
+
"certification": {
|
|
3178
|
+
"type": "object",
|
|
3179
|
+
"required": [
|
|
3180
|
+
"@type",
|
|
3181
|
+
"name"
|
|
3182
|
+
],
|
|
3183
|
+
"properties": {
|
|
3184
|
+
"@type": {
|
|
3185
|
+
"const": "Certification"
|
|
3186
|
+
},
|
|
3187
|
+
"name": {
|
|
3188
|
+
"type": "string"
|
|
3189
|
+
},
|
|
3190
|
+
"issuedBy": {
|
|
3191
|
+
"type": "object"
|
|
3192
|
+
},
|
|
3193
|
+
"about": {
|
|
3194
|
+
"type": "string"
|
|
3195
|
+
},
|
|
3196
|
+
"additionalProperty": {
|
|
3197
|
+
"type": "array"
|
|
3198
|
+
}
|
|
3199
|
+
},
|
|
3200
|
+
"additionalProperties": true
|
|
3201
|
+
},
|
|
3202
|
+
"offer": {
|
|
3203
|
+
"type": "object",
|
|
3204
|
+
"required": [
|
|
3205
|
+
"@type"
|
|
3206
|
+
],
|
|
3207
|
+
"properties": {
|
|
3208
|
+
"@type": {
|
|
3209
|
+
"const": "Offer"
|
|
3210
|
+
},
|
|
3211
|
+
"@id": {
|
|
3212
|
+
"type": "string"
|
|
3213
|
+
},
|
|
3214
|
+
"itemOffered": {
|
|
3215
|
+
"type": "object"
|
|
3216
|
+
},
|
|
3217
|
+
"price": {
|
|
3218
|
+
"$ref": "#/$defs/nonNegativeAmount"
|
|
3219
|
+
},
|
|
3220
|
+
"priceCurrency": {
|
|
3221
|
+
"type": "string",
|
|
3222
|
+
"pattern": "^[A-Z]{3}$"
|
|
3223
|
+
},
|
|
3224
|
+
"priceSpecification": {
|
|
3225
|
+
"oneOf": [
|
|
3226
|
+
{
|
|
3227
|
+
"type": "object"
|
|
3228
|
+
},
|
|
3229
|
+
{
|
|
3230
|
+
"type": "array",
|
|
3231
|
+
"items": {
|
|
3232
|
+
"type": "object"
|
|
3233
|
+
}
|
|
3234
|
+
}
|
|
3235
|
+
]
|
|
3236
|
+
},
|
|
3237
|
+
"availability": {
|
|
3238
|
+
"type": "string",
|
|
3239
|
+
"pattern": "^https?://schema\\.org/(InStock|OutOfStock|PreOrder|BackOrder|InStoreOnly|LimitedAvailability|MadeToOrder|OnlineOnly|SoldOut|Discontinued|Reserved)$"
|
|
3240
|
+
},
|
|
3241
|
+
"itemCondition": {
|
|
3242
|
+
"type": "string",
|
|
3243
|
+
"pattern": "^https?://schema\\.org/(NewCondition|UsedCondition|RefurbishedCondition|DamagedCondition)$"
|
|
3244
|
+
},
|
|
3245
|
+
"seller": {
|
|
3246
|
+
"type": "object",
|
|
3247
|
+
"properties": {
|
|
3248
|
+
"pagefront:sheetUrl": {
|
|
3249
|
+
"type": "string",
|
|
3250
|
+
"format": "uri"
|
|
3251
|
+
}
|
|
3252
|
+
}
|
|
3253
|
+
},
|
|
3254
|
+
"shippingDetails": {
|
|
3255
|
+
"oneOf": [
|
|
3256
|
+
{
|
|
3257
|
+
"type": "object"
|
|
3258
|
+
},
|
|
3259
|
+
{
|
|
3260
|
+
"type": "array",
|
|
3261
|
+
"items": {
|
|
3262
|
+
"type": "object"
|
|
3263
|
+
}
|
|
3264
|
+
}
|
|
3265
|
+
]
|
|
3266
|
+
},
|
|
3267
|
+
"hasMerchantReturnPolicy": {
|
|
3268
|
+
"type": "object"
|
|
3269
|
+
},
|
|
3270
|
+
"warranty": {
|
|
3271
|
+
"type": "object"
|
|
3272
|
+
},
|
|
3273
|
+
"areaServed": {},
|
|
3274
|
+
"eligibleRegion": {
|
|
3275
|
+
"type": "array"
|
|
3276
|
+
},
|
|
3277
|
+
"acceptedPaymentMethod": {
|
|
3278
|
+
"type": "array"
|
|
3279
|
+
},
|
|
3280
|
+
"pagefront:estimatedDelivery": {
|
|
3281
|
+
"$ref": "#/$defs/deliveryEstimate"
|
|
3282
|
+
},
|
|
3283
|
+
"pagefront:promotions": {
|
|
3284
|
+
"type": "array",
|
|
3285
|
+
"items": {
|
|
3286
|
+
"$ref": "#/$defs/promotion"
|
|
3287
|
+
}
|
|
3288
|
+
},
|
|
3289
|
+
"pagefront:priceOnRequest": {
|
|
3290
|
+
"$ref": "#/$defs/priceOnRequest"
|
|
3291
|
+
},
|
|
3292
|
+
"pagefront:configuratorPricing": {
|
|
3293
|
+
"$ref": "#/$defs/configuratorPricing"
|
|
3294
|
+
}
|
|
3295
|
+
},
|
|
3296
|
+
"anyOf": [
|
|
3297
|
+
{
|
|
3298
|
+
"required": [
|
|
3299
|
+
"price",
|
|
3300
|
+
"priceCurrency"
|
|
3301
|
+
]
|
|
3302
|
+
},
|
|
3303
|
+
{
|
|
3304
|
+
"required": [
|
|
3305
|
+
"priceSpecification"
|
|
3306
|
+
]
|
|
3307
|
+
},
|
|
3308
|
+
{
|
|
3309
|
+
"required": [
|
|
3310
|
+
"pagefront:priceOnRequest"
|
|
3311
|
+
]
|
|
3312
|
+
}
|
|
3313
|
+
],
|
|
3314
|
+
"dependentRequired": {
|
|
3315
|
+
"pagefront:configuratorPricing": [
|
|
3316
|
+
"price",
|
|
3317
|
+
"priceCurrency"
|
|
3318
|
+
]
|
|
3319
|
+
},
|
|
3320
|
+
"additionalProperties": true
|
|
3321
|
+
},
|
|
3322
|
+
"aggregateOffer": {
|
|
3323
|
+
"type": "object",
|
|
3324
|
+
"required": [
|
|
3325
|
+
"@type",
|
|
3326
|
+
"lowPrice",
|
|
3327
|
+
"highPrice",
|
|
3328
|
+
"priceCurrency"
|
|
3329
|
+
],
|
|
3330
|
+
"properties": {
|
|
3331
|
+
"@type": {
|
|
3332
|
+
"const": "AggregateOffer"
|
|
3333
|
+
},
|
|
3334
|
+
"@id": {
|
|
3335
|
+
"type": "string"
|
|
3336
|
+
},
|
|
3337
|
+
"lowPrice": {
|
|
3338
|
+
"$ref": "#/$defs/nonNegativeAmount"
|
|
3339
|
+
},
|
|
3340
|
+
"highPrice": {
|
|
3341
|
+
"$ref": "#/$defs/nonNegativeAmount"
|
|
3342
|
+
},
|
|
3343
|
+
"priceCurrency": {
|
|
3344
|
+
"type": "string",
|
|
3345
|
+
"pattern": "^[A-Z]{3}$"
|
|
3346
|
+
},
|
|
3347
|
+
"offerCount": {
|
|
3348
|
+
"type": "integer"
|
|
3349
|
+
},
|
|
3350
|
+
"availability": {
|
|
3351
|
+
"type": "string",
|
|
3352
|
+
"pattern": "^https?://schema\\.org/(InStock|OutOfStock|PreOrder|BackOrder|InStoreOnly|LimitedAvailability|MadeToOrder|OnlineOnly|SoldOut|Discontinued|Reserved)$"
|
|
3353
|
+
},
|
|
3354
|
+
"itemCondition": {
|
|
3355
|
+
"type": "string",
|
|
3356
|
+
"pattern": "^https?://schema\\.org/(NewCondition|UsedCondition|RefurbishedCondition|DamagedCondition)$"
|
|
3357
|
+
},
|
|
3358
|
+
"eligibleRegion": {
|
|
3359
|
+
"type": "array"
|
|
3360
|
+
},
|
|
3361
|
+
"areaServed": {},
|
|
3362
|
+
"validFrom": {
|
|
3363
|
+
"type": "string"
|
|
3364
|
+
},
|
|
3365
|
+
"validThrough": {
|
|
3366
|
+
"type": "string"
|
|
3367
|
+
},
|
|
3368
|
+
"seller": {
|
|
3369
|
+
"type": "object"
|
|
3370
|
+
},
|
|
3371
|
+
"pagefront:configuratorPricing": {
|
|
3372
|
+
"$ref": "#/$defs/configuratorPricing"
|
|
3373
|
+
}
|
|
3374
|
+
},
|
|
3375
|
+
"additionalProperties": true
|
|
3376
|
+
},
|
|
3377
|
+
"priceOnRequest": {
|
|
3378
|
+
"type": "object",
|
|
3379
|
+
"required": [
|
|
3380
|
+
"@type",
|
|
3381
|
+
"method"
|
|
3382
|
+
],
|
|
3383
|
+
"properties": {
|
|
3384
|
+
"@type": {
|
|
3385
|
+
"const": "pagefront:PriceOnRequest"
|
|
3386
|
+
},
|
|
3387
|
+
"method": {
|
|
3388
|
+
"type": "string",
|
|
3389
|
+
"enum": [
|
|
3390
|
+
"authorized_retailer",
|
|
3391
|
+
"dealer_network",
|
|
3392
|
+
"quote_form",
|
|
3393
|
+
"email",
|
|
3394
|
+
"phone",
|
|
3395
|
+
"unspecified"
|
|
3396
|
+
]
|
|
3397
|
+
},
|
|
3398
|
+
"contactUrl": {
|
|
3399
|
+
"type": "string",
|
|
3400
|
+
"format": "uri"
|
|
3401
|
+
},
|
|
3402
|
+
"contactEmail": {
|
|
3403
|
+
"type": "string",
|
|
3404
|
+
"format": "email"
|
|
3405
|
+
},
|
|
3406
|
+
"contactPhone": {
|
|
3407
|
+
"type": "string"
|
|
3408
|
+
},
|
|
3409
|
+
"note": {
|
|
3410
|
+
"type": "string"
|
|
3411
|
+
}
|
|
3412
|
+
},
|
|
3413
|
+
"additionalProperties": false
|
|
3414
|
+
},
|
|
3415
|
+
"sizeChart": {
|
|
3416
|
+
"type": "object",
|
|
3417
|
+
"required": [
|
|
3418
|
+
"@type",
|
|
3419
|
+
"unitCode",
|
|
3420
|
+
"sizes",
|
|
3421
|
+
"measurements"
|
|
3422
|
+
],
|
|
3423
|
+
"properties": {
|
|
3424
|
+
"@type": {
|
|
3425
|
+
"const": "pagefront:SizeChart"
|
|
3426
|
+
},
|
|
3427
|
+
"unitCode": {
|
|
3428
|
+
"type": "string"
|
|
3429
|
+
},
|
|
3430
|
+
"sizes": {
|
|
3431
|
+
"type": "array",
|
|
3432
|
+
"items": {
|
|
3433
|
+
"type": "string"
|
|
3434
|
+
},
|
|
3435
|
+
"minItems": 1
|
|
3436
|
+
},
|
|
3437
|
+
"measurements": {
|
|
3438
|
+
"type": "array",
|
|
3439
|
+
"items": {
|
|
3440
|
+
"$ref": "#/$defs/measurement"
|
|
3441
|
+
},
|
|
3442
|
+
"minItems": 1
|
|
3443
|
+
},
|
|
3444
|
+
"modelReferences": {
|
|
3445
|
+
"type": "array",
|
|
3446
|
+
"items": {
|
|
3447
|
+
"$ref": "#/$defs/modelReference"
|
|
3448
|
+
}
|
|
3449
|
+
}
|
|
3450
|
+
},
|
|
3451
|
+
"additionalProperties": false
|
|
3452
|
+
},
|
|
3453
|
+
"measurement": {
|
|
3454
|
+
"type": "object",
|
|
3455
|
+
"required": [
|
|
3456
|
+
"@type",
|
|
3457
|
+
"name",
|
|
3458
|
+
"values"
|
|
3459
|
+
],
|
|
3460
|
+
"properties": {
|
|
3461
|
+
"@type": {
|
|
3462
|
+
"const": "pagefront:Measurement"
|
|
3463
|
+
},
|
|
3464
|
+
"name": {
|
|
3465
|
+
"type": "string"
|
|
3466
|
+
},
|
|
3467
|
+
"values": {
|
|
3468
|
+
"type": "object",
|
|
3469
|
+
"additionalProperties": {
|
|
3470
|
+
"type": "number"
|
|
3471
|
+
}
|
|
3472
|
+
}
|
|
3473
|
+
},
|
|
3474
|
+
"additionalProperties": false
|
|
3475
|
+
},
|
|
3476
|
+
"modelReference": {
|
|
3477
|
+
"type": "object",
|
|
3478
|
+
"required": [
|
|
3479
|
+
"@type",
|
|
3480
|
+
"name"
|
|
3481
|
+
],
|
|
3482
|
+
"properties": {
|
|
3483
|
+
"@type": {
|
|
3484
|
+
"const": "pagefront:ModelReference"
|
|
3485
|
+
},
|
|
3486
|
+
"name": {
|
|
3487
|
+
"type": "string"
|
|
3488
|
+
},
|
|
3489
|
+
"heightCm": {
|
|
3490
|
+
"type": "number",
|
|
3491
|
+
"minimum": 0
|
|
3492
|
+
},
|
|
3493
|
+
"wearsSize": {
|
|
3494
|
+
"type": "string"
|
|
3495
|
+
}
|
|
3496
|
+
},
|
|
3497
|
+
"additionalProperties": false
|
|
3498
|
+
},
|
|
3499
|
+
"sizeRecommendation": {
|
|
3500
|
+
"type": "object",
|
|
3501
|
+
"required": [
|
|
3502
|
+
"@type"
|
|
3503
|
+
],
|
|
3504
|
+
"properties": {
|
|
3505
|
+
"@type": {
|
|
3506
|
+
"const": "pagefront:SizeRecommendation"
|
|
3507
|
+
},
|
|
3508
|
+
"fitProfile": {
|
|
3509
|
+
"type": "string",
|
|
3510
|
+
"enum": [
|
|
3511
|
+
"runs_small",
|
|
3512
|
+
"true_to_size",
|
|
3513
|
+
"runs_large"
|
|
3514
|
+
]
|
|
3515
|
+
},
|
|
3516
|
+
"sizeAdjustment": {
|
|
3517
|
+
"$ref": "#/$defs/sizeAdjustment"
|
|
3518
|
+
},
|
|
3519
|
+
"description": {
|
|
3520
|
+
"type": "string"
|
|
3521
|
+
},
|
|
3522
|
+
"appliesTo": {
|
|
3523
|
+
"type": "string"
|
|
3524
|
+
}
|
|
3525
|
+
},
|
|
3526
|
+
"additionalProperties": false
|
|
3527
|
+
},
|
|
3528
|
+
"sizeAdjustment": {
|
|
3529
|
+
"type": "object",
|
|
3530
|
+
"required": [
|
|
3531
|
+
"@type",
|
|
3532
|
+
"direction",
|
|
3533
|
+
"magnitude"
|
|
3534
|
+
],
|
|
3535
|
+
"properties": {
|
|
3536
|
+
"@type": {
|
|
3537
|
+
"const": "pagefront:SizeAdjustment"
|
|
3538
|
+
},
|
|
3539
|
+
"direction": {
|
|
3540
|
+
"type": "string",
|
|
3541
|
+
"enum": [
|
|
3542
|
+
"up",
|
|
3543
|
+
"down"
|
|
3544
|
+
]
|
|
3545
|
+
},
|
|
3546
|
+
"magnitude": {
|
|
3547
|
+
"type": "number",
|
|
3548
|
+
"minimum": 0
|
|
3549
|
+
},
|
|
3550
|
+
"sizeSystem": {
|
|
3551
|
+
"type": "string"
|
|
3552
|
+
}
|
|
3553
|
+
},
|
|
3554
|
+
"additionalProperties": false
|
|
3555
|
+
},
|
|
3556
|
+
"material": {
|
|
3557
|
+
"type": "object",
|
|
3558
|
+
"required": [
|
|
3559
|
+
"@type",
|
|
3560
|
+
"material"
|
|
3561
|
+
],
|
|
3562
|
+
"properties": {
|
|
3563
|
+
"@type": {
|
|
3564
|
+
"const": "pagefront:Material"
|
|
3565
|
+
},
|
|
3566
|
+
"material": {
|
|
3567
|
+
"type": "string"
|
|
3568
|
+
},
|
|
3569
|
+
"percentage": {
|
|
3570
|
+
"type": "number",
|
|
3571
|
+
"minimum": 0,
|
|
3572
|
+
"maximum": 100
|
|
3573
|
+
},
|
|
3574
|
+
"purity": {
|
|
3575
|
+
"type": "string"
|
|
3576
|
+
},
|
|
3577
|
+
"purityPercentage": {
|
|
3578
|
+
"type": "number",
|
|
3579
|
+
"minimum": 0,
|
|
3580
|
+
"maximum": 100
|
|
3581
|
+
},
|
|
3582
|
+
"provenance": {
|
|
3583
|
+
"type": "string",
|
|
3584
|
+
"enum": [
|
|
3585
|
+
"virgin",
|
|
3586
|
+
"recycled",
|
|
3587
|
+
"fair_mined",
|
|
3588
|
+
"lab_grown",
|
|
3589
|
+
"reclaimed",
|
|
3590
|
+
"deadstock"
|
|
3591
|
+
]
|
|
3592
|
+
},
|
|
3593
|
+
"weightGrams": {
|
|
3594
|
+
"type": "number",
|
|
3595
|
+
"minimum": 0
|
|
3596
|
+
}
|
|
3597
|
+
},
|
|
3598
|
+
"additionalProperties": false
|
|
3599
|
+
},
|
|
3600
|
+
"construction": {
|
|
3601
|
+
"type": "object",
|
|
3602
|
+
"required": [
|
|
3603
|
+
"@type"
|
|
3604
|
+
],
|
|
3605
|
+
"properties": {
|
|
3606
|
+
"@type": {
|
|
3607
|
+
"const": "pagefront:Construction"
|
|
3608
|
+
},
|
|
3609
|
+
"stitch": {
|
|
3610
|
+
"type": "string"
|
|
3611
|
+
},
|
|
3612
|
+
"gauge": {
|
|
3613
|
+
"type": "number"
|
|
3614
|
+
},
|
|
3615
|
+
"machine": {
|
|
3616
|
+
"type": "string"
|
|
3617
|
+
},
|
|
3618
|
+
"constructionNotes": {
|
|
3619
|
+
"type": "string"
|
|
3620
|
+
}
|
|
3621
|
+
},
|
|
3622
|
+
"additionalProperties": true
|
|
3623
|
+
},
|
|
3624
|
+
"manufacturingStage": {
|
|
3625
|
+
"type": "object",
|
|
3626
|
+
"required": [
|
|
3627
|
+
"@type",
|
|
3628
|
+
"stage",
|
|
3629
|
+
"country"
|
|
3630
|
+
],
|
|
3631
|
+
"properties": {
|
|
3632
|
+
"@type": {
|
|
3633
|
+
"const": "pagefront:ManufacturingStage"
|
|
3634
|
+
},
|
|
3635
|
+
"stage": {
|
|
3636
|
+
"type": "string"
|
|
3637
|
+
},
|
|
3638
|
+
"country": {
|
|
3639
|
+
"type": "string",
|
|
3640
|
+
"pattern": "^[A-Z]{2}$"
|
|
3641
|
+
},
|
|
3642
|
+
"facility": {
|
|
3643
|
+
"type": "string"
|
|
3644
|
+
},
|
|
3645
|
+
"facilityCountry": {
|
|
3646
|
+
"type": "string",
|
|
3647
|
+
"pattern": "^[A-Z]{2}$"
|
|
3648
|
+
}
|
|
3649
|
+
},
|
|
3650
|
+
"additionalProperties": false
|
|
3651
|
+
},
|
|
3652
|
+
"gemstone": {
|
|
3653
|
+
"type": "object",
|
|
3654
|
+
"required": [
|
|
3655
|
+
"@type",
|
|
3656
|
+
"type"
|
|
3657
|
+
],
|
|
3658
|
+
"properties": {
|
|
3659
|
+
"@type": {
|
|
3660
|
+
"const": "pagefront:Gemstone"
|
|
3661
|
+
},
|
|
3662
|
+
"type": {
|
|
3663
|
+
"type": "string"
|
|
3664
|
+
},
|
|
3665
|
+
"origin": {
|
|
3666
|
+
"type": "string",
|
|
3667
|
+
"enum": [
|
|
3668
|
+
"natural_mined",
|
|
3669
|
+
"lab_grown",
|
|
3670
|
+
"treated",
|
|
3671
|
+
"synthetic"
|
|
3672
|
+
]
|
|
3673
|
+
},
|
|
3674
|
+
"shape": {
|
|
3675
|
+
"type": "string"
|
|
3676
|
+
},
|
|
3677
|
+
"caratWeight": {
|
|
3678
|
+
"type": "number",
|
|
3679
|
+
"minimum": 0
|
|
3680
|
+
},
|
|
3681
|
+
"colorGrade": {
|
|
3682
|
+
"type": "string"
|
|
3683
|
+
},
|
|
3684
|
+
"clarityGrade": {
|
|
3685
|
+
"type": "string"
|
|
3686
|
+
},
|
|
3687
|
+
"cutGrade": {
|
|
3688
|
+
"type": "string"
|
|
3689
|
+
},
|
|
3690
|
+
"certifyingBody": {
|
|
3691
|
+
"type": "string"
|
|
3692
|
+
}
|
|
3693
|
+
},
|
|
3694
|
+
"additionalProperties": false
|
|
3695
|
+
},
|
|
3696
|
+
"configurator": {
|
|
3697
|
+
"type": "object",
|
|
3698
|
+
"required": [
|
|
3699
|
+
"@type",
|
|
3700
|
+
"dimensions"
|
|
3701
|
+
],
|
|
3702
|
+
"properties": {
|
|
3703
|
+
"@type": {
|
|
3704
|
+
"const": "pagefront:Configurator"
|
|
3705
|
+
},
|
|
3706
|
+
"@id": {
|
|
3707
|
+
"type": "string",
|
|
3708
|
+
"minLength": 1
|
|
3709
|
+
},
|
|
3710
|
+
"dimensions": {
|
|
3711
|
+
"type": "array",
|
|
3712
|
+
"items": {
|
|
3713
|
+
"$ref": "#/$defs/configuratorDimension"
|
|
3714
|
+
},
|
|
3715
|
+
"minItems": 1
|
|
3716
|
+
},
|
|
3717
|
+
"exclusions": {
|
|
3718
|
+
"type": "array",
|
|
3719
|
+
"items": {
|
|
3720
|
+
"$ref": "#/$defs/configurationSelection",
|
|
3721
|
+
"type": "object",
|
|
3722
|
+
"minProperties": 1
|
|
3723
|
+
}
|
|
3724
|
+
}
|
|
3725
|
+
},
|
|
3726
|
+
"additionalProperties": false
|
|
3727
|
+
},
|
|
3728
|
+
"configuratorDimension": {
|
|
3729
|
+
"type": "object",
|
|
3730
|
+
"required": [
|
|
3731
|
+
"name"
|
|
3732
|
+
],
|
|
3733
|
+
"properties": {
|
|
3734
|
+
"name": {
|
|
3735
|
+
"type": "string"
|
|
3736
|
+
},
|
|
3737
|
+
"options": {
|
|
3738
|
+
"type": "array",
|
|
3739
|
+
"items": {
|
|
3740
|
+
"type": "object",
|
|
3741
|
+
"required": [
|
|
3742
|
+
"value"
|
|
3743
|
+
],
|
|
3744
|
+
"properties": {
|
|
3745
|
+
"value": {
|
|
3746
|
+
"anyOf": [
|
|
3747
|
+
{
|
|
3748
|
+
"type": "string"
|
|
3749
|
+
},
|
|
3750
|
+
{
|
|
3751
|
+
"type": "number"
|
|
3752
|
+
},
|
|
3753
|
+
{
|
|
3754
|
+
"type": "boolean"
|
|
3755
|
+
}
|
|
3756
|
+
]
|
|
3757
|
+
},
|
|
3758
|
+
"description": {
|
|
3759
|
+
"type": "string"
|
|
3760
|
+
},
|
|
3761
|
+
"priceModifier": false,
|
|
3762
|
+
"currency": false
|
|
3763
|
+
},
|
|
3764
|
+
"additionalProperties": true
|
|
3765
|
+
}
|
|
3766
|
+
},
|
|
3767
|
+
"affectsPrice": {
|
|
3768
|
+
"type": "boolean",
|
|
3769
|
+
"default": true
|
|
3770
|
+
},
|
|
3771
|
+
"inputType": {
|
|
3772
|
+
"type": "string",
|
|
3773
|
+
"enum": [
|
|
3774
|
+
"select",
|
|
3775
|
+
"text"
|
|
3776
|
+
],
|
|
3777
|
+
"default": "select"
|
|
3778
|
+
},
|
|
3779
|
+
"maxLength": {
|
|
3780
|
+
"type": "integer",
|
|
3781
|
+
"minimum": 1
|
|
3782
|
+
},
|
|
3783
|
+
"system": {
|
|
3784
|
+
"type": "string"
|
|
3785
|
+
},
|
|
3786
|
+
"note": {
|
|
3787
|
+
"type": "string"
|
|
3788
|
+
}
|
|
3789
|
+
},
|
|
3790
|
+
"additionalProperties": false
|
|
3791
|
+
},
|
|
3792
|
+
"configurationSelection": {
|
|
3793
|
+
"type": "object",
|
|
3794
|
+
"additionalProperties": {
|
|
3795
|
+
"anyOf": [
|
|
3796
|
+
{
|
|
3797
|
+
"type": "string"
|
|
3798
|
+
},
|
|
3799
|
+
{
|
|
3800
|
+
"type": "number"
|
|
3801
|
+
},
|
|
3802
|
+
{
|
|
3803
|
+
"type": "boolean"
|
|
3804
|
+
}
|
|
3805
|
+
]
|
|
3806
|
+
}
|
|
3807
|
+
},
|
|
3808
|
+
"configuratorPricing": {
|
|
3809
|
+
"type": "object",
|
|
3810
|
+
"required": [
|
|
3811
|
+
"@type",
|
|
3812
|
+
"configurator",
|
|
3813
|
+
"baseConfiguration",
|
|
3814
|
+
"basePrice",
|
|
3815
|
+
"modifiers"
|
|
3816
|
+
],
|
|
3817
|
+
"properties": {
|
|
3818
|
+
"@type": {
|
|
3819
|
+
"const": "pagefront:ConfiguratorPricing"
|
|
3820
|
+
},
|
|
3821
|
+
"configurator": {
|
|
3822
|
+
"type": "object",
|
|
3823
|
+
"required": [
|
|
3824
|
+
"@id"
|
|
3825
|
+
],
|
|
3826
|
+
"properties": {
|
|
3827
|
+
"@type": {
|
|
3828
|
+
"const": "pagefront:Configurator"
|
|
3829
|
+
},
|
|
3830
|
+
"@id": {
|
|
3831
|
+
"type": "string",
|
|
3832
|
+
"minLength": 1
|
|
3833
|
+
}
|
|
3834
|
+
},
|
|
3835
|
+
"additionalProperties": false
|
|
3836
|
+
},
|
|
3837
|
+
"baseConfiguration": {
|
|
3838
|
+
"$ref": "#/$defs/configurationSelection"
|
|
3839
|
+
},
|
|
3840
|
+
"basePrice": {
|
|
3841
|
+
"$ref": "#/$defs/nonNegativeAmount"
|
|
3842
|
+
},
|
|
3843
|
+
"modifiers": {
|
|
3844
|
+
"type": "object",
|
|
3845
|
+
"additionalProperties": {
|
|
3846
|
+
"type": "object",
|
|
3847
|
+
"additionalProperties": {
|
|
3848
|
+
"$ref": "#/$defs/amount"
|
|
3849
|
+
}
|
|
3850
|
+
}
|
|
3851
|
+
},
|
|
3852
|
+
"adjustments": {
|
|
3853
|
+
"type": "array",
|
|
3854
|
+
"items": {
|
|
3855
|
+
"type": "object",
|
|
3856
|
+
"required": [
|
|
3857
|
+
"when",
|
|
3858
|
+
"priceModifier"
|
|
3859
|
+
],
|
|
3860
|
+
"properties": {
|
|
3861
|
+
"when": {
|
|
3862
|
+
"$ref": "#/$defs/configurationSelection",
|
|
3863
|
+
"type": "object",
|
|
3864
|
+
"minProperties": 1
|
|
3865
|
+
},
|
|
3866
|
+
"priceModifier": {
|
|
3867
|
+
"$ref": "#/$defs/amount"
|
|
3868
|
+
}
|
|
3869
|
+
},
|
|
3870
|
+
"additionalProperties": false
|
|
3871
|
+
}
|
|
3872
|
+
},
|
|
3873
|
+
"pricing": {
|
|
3874
|
+
"type": "string",
|
|
3875
|
+
"enum": [
|
|
3876
|
+
"complete",
|
|
3877
|
+
"partial"
|
|
3878
|
+
],
|
|
3879
|
+
"default": "complete"
|
|
3880
|
+
}
|
|
3881
|
+
},
|
|
3882
|
+
"additionalProperties": false
|
|
3883
|
+
},
|
|
3884
|
+
"madeToOrderTerms": {
|
|
3885
|
+
"type": "object",
|
|
3886
|
+
"required": [
|
|
3887
|
+
"@type"
|
|
3888
|
+
],
|
|
3889
|
+
"properties": {
|
|
3890
|
+
"@type": {
|
|
3891
|
+
"const": "pagefront:MadeToOrderTerms"
|
|
3892
|
+
},
|
|
3893
|
+
"productionLeadTime": {
|
|
3894
|
+
"$ref": "#/$defs/duration"
|
|
3895
|
+
},
|
|
3896
|
+
"cancellationPolicy": {
|
|
3897
|
+
"type": "string"
|
|
3898
|
+
},
|
|
3899
|
+
"returnsExceptions": {
|
|
3900
|
+
"type": "array",
|
|
3901
|
+
"items": {
|
|
3902
|
+
"type": "string"
|
|
3903
|
+
}
|
|
3904
|
+
},
|
|
3905
|
+
"aftermarketServices": {
|
|
3906
|
+
"type": "array",
|
|
3907
|
+
"items": {
|
|
3908
|
+
"$ref": "#/$defs/aftermarketService"
|
|
3909
|
+
}
|
|
3910
|
+
}
|
|
3911
|
+
},
|
|
3912
|
+
"additionalProperties": false
|
|
3913
|
+
},
|
|
3914
|
+
"duration": {
|
|
3915
|
+
"type": "object",
|
|
3916
|
+
"required": [
|
|
3917
|
+
"@type"
|
|
3918
|
+
],
|
|
3919
|
+
"properties": {
|
|
3920
|
+
"@type": {
|
|
3921
|
+
"const": "pagefront:Duration"
|
|
3922
|
+
},
|
|
3923
|
+
"minDays": {
|
|
3924
|
+
"type": "integer",
|
|
3925
|
+
"minimum": 0
|
|
3926
|
+
},
|
|
3927
|
+
"maxDays": {
|
|
3928
|
+
"type": "integer",
|
|
3929
|
+
"minimum": 0
|
|
3930
|
+
},
|
|
3931
|
+
"description": {
|
|
3932
|
+
"type": "string"
|
|
3933
|
+
}
|
|
3934
|
+
},
|
|
3935
|
+
"additionalProperties": false
|
|
3936
|
+
},
|
|
3937
|
+
"deliveryEstimate": {
|
|
3938
|
+
"type": "object",
|
|
3939
|
+
"required": [
|
|
3940
|
+
"@type"
|
|
3941
|
+
],
|
|
3942
|
+
"properties": {
|
|
3943
|
+
"@type": {
|
|
3944
|
+
"const": "pagefront:DeliveryEstimate"
|
|
3945
|
+
},
|
|
3946
|
+
"earliest": {
|
|
3947
|
+
"type": "string",
|
|
3948
|
+
"format": "date"
|
|
3949
|
+
},
|
|
3950
|
+
"latest": {
|
|
3951
|
+
"type": "string",
|
|
3952
|
+
"format": "date"
|
|
3953
|
+
},
|
|
3954
|
+
"description": {
|
|
3955
|
+
"type": "string"
|
|
3956
|
+
}
|
|
3957
|
+
},
|
|
3958
|
+
"additionalProperties": false
|
|
3959
|
+
},
|
|
3960
|
+
"aftermarketService": {
|
|
3961
|
+
"type": "object",
|
|
3962
|
+
"required": [
|
|
3963
|
+
"@type",
|
|
3964
|
+
"service"
|
|
3965
|
+
],
|
|
3966
|
+
"properties": {
|
|
3967
|
+
"@type": {
|
|
3968
|
+
"const": "pagefront:AftermarketService"
|
|
3969
|
+
},
|
|
3970
|
+
"service": {
|
|
3971
|
+
"type": "string"
|
|
3972
|
+
},
|
|
3973
|
+
"limit": {
|
|
3974
|
+
"type": "string"
|
|
3975
|
+
},
|
|
3976
|
+
"description": {
|
|
3977
|
+
"type": "string"
|
|
3978
|
+
}
|
|
3979
|
+
},
|
|
3980
|
+
"additionalProperties": false
|
|
3981
|
+
},
|
|
3982
|
+
"promotion": {
|
|
3983
|
+
"type": "object",
|
|
3984
|
+
"required": [
|
|
3985
|
+
"@type",
|
|
3986
|
+
"scope"
|
|
3987
|
+
],
|
|
3988
|
+
"properties": {
|
|
3989
|
+
"@type": {
|
|
3990
|
+
"const": "pagefront:Promotion"
|
|
3991
|
+
},
|
|
3992
|
+
"code": {
|
|
3993
|
+
"type": "string"
|
|
3994
|
+
},
|
|
3995
|
+
"discountPercentage": {
|
|
3996
|
+
"type": "number",
|
|
3997
|
+
"minimum": 0,
|
|
3998
|
+
"maximum": 100
|
|
3999
|
+
},
|
|
4000
|
+
"discountAmount": {
|
|
4001
|
+
"$ref": "#/$defs/nonNegativeAmount"
|
|
4002
|
+
},
|
|
4003
|
+
"discountCurrency": {
|
|
4004
|
+
"type": "string",
|
|
4005
|
+
"pattern": "^[A-Z]{3}$"
|
|
4006
|
+
},
|
|
4007
|
+
"scope": {
|
|
4008
|
+
"type": "string",
|
|
4009
|
+
"enum": [
|
|
4010
|
+
"product",
|
|
4011
|
+
"category",
|
|
4012
|
+
"site_wide"
|
|
4013
|
+
]
|
|
4014
|
+
},
|
|
4015
|
+
"occasion": {
|
|
4016
|
+
"type": "string"
|
|
4017
|
+
},
|
|
4018
|
+
"validUntil": {
|
|
4019
|
+
"type": "string",
|
|
4020
|
+
"format": "date-time"
|
|
4021
|
+
}
|
|
4022
|
+
},
|
|
4023
|
+
"additionalProperties": false
|
|
4024
|
+
}
|
|
4025
|
+
}
|
|
4026
|
+
},
|
|
4027
|
+
"https://themachineweb.org/pagefront/spec/commerce/product/v0.11.0.json": {
|
|
4028
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
4029
|
+
"$id": "https://themachineweb.org/pagefront/spec/commerce/product/v0.11.0.json",
|
|
4030
|
+
"title": "Pagefront Product Sheet 0.11.0",
|
|
4031
|
+
"description": "Formal schema for the Pagefront Product Sheet, sheet spec version 0.11.0, a member of commerce release 0.5.0. Since 0.11.0 sheet_url is optional: it is an address the sheet is served from as known at generation time, and the page's alternate link locates the sheet. Since 0.10.0 the envelope requires $schema. The envelope carries release in place of format_version: release names the commerce release the sheet is written against, and $schema, which is required, names this sheet-spec version. A sheet carrying format_version belongs to the legacy draft line and validates against the legacy schema at .../product/v0.9.json, which is otherwise identical. History, in legacy format versions: revision of 2026-10-01 (breaking, within v0.9): configurator pricing moves from pagefront:configurator to the offer. The configurator loses basePrice, basePriceCurrency and priceFormula, its options lose priceModifier and currency, and it gains an optional @id and an exclusions[] array; configurator dimensions gain affectsPrice, inputType (select or text, for free-text dimensions) and maxLength; Offer and AggregateOffer accept pagefront:configuratorPricing, which names the configurator it prices and carries baseConfiguration, basePrice, modifiers, optional adjustments[] and a pricing completeness flag; every amount field (Offer price, AggregateOffer lowPrice and highPrice, variant price hints, promotion discountAmount, and the pricing block's basePrice, modifiers and adjustment amounts) references a shared definition, a JSON number or a plain decimal string: nonNegativeAmount for prices, bounds, base prices, price hints and discount amounts, and the signed amount for modifiers and adjustment amounts. v0.9 sheets that carried prices inside the configurator no longer validate. v0.9 was otherwise an additive release on top of v0.8: the legalEntity entry's organization now also validates in reference-stub form (@type + @id, no name) so entries can reference a Commerce Organization Sheet; the inline form and all other constraints are unchanged, and v0.8 sheets remain valid once their format_version is updated. v0.8 is an additive release on top of v0.7: it adds a pagefront:featureGroup[] array for grouped, ordered technical specifications (groups of Schema.org PropertyValue entries, with an optional pagefront:presentationValue display variant per entry), a pagefront:productHighlights[] array of ordered publisher-authored selling-point strings, and a pagefront:legalEntity[] array for role-typed legal entities behind a product (closed role enum: brand_owner, licensee, authorized_representative, importer, manufacturer — EU GPSR responsible persons and similar). gtin and gtin13 now accept a string or an array of strings (regional packaging, re-releases); category now accepts the display string, a Schema.org CategoryCode object, or a mixed array of both. The pagefront:Document role enum gains repairability_index, recall_notice, and declaration_of_conformity; the pagefront:RelatedProduct relationship enum gains service. v0.8 also adds two GPSR-driven safety fields: a pagefront:safetyWarning[] array for typed, language-scoped safety warnings (text required; optional pictogram URL and open-vocabulary hazardCategory) and a pagefront:safetyNotice[] array for structured recall/safety notices (closed noticeType enum: recall, warning; closed remedy enum: repair, replacement, refund). v0.7 sheets remain valid under v0.8 once their format_version is updated. Validates the envelope and pagefront-namespaced extensions strictly; Schema.org-typed blocks permit additional unspecified properties.",
|
|
4032
|
+
"type": "object",
|
|
4033
|
+
"required": [
|
|
4034
|
+
"$schema",
|
|
4035
|
+
"release",
|
|
4036
|
+
"schema_org_version",
|
|
4037
|
+
"canonical_url",
|
|
1317
4038
|
"generated_at",
|
|
1318
4039
|
"data"
|
|
1319
4040
|
],
|