@port60/template-kit 0.21.0 → 1.1.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 +58 -3
- package/bin/cli.mjs +10 -0
- package/package.json +4 -2
- package/src/commands/content.mjs +4 -3
- package/src/commands/create.mjs +11 -3
- package/src/commands/dev.mjs +9 -3
- package/src/commands/model.mjs +3 -3
- package/src/commands/packageCmd.mjs +1 -1
- package/src/commands/publish.mjs +1 -1
- package/src/commands/refresh.mjs +8 -3
- package/src/commands/release.mjs +22 -0
- package/src/commands/setupPreviews.mjs +19 -0
- package/src/commands/validate.mjs +1 -1
- package/src/lib/agentsMd.mjs +116 -161
- package/src/lib/designer-bridge.js +26 -0
- package/src/lib/designerPalette.mjs +62 -0
- package/src/lib/galleryPosters.mjs +105 -0
- package/src/lib/previewOptions.mjs +1 -1
- package/src/lib/releaseBundle.mjs +141 -0
- package/src/vendor/contract/v2/behaviours.json +346 -0
- package/src/vendor/contract/v2/content-bounds.json +117 -0
- package/src/vendor/contract/v2/content-model.json +766 -0
- package/src/vendor/contract/v2/context.json +1569 -0
- package/src/vendor/contract/v2/dialect.json +107 -0
- package/src/vendor/contract/v2/fonts.json +910 -0
- package/src/vendor/contract/v2/imagery.json +32 -0
- package/src/vendor/contract/v2/islands.json +263 -0
- package/src/vendor/contract/v2/layout.json +28 -0
- package/src/vendor/contract/v2/manifest.schema.json +388 -0
- package/src/vendor/contract/v2/sections.json +947 -0
- package/src/vendor/contract/v2/site.schema.json +1353 -0
- package/src/vendor/contract/v2/tokens.json +101 -0
- package/src/vendor/contract/v2.lock.json +6933 -0
- package/src/vendor/engine/content-footprint.mjs +76 -1
- package/src/vendor/engine/dialect.mjs +4 -0
- package/src/vendor/engine/locale.mjs +74 -0
- package/src/vendor/engine/majors.mjs +42 -0
- package/src/vendor/validator/gift-aid-logo.svg +6 -0
- package/src/vendor/validator/model-reference-v2.mjs +95 -0
- package/src/vendor/validator/platform-base.css +320 -11
- package/src/vendor/validator/preview-v1.mjs +691 -0
- package/src/vendor/validator/preview-v2.mjs +654 -0
- package/src/vendor/validator/preview.mjs +8 -688
- package/src/vendor/validator/site-context-v2.mjs +113 -0
- package/src/vendor/validator/validate-v1.mjs +666 -0
- package/src/vendor/validator/validate-v2.mjs +642 -0
- package/src/vendor/validator/validate.mjs +21 -663
- package/starter/assets/theme.css +3 -0
- package/starter/layout.liquid +15 -18
- package/starter/manifest.json +5 -4
- package/starter/preview/config.json +4 -0
- package/starter/preview/media/README.md +9 -0
- package/starter/sections/campaigns.liquid +5 -4
- package/starter/sections/homeHero.liquid +25 -21
- package/starter/sections/values.liquid +1 -1
|
@@ -0,0 +1,766 @@
|
|
|
1
|
+
{
|
|
2
|
+
"description": "Version 2 public content model. Collection envelopes carry resolved public labels, real destinations, bounded eligible items and optional listing pagination. Metadata does not require a record fetch. Absent authored values and explicitly cleared values remain distinct. Additive-only within major 2.",
|
|
3
|
+
"version": "2.0",
|
|
4
|
+
"root": "site",
|
|
5
|
+
"siblings": {
|
|
6
|
+
"description": "Resolved website metadata, actions and current-page context, separate from public source collections.",
|
|
7
|
+
"keys": [
|
|
8
|
+
"brand",
|
|
9
|
+
"nav",
|
|
10
|
+
"socials",
|
|
11
|
+
"locale",
|
|
12
|
+
"actions",
|
|
13
|
+
"page"
|
|
14
|
+
]
|
|
15
|
+
},
|
|
16
|
+
"collections": {
|
|
17
|
+
"services": {
|
|
18
|
+
"since": "2.0",
|
|
19
|
+
"cap": 24,
|
|
20
|
+
"moreHref": "/services",
|
|
21
|
+
"description": "The organisation's published content pages (the services CMS), newest curation order first.",
|
|
22
|
+
"item": {
|
|
23
|
+
"id": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"since": "2.0"
|
|
26
|
+
},
|
|
27
|
+
"title": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"since": "2.0",
|
|
30
|
+
"max": 200
|
|
31
|
+
},
|
|
32
|
+
"slug": {
|
|
33
|
+
"type": "string",
|
|
34
|
+
"since": "2.0"
|
|
35
|
+
},
|
|
36
|
+
"summary": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"since": "2.0",
|
|
39
|
+
"nullable": true,
|
|
40
|
+
"max": 500
|
|
41
|
+
},
|
|
42
|
+
"imageUrl": {
|
|
43
|
+
"type": "string",
|
|
44
|
+
"since": "2.0",
|
|
45
|
+
"nullable": true
|
|
46
|
+
},
|
|
47
|
+
"href": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"since": "2.0"
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"shape": "envelope",
|
|
53
|
+
"members": {
|
|
54
|
+
"label": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"since": "2.0",
|
|
57
|
+
"description": "Resolved required public collection name.",
|
|
58
|
+
"max": 60
|
|
59
|
+
},
|
|
60
|
+
"href": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"since": "2.0",
|
|
63
|
+
"description": "Platform-resolved destination; Documents may have none."
|
|
64
|
+
},
|
|
65
|
+
"items": {
|
|
66
|
+
"type": "array",
|
|
67
|
+
"since": "2.0",
|
|
68
|
+
"boundedBy": "cap",
|
|
69
|
+
"description": "Eligible bounded records for this render."
|
|
70
|
+
},
|
|
71
|
+
"pagination": {
|
|
72
|
+
"type": "object",
|
|
73
|
+
"nullable": true,
|
|
74
|
+
"since": "2.0",
|
|
75
|
+
"fields": {
|
|
76
|
+
"page": {
|
|
77
|
+
"type": "number",
|
|
78
|
+
"minimum": 0
|
|
79
|
+
},
|
|
80
|
+
"size": {
|
|
81
|
+
"type": "number",
|
|
82
|
+
"minimum": 1
|
|
83
|
+
},
|
|
84
|
+
"totalElements": {
|
|
85
|
+
"type": "number",
|
|
86
|
+
"minimum": 0
|
|
87
|
+
},
|
|
88
|
+
"totalPages": {
|
|
89
|
+
"type": "number",
|
|
90
|
+
"minimum": 0
|
|
91
|
+
},
|
|
92
|
+
"nextHref": {
|
|
93
|
+
"type": "string",
|
|
94
|
+
"nullable": true
|
|
95
|
+
},
|
|
96
|
+
"previousHref": {
|
|
97
|
+
"type": "string",
|
|
98
|
+
"nullable": true
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"events": {
|
|
105
|
+
"since": "2.0",
|
|
106
|
+
"cap": 12,
|
|
107
|
+
"moreHref": "/events",
|
|
108
|
+
"description": "Published events, soonest first. `registrationMode` is an OPEN enum: INFO, RSVP and TICKETED exist today and new modes will arrive; branch on the ones you style and fall back for the rest.",
|
|
109
|
+
"item": {
|
|
110
|
+
"id": {
|
|
111
|
+
"type": "string",
|
|
112
|
+
"since": "2.0"
|
|
113
|
+
},
|
|
114
|
+
"name": {
|
|
115
|
+
"type": "string",
|
|
116
|
+
"since": "2.0",
|
|
117
|
+
"max": 200
|
|
118
|
+
},
|
|
119
|
+
"description": {
|
|
120
|
+
"type": "string",
|
|
121
|
+
"since": "2.0",
|
|
122
|
+
"nullable": true,
|
|
123
|
+
"max": 200
|
|
124
|
+
},
|
|
125
|
+
"registrationMode": {
|
|
126
|
+
"type": "string",
|
|
127
|
+
"since": "2.0",
|
|
128
|
+
"enumOpen": [
|
|
129
|
+
"INFO",
|
|
130
|
+
"RSVP",
|
|
131
|
+
"TICKETED"
|
|
132
|
+
]
|
|
133
|
+
},
|
|
134
|
+
"startsAt": {
|
|
135
|
+
"type": "string",
|
|
136
|
+
"since": "2.0"
|
|
137
|
+
},
|
|
138
|
+
"endsAt": {
|
|
139
|
+
"type": "string",
|
|
140
|
+
"since": "2.0",
|
|
141
|
+
"nullable": true
|
|
142
|
+
},
|
|
143
|
+
"venueName": {
|
|
144
|
+
"type": "string",
|
|
145
|
+
"since": "2.0",
|
|
146
|
+
"nullable": true,
|
|
147
|
+
"max": 200
|
|
148
|
+
},
|
|
149
|
+
"online": {
|
|
150
|
+
"type": "boolean",
|
|
151
|
+
"since": "2.0"
|
|
152
|
+
},
|
|
153
|
+
"imageUrl": {
|
|
154
|
+
"type": "string",
|
|
155
|
+
"since": "2.0",
|
|
156
|
+
"nullable": true
|
|
157
|
+
},
|
|
158
|
+
"onSale": {
|
|
159
|
+
"type": "boolean",
|
|
160
|
+
"since": "2.0"
|
|
161
|
+
},
|
|
162
|
+
"soldOut": {
|
|
163
|
+
"type": "boolean",
|
|
164
|
+
"since": "2.0"
|
|
165
|
+
},
|
|
166
|
+
"priceFrom": {
|
|
167
|
+
"type": "number",
|
|
168
|
+
"since": "2.0",
|
|
169
|
+
"nullable": true,
|
|
170
|
+
"description": "Minimum finite nonnegative full variant price. Monthly and quarterly instalment amounts are not a course full fee."
|
|
171
|
+
},
|
|
172
|
+
"currency": {
|
|
173
|
+
"type": "string",
|
|
174
|
+
"since": "2.0",
|
|
175
|
+
"nullable": true
|
|
176
|
+
},
|
|
177
|
+
"detailHref": {
|
|
178
|
+
"type": "string",
|
|
179
|
+
"since": "2.0"
|
|
180
|
+
}
|
|
181
|
+
},
|
|
182
|
+
"shape": "envelope",
|
|
183
|
+
"members": {
|
|
184
|
+
"label": {
|
|
185
|
+
"type": "string",
|
|
186
|
+
"since": "2.0",
|
|
187
|
+
"description": "Resolved required public collection name.",
|
|
188
|
+
"max": 60
|
|
189
|
+
},
|
|
190
|
+
"href": {
|
|
191
|
+
"type": "string",
|
|
192
|
+
"since": "2.0",
|
|
193
|
+
"description": "Platform-resolved destination; Documents may have none."
|
|
194
|
+
},
|
|
195
|
+
"items": {
|
|
196
|
+
"type": "array",
|
|
197
|
+
"since": "2.0",
|
|
198
|
+
"boundedBy": "cap",
|
|
199
|
+
"description": "Eligible bounded records for this render."
|
|
200
|
+
},
|
|
201
|
+
"pagination": {
|
|
202
|
+
"type": "object",
|
|
203
|
+
"nullable": true,
|
|
204
|
+
"since": "2.0",
|
|
205
|
+
"fields": {
|
|
206
|
+
"page": {
|
|
207
|
+
"type": "number",
|
|
208
|
+
"minimum": 0
|
|
209
|
+
},
|
|
210
|
+
"size": {
|
|
211
|
+
"type": "number",
|
|
212
|
+
"minimum": 1
|
|
213
|
+
},
|
|
214
|
+
"totalElements": {
|
|
215
|
+
"type": "number",
|
|
216
|
+
"minimum": 0
|
|
217
|
+
},
|
|
218
|
+
"totalPages": {
|
|
219
|
+
"type": "number",
|
|
220
|
+
"minimum": 0
|
|
221
|
+
},
|
|
222
|
+
"nextHref": {
|
|
223
|
+
"type": "string",
|
|
224
|
+
"nullable": true
|
|
225
|
+
},
|
|
226
|
+
"previousHref": {
|
|
227
|
+
"type": "string",
|
|
228
|
+
"nullable": true
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
"articles": {
|
|
235
|
+
"since": "2.0",
|
|
236
|
+
"cap": 12,
|
|
237
|
+
"moreHref": "/articles/all",
|
|
238
|
+
"description": "Published articles, newest first. Detail bodies stay editor-owned sanitised richtext on the article page BY DESIGN; the card model carries everything a listing needs.",
|
|
239
|
+
"item": {
|
|
240
|
+
"id": {
|
|
241
|
+
"type": "string",
|
|
242
|
+
"since": "2.0"
|
|
243
|
+
},
|
|
244
|
+
"title": {
|
|
245
|
+
"type": "string",
|
|
246
|
+
"since": "2.0",
|
|
247
|
+
"max": 200
|
|
248
|
+
},
|
|
249
|
+
"slug": {
|
|
250
|
+
"type": "string",
|
|
251
|
+
"since": "2.0"
|
|
252
|
+
},
|
|
253
|
+
"excerpt": {
|
|
254
|
+
"type": "string",
|
|
255
|
+
"since": "2.0",
|
|
256
|
+
"nullable": true,
|
|
257
|
+
"max": 500
|
|
258
|
+
},
|
|
259
|
+
"imageUrl": {
|
|
260
|
+
"type": "string",
|
|
261
|
+
"since": "2.0",
|
|
262
|
+
"nullable": true
|
|
263
|
+
},
|
|
264
|
+
"authorName": {
|
|
265
|
+
"type": "string",
|
|
266
|
+
"since": "2.0",
|
|
267
|
+
"nullable": true,
|
|
268
|
+
"max": 120
|
|
269
|
+
},
|
|
270
|
+
"authorRole": {
|
|
271
|
+
"type": "string",
|
|
272
|
+
"since": "2.0",
|
|
273
|
+
"nullable": true,
|
|
274
|
+
"max": 120
|
|
275
|
+
},
|
|
276
|
+
"categories": {
|
|
277
|
+
"type": "string[]",
|
|
278
|
+
"since": "2.0"
|
|
279
|
+
},
|
|
280
|
+
"publishedAt": {
|
|
281
|
+
"type": "string",
|
|
282
|
+
"since": "2.0"
|
|
283
|
+
},
|
|
284
|
+
"readingMinutes": {
|
|
285
|
+
"type": "number",
|
|
286
|
+
"since": "2.0",
|
|
287
|
+
"nullable": true
|
|
288
|
+
},
|
|
289
|
+
"href": {
|
|
290
|
+
"type": "string",
|
|
291
|
+
"since": "2.0"
|
|
292
|
+
}
|
|
293
|
+
},
|
|
294
|
+
"shape": "envelope",
|
|
295
|
+
"members": {
|
|
296
|
+
"label": {
|
|
297
|
+
"type": "string",
|
|
298
|
+
"since": "2.0",
|
|
299
|
+
"description": "Resolved required public collection name.",
|
|
300
|
+
"max": 60
|
|
301
|
+
},
|
|
302
|
+
"href": {
|
|
303
|
+
"type": "string",
|
|
304
|
+
"since": "2.0",
|
|
305
|
+
"description": "Platform-resolved destination; Documents may have none."
|
|
306
|
+
},
|
|
307
|
+
"items": {
|
|
308
|
+
"type": "array",
|
|
309
|
+
"since": "2.0",
|
|
310
|
+
"boundedBy": "cap",
|
|
311
|
+
"description": "Eligible bounded records for this render."
|
|
312
|
+
},
|
|
313
|
+
"pagination": {
|
|
314
|
+
"type": "object",
|
|
315
|
+
"nullable": true,
|
|
316
|
+
"since": "2.0",
|
|
317
|
+
"fields": {
|
|
318
|
+
"page": {
|
|
319
|
+
"type": "number",
|
|
320
|
+
"minimum": 0
|
|
321
|
+
},
|
|
322
|
+
"size": {
|
|
323
|
+
"type": "number",
|
|
324
|
+
"minimum": 1
|
|
325
|
+
},
|
|
326
|
+
"totalElements": {
|
|
327
|
+
"type": "number",
|
|
328
|
+
"minimum": 0
|
|
329
|
+
},
|
|
330
|
+
"totalPages": {
|
|
331
|
+
"type": "number",
|
|
332
|
+
"minimum": 0
|
|
333
|
+
},
|
|
334
|
+
"nextHref": {
|
|
335
|
+
"type": "string",
|
|
336
|
+
"nullable": true
|
|
337
|
+
},
|
|
338
|
+
"previousHref": {
|
|
339
|
+
"type": "string",
|
|
340
|
+
"nullable": true
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
},
|
|
346
|
+
"campaigns": {
|
|
347
|
+
"since": "2.0",
|
|
348
|
+
"cap": 12,
|
|
349
|
+
"moreHref": "/campaigns",
|
|
350
|
+
"description": "Live campaigns, curation order.",
|
|
351
|
+
"item": {
|
|
352
|
+
"id": {
|
|
353
|
+
"type": "string",
|
|
354
|
+
"since": "2.0"
|
|
355
|
+
},
|
|
356
|
+
"title": {
|
|
357
|
+
"type": "string",
|
|
358
|
+
"since": "2.0",
|
|
359
|
+
"max": 200
|
|
360
|
+
},
|
|
361
|
+
"href": {
|
|
362
|
+
"type": "string",
|
|
363
|
+
"since": "2.0"
|
|
364
|
+
},
|
|
365
|
+
"summary": {
|
|
366
|
+
"type": "string",
|
|
367
|
+
"since": "2.0",
|
|
368
|
+
"nullable": true,
|
|
369
|
+
"max": 500
|
|
370
|
+
},
|
|
371
|
+
"imageUrl": {
|
|
372
|
+
"type": "string",
|
|
373
|
+
"since": "2.0",
|
|
374
|
+
"nullable": true
|
|
375
|
+
},
|
|
376
|
+
"slug": {
|
|
377
|
+
"type": "string",
|
|
378
|
+
"since": "2.0",
|
|
379
|
+
"description": "Public stable campaign slug; prefer the supplied href for links."
|
|
380
|
+
}
|
|
381
|
+
},
|
|
382
|
+
"shape": "envelope",
|
|
383
|
+
"members": {
|
|
384
|
+
"label": {
|
|
385
|
+
"type": "string",
|
|
386
|
+
"since": "2.0",
|
|
387
|
+
"description": "Resolved required public collection name.",
|
|
388
|
+
"max": 60
|
|
389
|
+
},
|
|
390
|
+
"href": {
|
|
391
|
+
"type": "string",
|
|
392
|
+
"since": "2.0",
|
|
393
|
+
"description": "Platform-resolved destination; Documents may have none."
|
|
394
|
+
},
|
|
395
|
+
"items": {
|
|
396
|
+
"type": "array",
|
|
397
|
+
"since": "2.0",
|
|
398
|
+
"boundedBy": "cap",
|
|
399
|
+
"description": "Eligible bounded records for this render."
|
|
400
|
+
},
|
|
401
|
+
"pagination": {
|
|
402
|
+
"type": "object",
|
|
403
|
+
"nullable": true,
|
|
404
|
+
"since": "2.0",
|
|
405
|
+
"fields": {
|
|
406
|
+
"page": {
|
|
407
|
+
"type": "number",
|
|
408
|
+
"minimum": 0
|
|
409
|
+
},
|
|
410
|
+
"size": {
|
|
411
|
+
"type": "number",
|
|
412
|
+
"minimum": 1
|
|
413
|
+
},
|
|
414
|
+
"totalElements": {
|
|
415
|
+
"type": "number",
|
|
416
|
+
"minimum": 0
|
|
417
|
+
},
|
|
418
|
+
"totalPages": {
|
|
419
|
+
"type": "number",
|
|
420
|
+
"minimum": 0
|
|
421
|
+
},
|
|
422
|
+
"nextHref": {
|
|
423
|
+
"type": "string",
|
|
424
|
+
"nullable": true
|
|
425
|
+
},
|
|
426
|
+
"previousHref": {
|
|
427
|
+
"type": "string",
|
|
428
|
+
"nullable": true
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
},
|
|
434
|
+
"causes": {
|
|
435
|
+
"since": "2.0",
|
|
436
|
+
"cap": 12,
|
|
437
|
+
"moreHref": "/donate",
|
|
438
|
+
"description": "Causes currently accepting donations, quick-give first. `paymentOptions` mirrors the public cause contract.",
|
|
439
|
+
"item": {
|
|
440
|
+
"id": {
|
|
441
|
+
"type": "string",
|
|
442
|
+
"since": "2.0"
|
|
443
|
+
},
|
|
444
|
+
"title": {
|
|
445
|
+
"type": "string",
|
|
446
|
+
"since": "2.0",
|
|
447
|
+
"max": 200
|
|
448
|
+
},
|
|
449
|
+
"slug": {
|
|
450
|
+
"type": "string",
|
|
451
|
+
"since": "2.0"
|
|
452
|
+
},
|
|
453
|
+
"description": {
|
|
454
|
+
"type": "string",
|
|
455
|
+
"since": "2.0",
|
|
456
|
+
"nullable": true,
|
|
457
|
+
"max": 500
|
|
458
|
+
},
|
|
459
|
+
"imageUrl": {
|
|
460
|
+
"type": "string",
|
|
461
|
+
"since": "2.0",
|
|
462
|
+
"nullable": true
|
|
463
|
+
},
|
|
464
|
+
"targetAmount": {
|
|
465
|
+
"type": "number",
|
|
466
|
+
"since": "2.0",
|
|
467
|
+
"nullable": true
|
|
468
|
+
},
|
|
469
|
+
"raisedAmount": {
|
|
470
|
+
"type": "number",
|
|
471
|
+
"since": "2.0",
|
|
472
|
+
"nullable": true
|
|
473
|
+
},
|
|
474
|
+
"progressPercentage": {
|
|
475
|
+
"type": "number",
|
|
476
|
+
"since": "2.0",
|
|
477
|
+
"nullable": true
|
|
478
|
+
},
|
|
479
|
+
"href": {
|
|
480
|
+
"type": "string",
|
|
481
|
+
"since": "2.0"
|
|
482
|
+
},
|
|
483
|
+
"paymentOptions": {
|
|
484
|
+
"type": "object",
|
|
485
|
+
"since": "2.0",
|
|
486
|
+
"nullable": true
|
|
487
|
+
}
|
|
488
|
+
},
|
|
489
|
+
"shape": "envelope",
|
|
490
|
+
"members": {
|
|
491
|
+
"label": {
|
|
492
|
+
"type": "string",
|
|
493
|
+
"since": "2.0",
|
|
494
|
+
"description": "Resolved required public collection name.",
|
|
495
|
+
"max": 60
|
|
496
|
+
},
|
|
497
|
+
"href": {
|
|
498
|
+
"type": "string",
|
|
499
|
+
"since": "2.0",
|
|
500
|
+
"description": "Platform-resolved destination; Documents may have none."
|
|
501
|
+
},
|
|
502
|
+
"items": {
|
|
503
|
+
"type": "array",
|
|
504
|
+
"since": "2.0",
|
|
505
|
+
"boundedBy": "cap",
|
|
506
|
+
"description": "Eligible bounded records for this render."
|
|
507
|
+
},
|
|
508
|
+
"pagination": {
|
|
509
|
+
"type": "object",
|
|
510
|
+
"nullable": true,
|
|
511
|
+
"since": "2.0",
|
|
512
|
+
"fields": {
|
|
513
|
+
"page": {
|
|
514
|
+
"type": "number",
|
|
515
|
+
"minimum": 0
|
|
516
|
+
},
|
|
517
|
+
"size": {
|
|
518
|
+
"type": "number",
|
|
519
|
+
"minimum": 1
|
|
520
|
+
},
|
|
521
|
+
"totalElements": {
|
|
522
|
+
"type": "number",
|
|
523
|
+
"minimum": 0
|
|
524
|
+
},
|
|
525
|
+
"totalPages": {
|
|
526
|
+
"type": "number",
|
|
527
|
+
"minimum": 0
|
|
528
|
+
},
|
|
529
|
+
"nextHref": {
|
|
530
|
+
"type": "string",
|
|
531
|
+
"nullable": true
|
|
532
|
+
},
|
|
533
|
+
"previousHref": {
|
|
534
|
+
"type": "string",
|
|
535
|
+
"nullable": true
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
},
|
|
541
|
+
"courses": {
|
|
542
|
+
"since": "2.0",
|
|
543
|
+
"cap": 12,
|
|
544
|
+
"moreHref": "/courses",
|
|
545
|
+
"description": "Enrollable courses. The long-form About body is sanitised richtext on the course page, never in cards.",
|
|
546
|
+
"item": {
|
|
547
|
+
"id": {
|
|
548
|
+
"type": "string",
|
|
549
|
+
"since": "2.0"
|
|
550
|
+
},
|
|
551
|
+
"title": {
|
|
552
|
+
"type": "string",
|
|
553
|
+
"since": "2.0",
|
|
554
|
+
"max": 200
|
|
555
|
+
},
|
|
556
|
+
"description": {
|
|
557
|
+
"type": "string",
|
|
558
|
+
"since": "2.0",
|
|
559
|
+
"nullable": true,
|
|
560
|
+
"max": 500
|
|
561
|
+
},
|
|
562
|
+
"imageUrl": {
|
|
563
|
+
"type": "string",
|
|
564
|
+
"since": "2.0",
|
|
565
|
+
"nullable": true
|
|
566
|
+
},
|
|
567
|
+
"venue": {
|
|
568
|
+
"type": "string",
|
|
569
|
+
"since": "2.0",
|
|
570
|
+
"nullable": true,
|
|
571
|
+
"max": 200
|
|
572
|
+
},
|
|
573
|
+
"audience": {
|
|
574
|
+
"type": "string",
|
|
575
|
+
"since": "2.0",
|
|
576
|
+
"enumOpen": [
|
|
577
|
+
"EVERYONE",
|
|
578
|
+
"CHILD"
|
|
579
|
+
]
|
|
580
|
+
},
|
|
581
|
+
"priceFrom": {
|
|
582
|
+
"type": "number",
|
|
583
|
+
"since": "2.0",
|
|
584
|
+
"nullable": true
|
|
585
|
+
},
|
|
586
|
+
"currency": {
|
|
587
|
+
"type": "string",
|
|
588
|
+
"since": "2.0",
|
|
589
|
+
"nullable": true
|
|
590
|
+
},
|
|
591
|
+
"soldOut": {
|
|
592
|
+
"type": "boolean",
|
|
593
|
+
"since": "2.0"
|
|
594
|
+
},
|
|
595
|
+
"href": {
|
|
596
|
+
"type": "string",
|
|
597
|
+
"since": "2.0"
|
|
598
|
+
}
|
|
599
|
+
},
|
|
600
|
+
"shape": "envelope",
|
|
601
|
+
"members": {
|
|
602
|
+
"label": {
|
|
603
|
+
"type": "string",
|
|
604
|
+
"since": "2.0",
|
|
605
|
+
"description": "Resolved required public collection name.",
|
|
606
|
+
"max": 60
|
|
607
|
+
},
|
|
608
|
+
"href": {
|
|
609
|
+
"type": "string",
|
|
610
|
+
"since": "2.0",
|
|
611
|
+
"description": "Platform-resolved destination; Documents may have none."
|
|
612
|
+
},
|
|
613
|
+
"items": {
|
|
614
|
+
"type": "array",
|
|
615
|
+
"since": "2.0",
|
|
616
|
+
"boundedBy": "cap",
|
|
617
|
+
"description": "Eligible bounded records for this render."
|
|
618
|
+
},
|
|
619
|
+
"pagination": {
|
|
620
|
+
"type": "object",
|
|
621
|
+
"nullable": true,
|
|
622
|
+
"since": "2.0",
|
|
623
|
+
"fields": {
|
|
624
|
+
"page": {
|
|
625
|
+
"type": "number",
|
|
626
|
+
"minimum": 0
|
|
627
|
+
},
|
|
628
|
+
"size": {
|
|
629
|
+
"type": "number",
|
|
630
|
+
"minimum": 1
|
|
631
|
+
},
|
|
632
|
+
"totalElements": {
|
|
633
|
+
"type": "number",
|
|
634
|
+
"minimum": 0
|
|
635
|
+
},
|
|
636
|
+
"totalPages": {
|
|
637
|
+
"type": "number",
|
|
638
|
+
"minimum": 0
|
|
639
|
+
},
|
|
640
|
+
"nextHref": {
|
|
641
|
+
"type": "string",
|
|
642
|
+
"nullable": true
|
|
643
|
+
},
|
|
644
|
+
"previousHref": {
|
|
645
|
+
"type": "string",
|
|
646
|
+
"nullable": true
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
},
|
|
652
|
+
"documents": {
|
|
653
|
+
"since": "2.0",
|
|
654
|
+
"cap": 24,
|
|
655
|
+
"moreHref": null,
|
|
656
|
+
"description": "Selected existing public documents only. No automatic media-library exposure and no independent directory route.",
|
|
657
|
+
"item": {
|
|
658
|
+
"id": {
|
|
659
|
+
"type": "string",
|
|
660
|
+
"since": "2.0"
|
|
661
|
+
},
|
|
662
|
+
"title": {
|
|
663
|
+
"type": "string",
|
|
664
|
+
"since": "2.0",
|
|
665
|
+
"max": 200
|
|
666
|
+
},
|
|
667
|
+
"folder": {
|
|
668
|
+
"type": "string",
|
|
669
|
+
"since": "2.0",
|
|
670
|
+
"nullable": true
|
|
671
|
+
},
|
|
672
|
+
"url": {
|
|
673
|
+
"type": "string",
|
|
674
|
+
"since": "2.0"
|
|
675
|
+
},
|
|
676
|
+
"contentType": {
|
|
677
|
+
"type": "string",
|
|
678
|
+
"since": "2.0",
|
|
679
|
+
"nullable": true
|
|
680
|
+
},
|
|
681
|
+
"bytes": {
|
|
682
|
+
"type": "number",
|
|
683
|
+
"since": "2.0",
|
|
684
|
+
"nullable": true
|
|
685
|
+
},
|
|
686
|
+
"publishedAt": {
|
|
687
|
+
"type": "string",
|
|
688
|
+
"since": "2.0",
|
|
689
|
+
"nullable": true
|
|
690
|
+
}
|
|
691
|
+
},
|
|
692
|
+
"shape": "envelope",
|
|
693
|
+
"members": {
|
|
694
|
+
"label": {
|
|
695
|
+
"type": "string",
|
|
696
|
+
"since": "2.0",
|
|
697
|
+
"description": "Resolved required public collection name.",
|
|
698
|
+
"max": 60
|
|
699
|
+
},
|
|
700
|
+
"href": {
|
|
701
|
+
"type": "string",
|
|
702
|
+
"since": "2.0",
|
|
703
|
+
"nullable": true,
|
|
704
|
+
"description": "Platform-resolved destination; Documents may have none."
|
|
705
|
+
},
|
|
706
|
+
"items": {
|
|
707
|
+
"type": "array",
|
|
708
|
+
"since": "2.0",
|
|
709
|
+
"boundedBy": "cap",
|
|
710
|
+
"description": "Eligible bounded records for this render."
|
|
711
|
+
},
|
|
712
|
+
"pagination": {
|
|
713
|
+
"type": "object",
|
|
714
|
+
"nullable": true,
|
|
715
|
+
"since": "2.0",
|
|
716
|
+
"fields": {
|
|
717
|
+
"page": {
|
|
718
|
+
"type": "number",
|
|
719
|
+
"minimum": 0
|
|
720
|
+
},
|
|
721
|
+
"size": {
|
|
722
|
+
"type": "number",
|
|
723
|
+
"minimum": 1
|
|
724
|
+
},
|
|
725
|
+
"totalElements": {
|
|
726
|
+
"type": "number",
|
|
727
|
+
"minimum": 0
|
|
728
|
+
},
|
|
729
|
+
"totalPages": {
|
|
730
|
+
"type": "number",
|
|
731
|
+
"minimum": 0
|
|
732
|
+
},
|
|
733
|
+
"nextHref": {
|
|
734
|
+
"type": "string",
|
|
735
|
+
"nullable": true
|
|
736
|
+
},
|
|
737
|
+
"previousHref": {
|
|
738
|
+
"type": "string",
|
|
739
|
+
"nullable": true
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
},
|
|
745
|
+
"schedules": {
|
|
746
|
+
"since": "2.0",
|
|
747
|
+
"cap": 4,
|
|
748
|
+
"moreHref": null,
|
|
749
|
+
"description": "TYPE-DERIVED recurring schedules. `type` is an OPEN enum; 'worship' is the first (times, labels, today, next, jumah). Mosque daily times and next may carry a stable `key`: fajr, zuhr, asr, maghrib or isha. Use key for icons, never replace the supplied name. Missing/unknown keys remain readable without an icon. Friday rows are `jumah`, not `jumuah`. Other institutions arrive as new types; render the types you know, ignore the rest.",
|
|
750
|
+
"item": {
|
|
751
|
+
"type": {
|
|
752
|
+
"type": "string",
|
|
753
|
+
"since": "1.0",
|
|
754
|
+
"enumOpen": [
|
|
755
|
+
"worship"
|
|
756
|
+
]
|
|
757
|
+
},
|
|
758
|
+
"content": {
|
|
759
|
+
"type": "object",
|
|
760
|
+
"since": "1.0"
|
|
761
|
+
}
|
|
762
|
+
},
|
|
763
|
+
"shape": "array"
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
}
|