@rathnasgala2/schemas 2.14.0 → 2.15.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 +24 -0
- package/THIRD_PARTY_LICENSES.json +1 -1
- package/docs/catalogs/schema-inventory.json +2 -2
- package/openapi/http-catalog.json +2 -2
- package/openapi/openapi.yaml +124 -9
- package/package.json +1 -1
- package/sbom.cdx.json +23 -23
package/README.md
CHANGED
|
@@ -91,6 +91,30 @@ calls `postMembershipInvitationsByTokenAccept`; its non-enumerating failure
|
|
|
91
91
|
states collapse onto that operation's single declared `INVALID_SOURCE_STATE`
|
|
92
92
|
problem, which covers an expired, already-used or unknown token alike.
|
|
93
93
|
|
|
94
|
+
SCHEMA-2.15.0 closes a Content-list gap SCHEMA-2.14.0 left: with `kind` the only
|
|
95
|
+
fact the inventory carried about a flat file, a row could not show title, kind,
|
|
96
|
+
status or last-changed, and a client could not check web-address uniqueness,
|
|
97
|
+
without one round trip per row. `ContentInventoryItem` gains two optional
|
|
98
|
+
members, exactly one of which the server returns on every item from this version
|
|
99
|
+
on: `summary` (`ContentInventoryItemSummary` --
|
|
100
|
+
`contentId`/`title`/`slug`/`status`/`language`/`createdAt` required,
|
|
101
|
+
`updatedAt`/`publishedAt` optional; `status` is the new closed
|
|
102
|
+
`ContentItemStatus`, `DRAFT`/`PUBLISHED`/`UNLISTED`/`ARCHIVED`) when the header
|
|
103
|
+
block the server now reads for every listed path parses, or `unreadable`
|
|
104
|
+
(`ContentInventoryItemUnreadable`, `{reason}`, the new closed
|
|
105
|
+
`ContentItemUnreadableReason`: `HEADER_MISSING`/`HEADER_UNPARSABLE`/
|
|
106
|
+
`HEADER_INVALID`/`TOO_LARGE`) when it does not. `kind` itself now comes from the
|
|
107
|
+
header when `summary` is present, from the content root as before when it is
|
|
108
|
+
not. This is stated in the operation description rather than schema- enforced,
|
|
109
|
+
because a `oneOf` requiring one of the two would make a pre-2.15.0 item -- one
|
|
110
|
+
with neither field, valid until now -- invalid; member types reuse
|
|
111
|
+
`content-frontmatter.schema.json`'s `$defs`, matching how
|
|
112
|
+
`ContentFrontmatter`/`ContentPublicationSummary` already do. `GET .../content`
|
|
113
|
+
also gains its own `limit` bound (`ContentLimit`): default 50 in place of the
|
|
114
|
+
shared default of 25, the existing 100 maximum kept unchanged since lowering a
|
|
115
|
+
maximum is never additive; the server may return fewer items than `limit` even
|
|
116
|
+
when more are available.
|
|
117
|
+
|
|
94
118
|
SCHEMA-2.14.0 (design `scrap/20260928_write-preview-publish.md` section 3) is
|
|
95
119
|
additive, closing the write/preview/publish content journey. Nine operations
|
|
96
120
|
join the contract under
|
|
@@ -209,9 +209,9 @@
|
|
|
209
209
|
"version": "2.0.0",
|
|
210
210
|
"path": "openapi/openapi.yaml",
|
|
211
211
|
"materialized": true,
|
|
212
|
-
"sourceDigest": "sha256:
|
|
212
|
+
"sourceDigest": "sha256:ca5cf80a6fc7b91e4a029d9962efc0da84b31a267b0e1a7bbaaba731d426dffc",
|
|
213
213
|
"typescriptRootType": null
|
|
214
214
|
}
|
|
215
215
|
],
|
|
216
|
-
"digest": "sha256:
|
|
216
|
+
"digest": "sha256:fe8e29466fbeaafd38b28e6d09f94a4f9e05045aaa4af954431d5b493a13ba14"
|
|
217
217
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "2.0.0",
|
|
3
3
|
"sourceDesignRevision": "a53052955ceb6c1aa10c886289dc832eedfe6de0a00004df07d353ac19c4403a",
|
|
4
|
-
"openApiDigest": "sha256:
|
|
4
|
+
"openApiDigest": "sha256:ca5cf80a6fc7b91e4a029d9962efc0da84b31a267b0e1a7bbaaba731d426dffc",
|
|
5
5
|
"operations": [
|
|
6
6
|
{
|
|
7
7
|
"operationId": "getInternalHealth",
|
|
@@ -1049,5 +1049,5 @@
|
|
|
1049
1049
|
"sourceFragment": "workloads"
|
|
1050
1050
|
}
|
|
1051
1051
|
],
|
|
1052
|
-
"digest": "sha256:
|
|
1052
|
+
"digest": "sha256:f4c2d4b69632958faefc39a1a229877a70a60b86a22b9e891bbecb1924878c68"
|
|
1053
1053
|
}
|
package/openapi/openapi.yaml
CHANGED
|
@@ -46,6 +46,20 @@ components:
|
|
|
46
46
|
pattern: ^(?:sha1:[0-9a-f]{40}|sha256:[0-9a-f]{64})$
|
|
47
47
|
type: string
|
|
48
48
|
parameters:
|
|
49
|
+
ContentLimit:
|
|
50
|
+
description: |
|
|
51
|
+
Same bound as the shared `Limit` parameter, with a higher default
|
|
52
|
+
appropriate to a content list row: the server may return fewer items
|
|
53
|
+
than `limit` even when more are available.
|
|
54
|
+
example: 1
|
|
55
|
+
in: query
|
|
56
|
+
name: limit
|
|
57
|
+
required: false
|
|
58
|
+
schema:
|
|
59
|
+
default: 50
|
|
60
|
+
maximum: 100
|
|
61
|
+
minimum: 1
|
|
62
|
+
type: integer
|
|
49
63
|
Cursor:
|
|
50
64
|
example: example
|
|
51
65
|
in: query
|
|
@@ -369,6 +383,12 @@ components:
|
|
|
369
383
|
$ref: "#/components/schemas/PortableContentFrontmatterDocument"
|
|
370
384
|
ContentInventoryItem:
|
|
371
385
|
additionalProperties: false
|
|
386
|
+
description: |
|
|
387
|
+
Exactly one of `summary` or `unreadable` is present on every item the
|
|
388
|
+
server returns from schema 2.15.0 on; a strict validator does not
|
|
389
|
+
enforce this (it would make an older item with neither field, valid
|
|
390
|
+
before 2.15.0, invalid), so a reader checks for both being absent
|
|
391
|
+
defensively.
|
|
372
392
|
properties:
|
|
373
393
|
blobId:
|
|
374
394
|
pattern: ^(?:sha1:[0-9a-f]{40}|sha256:[0-9a-f]{64})$
|
|
@@ -384,18 +404,86 @@ components:
|
|
|
384
404
|
format: int64
|
|
385
405
|
minimum: 0
|
|
386
406
|
type: integer
|
|
407
|
+
summary:
|
|
408
|
+
$ref: "#/components/schemas/ContentInventoryItemSummary"
|
|
409
|
+
unreadable:
|
|
410
|
+
$ref: "#/components/schemas/ContentInventoryItemUnreadable"
|
|
387
411
|
required:
|
|
388
412
|
- path
|
|
389
413
|
- kind
|
|
390
414
|
- blobId
|
|
391
415
|
- size
|
|
392
416
|
type: object
|
|
417
|
+
ContentInventoryItemSummary:
|
|
418
|
+
additionalProperties: false
|
|
419
|
+
description: |
|
|
420
|
+
The header block's own facts about this item, read at inventory time.
|
|
421
|
+
`contentId` is the header's `id`; `status` is the header's `status`
|
|
422
|
+
upper-cased to this contract's enum style.
|
|
423
|
+
properties:
|
|
424
|
+
contentId:
|
|
425
|
+
$ref: "#/components/schemas/PortableContentFrontmatterStableId"
|
|
426
|
+
createdAt:
|
|
427
|
+
$ref: "#/components/schemas/PortableContentFrontmatterRfc3339"
|
|
428
|
+
language:
|
|
429
|
+
$ref: "#/components/schemas/PortableContentFrontmatterBcp47"
|
|
430
|
+
publishedAt:
|
|
431
|
+
$ref: "#/components/schemas/PortableContentFrontmatterRfc3339"
|
|
432
|
+
slug:
|
|
433
|
+
$ref: "#/components/schemas/PortableContentFrontmatterSlug"
|
|
434
|
+
status:
|
|
435
|
+
$ref: "#/components/schemas/ContentItemStatus"
|
|
436
|
+
title:
|
|
437
|
+
$ref: "#/components/schemas/PortableContentFrontmatterPlainText"
|
|
438
|
+
x-gala-graphemeLength:
|
|
439
|
+
maximum: 200
|
|
440
|
+
minimum: 1
|
|
441
|
+
updatedAt:
|
|
442
|
+
$ref: "#/components/schemas/PortableContentFrontmatterRfc3339"
|
|
443
|
+
required:
|
|
444
|
+
- contentId
|
|
445
|
+
- title
|
|
446
|
+
- slug
|
|
447
|
+
- status
|
|
448
|
+
- language
|
|
449
|
+
- createdAt
|
|
450
|
+
type: object
|
|
451
|
+
ContentInventoryItemUnreadable:
|
|
452
|
+
additionalProperties: false
|
|
453
|
+
properties:
|
|
454
|
+
reason:
|
|
455
|
+
$ref: "#/components/schemas/ContentItemUnreadableReason"
|
|
456
|
+
required:
|
|
457
|
+
- reason
|
|
458
|
+
type: object
|
|
393
459
|
ContentItemKind:
|
|
394
|
-
description: Which
|
|
460
|
+
description: Which content root a document lives under -- ARTICLE for `content/articles/`, PAGE for `content/pages/`. Since schema 2.15.0 this comes from the header's own `kind` when the inventory item's `summary` is present; before that, and whenever `unreadable` is present instead, it is derived from the path alone.
|
|
395
461
|
enum:
|
|
396
462
|
- ARTICLE
|
|
397
463
|
- PAGE
|
|
398
464
|
type: string
|
|
465
|
+
ContentItemStatus:
|
|
466
|
+
description: The header's `status`, upper-cased to this contract's enum style.
|
|
467
|
+
enum:
|
|
468
|
+
- DRAFT
|
|
469
|
+
- PUBLISHED
|
|
470
|
+
- UNLISTED
|
|
471
|
+
- ARCHIVED
|
|
472
|
+
type: string
|
|
473
|
+
ContentItemUnreadableReason:
|
|
474
|
+
description: |
|
|
475
|
+
Why an inventory item's header could not be read. `HEADER_MISSING`:
|
|
476
|
+
the file has no header block at all. `HEADER_UNPARSABLE`: the header
|
|
477
|
+
block does not parse. `HEADER_INVALID`: it parses but does not
|
|
478
|
+
validate against `content-frontmatter.schema.json`. `TOO_LARGE`: the
|
|
479
|
+
file exceeds the document read's 1 MiB bound, so the header was never
|
|
480
|
+
read.
|
|
481
|
+
enum:
|
|
482
|
+
- HEADER_MISSING
|
|
483
|
+
- HEADER_UNPARSABLE
|
|
484
|
+
- HEADER_INVALID
|
|
485
|
+
- TOO_LARGE
|
|
486
|
+
type: string
|
|
399
487
|
ContentPublicationAuthorSummary:
|
|
400
488
|
additionalProperties: false
|
|
401
489
|
properties:
|
|
@@ -19901,12 +19989,22 @@ paths:
|
|
|
19901
19989
|
get:
|
|
19902
19990
|
description: |
|
|
19903
19991
|
One git-trees read per declared content root at the linked repository's
|
|
19904
|
-
current main branch head, bounded at 2,000 entries
|
|
19905
|
-
|
|
19906
|
-
|
|
19907
|
-
|
|
19908
|
-
|
|
19909
|
-
`
|
|
19992
|
+
current main branch head, bounded at 2,000 entries. For each listed
|
|
19993
|
+
path the server additionally reads that file's header block (bounded,
|
|
19994
|
+
from the person's repository, nothing stored) to fill `summary`.
|
|
19995
|
+
Exactly one of `summary` or `unreadable` is present on every item this
|
|
19996
|
+
operation returns from schema 2.15.0 on: `summary` when the header
|
|
19997
|
+
parses, `unreadable` (with a closed `reason`) when it does not or the
|
|
19998
|
+
file exceeds the read bound. `kind` comes from the header's own
|
|
19999
|
+
`kind` when `summary` is present, and from which declared content
|
|
20000
|
+
root the path is under (ARTICLE for `content/articles/`, PAGE for
|
|
20001
|
+
`content/pages/`) when it is not. `limit` defaults to 50 here (the
|
|
20002
|
+
shared default is 25) because a content list row needs more per
|
|
20003
|
+
round trip than most lists; the server may return fewer items than
|
|
20004
|
+
`limit` even when more are available. `setUp` reports whether
|
|
20005
|
+
`gala/repository.json` is present on main, matching
|
|
20006
|
+
`GET .../repository/setup`'s `state`. `publication` is read from the
|
|
20007
|
+
settings files
|
|
19910
20008
|
(`gala/repository.json`, `gala/appearance.json`, `gala/authors/`) at
|
|
19911
20009
|
this same main-branch head, and is returned on every page of the
|
|
19912
20010
|
inventory, not only the first, so the editor has these facts
|
|
@@ -19932,7 +20030,7 @@ paths:
|
|
|
19932
20030
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
19933
20031
|
type: string
|
|
19934
20032
|
- $ref: "#/components/parameters/Cursor"
|
|
19935
|
-
- $ref: "#/components/parameters/
|
|
20033
|
+
- $ref: "#/components/parameters/ContentLimit"
|
|
19936
20034
|
responses:
|
|
19937
20035
|
"200":
|
|
19938
20036
|
content:
|
|
@@ -19944,7 +20042,24 @@ paths:
|
|
|
19944
20042
|
defaultBranch: main
|
|
19945
20043
|
hasMore: false
|
|
19946
20044
|
head: sha1:0000000000000000000000000000000000000000
|
|
19947
|
-
items:
|
|
20045
|
+
items:
|
|
20046
|
+
- blobId: sha1:0000000000000000000000000000000000000000
|
|
20047
|
+
kind: ARTICLE
|
|
20048
|
+
path: content/articles/example.md
|
|
20049
|
+
size: 128
|
|
20050
|
+
summary:
|
|
20051
|
+
contentId: 018f0000-0000-7000-8000-000000000001
|
|
20052
|
+
createdAt: "2026-09-28T00:00:00.000Z"
|
|
20053
|
+
language: en
|
|
20054
|
+
slug: example
|
|
20055
|
+
status: DRAFT
|
|
20056
|
+
title: Example
|
|
20057
|
+
- blobId: sha1:0000000000000000000000000000000000000000
|
|
20058
|
+
kind: ARTICLE
|
|
20059
|
+
path: content/articles/unreadable.md
|
|
20060
|
+
size: 2097152
|
|
20061
|
+
unreadable:
|
|
20062
|
+
reason: TOO_LARGE
|
|
19948
20063
|
publication:
|
|
19949
20064
|
authors:
|
|
19950
20065
|
- displayName: Example Author
|
package/package.json
CHANGED
package/sbom.cdx.json
CHANGED
|
@@ -97,8 +97,8 @@
|
|
|
97
97
|
"type": "library",
|
|
98
98
|
"name": "schemas",
|
|
99
99
|
"group": "@rathnasgala2",
|
|
100
|
-
"version": "2.
|
|
101
|
-
"bom-ref": "@rathnasgala2/schemas@2.
|
|
100
|
+
"version": "2.15.0",
|
|
101
|
+
"bom-ref": "@rathnasgala2/schemas@2.15.0",
|
|
102
102
|
"description": "Executable JSON Schema and OpenAPI contracts for Galascribe",
|
|
103
103
|
"licenses": [
|
|
104
104
|
{
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
110
|
],
|
|
111
|
-
"purl": "pkg:npm/%40rathnasgala2/schemas@2.
|
|
111
|
+
"purl": "pkg:npm/%40rathnasgala2/schemas@2.15.0?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2Frathnasgala2%2Fschema.git",
|
|
112
112
|
"externalReferences": [
|
|
113
113
|
{
|
|
114
114
|
"url": "https://github.com/rathnasgala2/schema/issues",
|
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
"type": "library",
|
|
154
154
|
"name": "ajv-formats",
|
|
155
155
|
"version": "3.0.1",
|
|
156
|
-
"bom-ref": "@rathnasgala2/schemas@2.
|
|
156
|
+
"bom-ref": "@rathnasgala2/schemas@2.15.0|ajv-formats@3.0.1",
|
|
157
157
|
"licenses": [
|
|
158
158
|
{
|
|
159
159
|
"license": {
|
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
"type": "library",
|
|
188
188
|
"name": "ajv",
|
|
189
189
|
"version": "8.20.0",
|
|
190
|
-
"bom-ref": "@rathnasgala2/schemas@2.
|
|
190
|
+
"bom-ref": "@rathnasgala2/schemas@2.15.0|ajv@8.20.0",
|
|
191
191
|
"licenses": [
|
|
192
192
|
{
|
|
193
193
|
"license": {
|
|
@@ -221,7 +221,7 @@
|
|
|
221
221
|
"type": "library",
|
|
222
222
|
"name": "fast-deep-equal",
|
|
223
223
|
"version": "3.1.3",
|
|
224
|
-
"bom-ref": "@rathnasgala2/schemas@2.
|
|
224
|
+
"bom-ref": "@rathnasgala2/schemas@2.15.0|fast-deep-equal@3.1.3",
|
|
225
225
|
"licenses": [
|
|
226
226
|
{
|
|
227
227
|
"license": {
|
|
@@ -255,7 +255,7 @@
|
|
|
255
255
|
"type": "library",
|
|
256
256
|
"name": "fast-uri",
|
|
257
257
|
"version": "3.1.7",
|
|
258
|
-
"bom-ref": "@rathnasgala2/schemas@2.
|
|
258
|
+
"bom-ref": "@rathnasgala2/schemas@2.15.0|fast-uri@3.1.7",
|
|
259
259
|
"licenses": [
|
|
260
260
|
{
|
|
261
261
|
"license": {
|
|
@@ -289,7 +289,7 @@
|
|
|
289
289
|
"type": "library",
|
|
290
290
|
"name": "json-schema-traverse",
|
|
291
291
|
"version": "1.0.0",
|
|
292
|
-
"bom-ref": "@rathnasgala2/schemas@2.
|
|
292
|
+
"bom-ref": "@rathnasgala2/schemas@2.15.0|json-schema-traverse@1.0.0",
|
|
293
293
|
"licenses": [
|
|
294
294
|
{
|
|
295
295
|
"license": {
|
|
@@ -323,7 +323,7 @@
|
|
|
323
323
|
"type": "library",
|
|
324
324
|
"name": "require-from-string",
|
|
325
325
|
"version": "2.0.2",
|
|
326
|
-
"bom-ref": "@rathnasgala2/schemas@2.
|
|
326
|
+
"bom-ref": "@rathnasgala2/schemas@2.15.0|require-from-string@2.0.2",
|
|
327
327
|
"licenses": [
|
|
328
328
|
{
|
|
329
329
|
"license": {
|
|
@@ -1064,10 +1064,10 @@
|
|
|
1064
1064
|
],
|
|
1065
1065
|
"dependencies": [
|
|
1066
1066
|
{
|
|
1067
|
-
"ref": "@rathnasgala2/schemas@2.
|
|
1067
|
+
"ref": "@rathnasgala2/schemas@2.15.0",
|
|
1068
1068
|
"dependsOn": [
|
|
1069
|
-
"@rathnasgala2/schemas@2.
|
|
1070
|
-
"@rathnasgala2/schemas@2.
|
|
1069
|
+
"@rathnasgala2/schemas@2.15.0|ajv-formats@3.0.1",
|
|
1070
|
+
"@rathnasgala2/schemas@2.15.0|ajv@8.20.0",
|
|
1071
1071
|
"pkg:npm/semver@7.8.5",
|
|
1072
1072
|
"urn:gala:source-data:iana-ipv4-special-registry",
|
|
1073
1073
|
"urn:gala:source-data:iana-ipv6-special-registry",
|
|
@@ -1089,31 +1089,31 @@
|
|
|
1089
1089
|
]
|
|
1090
1090
|
},
|
|
1091
1091
|
{
|
|
1092
|
-
"ref": "@rathnasgala2/schemas@2.
|
|
1092
|
+
"ref": "@rathnasgala2/schemas@2.15.0|ajv-formats@3.0.1",
|
|
1093
1093
|
"dependsOn": [
|
|
1094
|
-
"@rathnasgala2/schemas@2.
|
|
1094
|
+
"@rathnasgala2/schemas@2.15.0|ajv@8.20.0"
|
|
1095
1095
|
]
|
|
1096
1096
|
},
|
|
1097
1097
|
{
|
|
1098
|
-
"ref": "@rathnasgala2/schemas@2.
|
|
1098
|
+
"ref": "@rathnasgala2/schemas@2.15.0|ajv@8.20.0",
|
|
1099
1099
|
"dependsOn": [
|
|
1100
|
-
"@rathnasgala2/schemas@2.
|
|
1101
|
-
"@rathnasgala2/schemas@2.
|
|
1102
|
-
"@rathnasgala2/schemas@2.
|
|
1103
|
-
"@rathnasgala2/schemas@2.
|
|
1100
|
+
"@rathnasgala2/schemas@2.15.0|fast-deep-equal@3.1.3",
|
|
1101
|
+
"@rathnasgala2/schemas@2.15.0|fast-uri@3.1.7",
|
|
1102
|
+
"@rathnasgala2/schemas@2.15.0|json-schema-traverse@1.0.0",
|
|
1103
|
+
"@rathnasgala2/schemas@2.15.0|require-from-string@2.0.2"
|
|
1104
1104
|
]
|
|
1105
1105
|
},
|
|
1106
1106
|
{
|
|
1107
|
-
"ref": "@rathnasgala2/schemas@2.
|
|
1107
|
+
"ref": "@rathnasgala2/schemas@2.15.0|fast-deep-equal@3.1.3"
|
|
1108
1108
|
},
|
|
1109
1109
|
{
|
|
1110
|
-
"ref": "@rathnasgala2/schemas@2.
|
|
1110
|
+
"ref": "@rathnasgala2/schemas@2.15.0|fast-uri@3.1.7"
|
|
1111
1111
|
},
|
|
1112
1112
|
{
|
|
1113
|
-
"ref": "@rathnasgala2/schemas@2.
|
|
1113
|
+
"ref": "@rathnasgala2/schemas@2.15.0|json-schema-traverse@1.0.0"
|
|
1114
1114
|
},
|
|
1115
1115
|
{
|
|
1116
|
-
"ref": "@rathnasgala2/schemas@2.
|
|
1116
|
+
"ref": "@rathnasgala2/schemas@2.15.0|require-from-string@2.0.2"
|
|
1117
1117
|
},
|
|
1118
1118
|
{
|
|
1119
1119
|
"ref": "pkg:npm/semver@7.8.5"
|