@rathnasgala2/schemas 3.11.0 → 3.12.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.
@@ -146,6 +146,7 @@ export type BuildInputContentFrontmatterNormalized = Readonly<{
146
146
  readonly publishedAt: BuildInputRfc3339;
147
147
  readonly redirects: ReadonlyArray<BuildInputCanonicalRoute>;
148
148
  readonly route?: BuildInputCanonicalRoute;
149
+ readonly seo?: BuildInputContentSeo;
149
150
  readonly series?: BuildInputPlainLabel;
150
151
  readonly seriesOrder?: number;
151
152
  readonly slug: BuildInputSlug;
@@ -157,6 +158,13 @@ export type BuildInputContentFrontmatterNormalized = Readonly<{
157
158
  }> &
158
159
  unknown;
159
160
 
161
+ export type BuildInputContentSeo = Readonly<{
162
+ readonly canonicalUrl?: BuildInputUrlHttps;
163
+ readonly description?: BuildInputPlainText;
164
+ readonly noindex?: boolean;
165
+ readonly title?: BuildInputPlainText;
166
+ }>;
167
+
160
168
  export type BuildInputDestinationCapabilityProfile = Readonly<{
161
169
  readonly adapter: BuildInputAuthoredAdapterIdentity;
162
170
  readonly baseUrl: BuildInputUrlHttps;
@@ -17,6 +17,13 @@ export type ContentFrontmatterContentEdition = Readonly<{
17
17
  readonly sourceDigest: ContentFrontmatterDigest;
18
18
  }>;
19
19
 
20
+ export type ContentFrontmatterContentSeo = Readonly<{
21
+ readonly canonicalUrl?: ContentFrontmatterUrlHttps;
22
+ readonly description?: ContentFrontmatterPlainText;
23
+ readonly noindex?: boolean;
24
+ readonly title?: ContentFrontmatterPlainText;
25
+ }>;
26
+
20
27
  export type ContentFrontmatterDigest = string;
21
28
 
22
29
  export type ContentFrontmatterExtensionKey = string;
@@ -78,6 +85,7 @@ export type ContentFrontmatterDocument = Readonly<{
78
85
  readonly route?: ContentFrontmatterCanonicalRoute;
79
86
  readonly schemaId: 'urn:gala:schema:content-frontmatter:2.0.0';
80
87
  readonly schemaVersion: '2.0.0';
88
+ readonly seo?: ContentFrontmatterContentSeo;
81
89
  readonly series?: ContentFrontmatterPlainLabel;
82
90
  readonly seriesOrder?: number;
83
91
  readonly slug: ContentFrontmatterSlug;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "2.0.0",
3
3
  "sourceDesignRevision": "a53052955ceb6c1aa10c886289dc832eedfe6de0a00004df07d353ac19c4403a",
4
- "openApiDigest": "sha256:b5ab8902d0a3d6990cd2c4bcdc51e6f007ceb33d65119fc2f5e526c0a2260bb1",
4
+ "openApiDigest": "sha256:ced018280539ba1489140480f22f9d4d559bfffc0fc383979d96ce6bdbd511db",
5
5
  "operations": [
6
6
  {
7
7
  "operationId": "getInternalHealth",
@@ -2157,5 +2157,5 @@
2157
2157
  "sourceFragment": "workloads"
2158
2158
  }
2159
2159
  ],
2160
- "digest": "sha256:e0e3e201cb7a5b7004e158e7bc48261f82817929bdadfde6d4aa0373e9174ecd"
2160
+ "digest": "sha256:abdb9d0b55df0c670b75a6bb175ef2cf8bd0b6566ceffb54e2683037072ee0ea"
2161
2161
  }
@@ -1081,9 +1081,20 @@ components:
1081
1081
  optional: the author's publication palette, written as
1082
1082
  `gala/appearance.json`'s `tokens`; when absent the file's `tokens`
1083
1083
  are preserved unchanged, and `{}` resets to the theme's own colours.
1084
+ `brandMark` (SCHEMA-3.12.0) is optional: a repository-relative path
1085
+ under `assets/brand/`, written as `gala/appearance.json`'s
1086
+ `brandMark` (the site icon); `null` clears it and an absent member
1087
+ preserves the file's value. The App uploads the image file as an
1088
+ ordinary `assets[]` entry in the same plan.
1084
1089
  properties:
1085
1090
  attribution:
1086
1091
  $ref: "#/components/schemas/PortableAppearanceAttribution"
1092
+ brandMark:
1093
+ oneOf:
1094
+ - allOf:
1095
+ - $ref: "#/components/schemas/PortableAppearanceRepoRelativePath"
1096
+ - pattern: ^assets/brand/
1097
+ - type: "null"
1087
1098
  colorModeDefault:
1088
1099
  $ref: "#/components/schemas/AppearanceColorMode"
1089
1100
  themeId:
@@ -1208,6 +1219,55 @@ components:
1208
1219
  - path
1209
1220
  - action
1210
1221
  type: object
1222
+ ContentChangePublicationProfileEntry:
1223
+ additionalProperties: false
1224
+ description: |
1225
+ SCHEMA-3.12.0: site-level settings inside a batch
1226
+ `content-changes:plan` request, the same lifecycle and capability as
1227
+ `appearance` (a pending change that goes live on Publish). The
1228
+ server loads `gala/publication.json` at `baseRevision`, applies the
1229
+ members that are present, validates the result against
1230
+ `publication.schema.json`, and plans one `PUT` of
1231
+ `gala/publication.json`. An absent member is preserved. `null`
1232
+ resets `description` to the publication title (the file requires a
1233
+ description); `null` clears `defaultImageRef` and `crawlers`.
1234
+ `title`, `defaultLanguage` and `socialLinks` cannot be cleared.
1235
+ `socialLinks` (max 32, the publication file's own limit) replaces
1236
+ the whole list. `canonicalBase` is never client-settable: it changes
1237
+ only through domain attach and detach. A profile that changes nothing is
1238
+ `422 VALIDATION_FAILED` pointed at `/publicationProfile`; member
1239
+ failures point at `/publicationProfile/<member>`.
1240
+ properties:
1241
+ crawlers:
1242
+ oneOf:
1243
+ - $ref: "#/components/schemas/PortablePublicationCrawlers"
1244
+ - type: "null"
1245
+ defaultImageRef:
1246
+ oneOf:
1247
+ - allOf:
1248
+ - $ref: "#/components/schemas/PortablePublicationRepoRelativePath"
1249
+ - pattern: ^assets/brand/
1250
+ - type: "null"
1251
+ defaultLanguage:
1252
+ $ref: "#/components/schemas/PortablePublicationBcp47"
1253
+ description:
1254
+ oneOf:
1255
+ - $ref: "#/components/schemas/PortablePublicationPlainText"
1256
+ x-gala-graphemeLength:
1257
+ maximum: 300
1258
+ minimum: 1
1259
+ - type: "null"
1260
+ socialLinks:
1261
+ items:
1262
+ $ref: "#/components/schemas/PortablePublicationSocialLink"
1263
+ maxItems: 32
1264
+ type: array
1265
+ title:
1266
+ $ref: "#/components/schemas/PortablePublicationPlainText"
1267
+ x-gala-graphemeLength:
1268
+ maximum: 120
1269
+ minimum: 1
1270
+ type: object
1211
1271
  ContentFrontmatter:
1212
1272
  $ref: "#/components/schemas/PortableContentFrontmatterDocument"
1213
1273
  ContentInventoryItem:
@@ -1345,14 +1405,36 @@ components:
1345
1405
  $ref: "#/components/schemas/ContentPublicationAuthorSummary"
1346
1406
  maxItems: 200
1347
1407
  type: array
1408
+ crawlers:
1409
+ $ref: "#/components/schemas/PortablePublicationCrawlers"
1410
+ defaultImageRef:
1411
+ $ref: "#/components/schemas/PortablePublicationRepoRelativePath"
1348
1412
  defaultLanguage:
1349
1413
  $ref: "#/components/schemas/PortablePublicationBcp47"
1414
+ description:
1415
+ $ref: "#/components/schemas/PortablePublicationPlainText"
1416
+ x-gala-graphemeLength:
1417
+ maximum: 500
1418
+ minimum: 1
1419
+ socialLinks:
1420
+ items:
1421
+ $ref: "#/components/schemas/PortablePublicationSocialLink"
1422
+ maxItems: 32
1423
+ type: array
1350
1424
  theme:
1351
1425
  $ref: "#/components/schemas/PortableAppearancePackageRange"
1426
+ title:
1427
+ $ref: "#/components/schemas/PortablePublicationPlainText"
1428
+ x-gala-graphemeLength:
1429
+ maximum: 200
1430
+ minimum: 1
1352
1431
  required:
1353
1432
  - defaultLanguage
1354
1433
  - theme
1355
1434
  - authors
1435
+ - title
1436
+ - description
1437
+ - socialLinks
1356
1438
  type: object
1357
1439
  DefaultBranchUpdateState:
1358
1440
  description: |
@@ -7070,6 +7152,15 @@ components:
7070
7152
  minLength: 3
7071
7153
  pattern: ^(?:@[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?/[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?|[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?)@(?:\S+|\S+ \S+)$
7072
7154
  type: string
7155
+ PortableAppearanceRepoRelativePath:
7156
+ description: NFC UTF-8 repository-relative path using slash separators, with no leading slash, dot segment, NUL, backslash, or percent-decoded traversal.
7157
+ format: gala-repository-relative-path
7158
+ maxLength: 512
7159
+ minLength: 1
7160
+ pattern: ^(?!/)(?!.*\\)(?!.*\u0000).+$
7161
+ type: string
7162
+ x-gala-utf8ByteLength:
7163
+ maximum: 512
7073
7164
  PortableAppearanceSemanticTokens:
7074
7165
  additionalProperties: false
7075
7166
  description: "SCHEMA-3.10.0: the author's publication palette. Each role (accent, canvas, text) is optional; when present it carries both light and dark as opaque lowercase #rrggbb. An absent role uses the theme's default; `{}` selects the theme's default palette entirely."
@@ -7172,6 +7263,26 @@ components:
7172
7263
  - generation
7173
7264
  - approvedAt
7174
7265
  type: object
7266
+ PortableContentFrontmatterContentSeo:
7267
+ additionalProperties: false
7268
+ description: "SCHEMA-3.12.0: optional search overrides for one document. `title` replaces the page title in search results (the site suffix is still appended on non-home pages), `description` replaces the search description, `canonicalUrl` is an absolute HTTPS canonical for syndicated or moved content, and `noindex: true` keeps a listed document out of search engines. Every member is optional; absent members fall back to the document's own title and description."
7269
+ properties:
7270
+ canonicalUrl:
7271
+ $ref: "#/components/schemas/PortableContentFrontmatterUrlHttps"
7272
+ description:
7273
+ $ref: "#/components/schemas/PortableContentFrontmatterPlainText"
7274
+ x-gala-graphemeLength:
7275
+ maximum: 300
7276
+ minimum: 1
7277
+ noindex:
7278
+ type: boolean
7279
+ title:
7280
+ $ref: "#/components/schemas/PortableContentFrontmatterPlainText"
7281
+ x-gala-graphemeLength:
7282
+ maximum: 70
7283
+ minimum: 1
7284
+ required: []
7285
+ type: object
7175
7286
  PortableContentFrontmatterDigest:
7176
7287
  pattern: ^sha256:[0-9a-f]{64}$
7177
7288
  type: string
@@ -7268,6 +7379,8 @@ components:
7268
7379
  pattern: ^2\.0\.0$
7269
7380
  type: string
7270
7381
  x-gala-const: 2.0.0
7382
+ seo:
7383
+ $ref: "#/components/schemas/PortableContentFrontmatterContentSeo"
7271
7384
  series:
7272
7385
  $ref: "#/components/schemas/PortableContentFrontmatterPlainLabel"
7273
7386
  seriesOrder:
@@ -7398,6 +7511,11 @@ components:
7398
7511
  description: Lowercase canonical UUIDv7. Once published, it is immutable; its time ordering conveys neither chronology nor authority.
7399
7512
  pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
7400
7513
  type: string
7514
+ PortableContentFrontmatterUrlHttps:
7515
+ description: Absolute HTTPS URL without embedded credentials.
7516
+ format: uri
7517
+ pattern: ^https://(?![^/?#]*@)
7518
+ type: string
7401
7519
  PortableDeploymentIntentAdapterIdentity:
7402
7520
  additionalProperties: false
7403
7521
  properties:
@@ -12953,6 +13071,84 @@ components:
12953
13071
  x-gala-utf8ByteLength:
12954
13072
  maximum: 255
12955
13073
  minimum: 1
13074
+ PortablePublicationCrawlers:
13075
+ additionalProperties: false
13076
+ properties:
13077
+ ai:
13078
+ enum:
13079
+ - allow
13080
+ - block
13081
+ required:
13082
+ - ai
13083
+ type: object
13084
+ PortablePublicationPlainLabel:
13085
+ description: Normalized Unicode plain text without markup, controls, or bidi overrides.
13086
+ format: gala-plain-label
13087
+ type: string
13088
+ x-gala-graphemeLength:
13089
+ maximum: 80
13090
+ minimum: 1
13091
+ PortablePublicationPlainText:
13092
+ description: NFC Unicode text without disallowed C0/C1 controls or bidi override/isolate controls.
13093
+ format: gala-plain-text
13094
+ type: string
13095
+ PortablePublicationRepoRelativePath:
13096
+ description: NFC UTF-8 repository-relative path using slash separators, with no leading slash, dot segment, NUL, backslash, or percent-decoded traversal.
13097
+ format: gala-repository-relative-path
13098
+ maxLength: 512
13099
+ minLength: 1
13100
+ pattern: ^(?!/)(?!.*\\)(?!.*\u0000).+$
13101
+ type: string
13102
+ x-gala-utf8ByteLength:
13103
+ maximum: 512
13104
+ PortablePublicationSocialLink:
13105
+ additionalProperties: false
13106
+ allOf:
13107
+ - else:
13108
+ properties:
13109
+ uri:
13110
+ $ref: "#/components/schemas/PortablePublicationUrlHttps"
13111
+ if:
13112
+ properties:
13113
+ type:
13114
+ pattern: ^email$
13115
+ type: string
13116
+ x-gala-const: email
13117
+ required:
13118
+ - type
13119
+ then:
13120
+ properties:
13121
+ uri:
13122
+ format: uri
13123
+ pattern: "^mailto:"
13124
+ type: string
13125
+ properties:
13126
+ label:
13127
+ $ref: "#/components/schemas/PortablePublicationPlainLabel"
13128
+ type:
13129
+ enum:
13130
+ - website
13131
+ - email
13132
+ - github
13133
+ - linkedin
13134
+ - mastodon
13135
+ - bluesky
13136
+ - x
13137
+ - youtube
13138
+ - other
13139
+ uri:
13140
+ maxLength: 2048
13141
+ minLength: 1
13142
+ type: string
13143
+ required:
13144
+ - type
13145
+ - uri
13146
+ type: object
13147
+ PortablePublicationUrlHttps:
13148
+ description: Absolute HTTPS URL without embedded credentials.
13149
+ format: uri
13150
+ pattern: ^https://(?![^/?#]*@)
13151
+ type: string
12956
13152
  PostAuthenticationGithubTransactionsRequest:
12957
13153
  additionalProperties: false
12958
13154
  properties:
@@ -13731,13 +13927,15 @@ components:
13731
13927
  Two request shapes, both accepted. The 2.13.0 single-document shape
13732
13928
  (`path`, `contentDigest`, `expectedHead`) plans one document write
13733
13929
  against the exact expected head. The additive batch shape
13734
- (`baseRevision` and at least one of `documents`/`assets`/`appearance`)
13930
+ (`baseRevision` and at least one of `documents`/`assets`/`appearance`/
13931
+ `publicationProfile`)
13735
13932
  plans up to 20 documents and 20 assets -- each `PUT` with its own
13736
13933
  text or bytes and digest, each `DELETE` naming only its path -- and
13737
13934
  optionally one theme selection in one change, against the exact
13738
13935
  expected main-branch head asserted as `baseRevision`. A request
13739
13936
  mixing the two shapes, or a batch request naming none of
13740
- `documents`, `assets` and `appearance`, is `422 VALIDATION_FAILED`.
13937
+ `documents`, `assets`, `appearance` and `publicationProfile`, is
13938
+ `422 VALIDATION_FAILED`.
13741
13939
  `appearance` names a catalog theme and a default colour mode, and
13742
13940
  optionally the footer `attribution` (SCHEMA-3.3.0); the server
13743
13941
  writes `gala/appearance.json` (only `theme`, `colorMode.default` and,
@@ -13747,6 +13945,10 @@ components:
13747
13945
  selection (theme, default colour mode and, when sent, attribution)
13748
13946
  is `422 VALIDATION_FAILED` pointed at `/appearance`. Document paths
13749
13947
  under `gala/` and `gala.lock.json` remain forbidden.
13948
+ `publicationProfile` (SCHEMA-3.12.0) is a further batch member beside
13949
+ `appearance`, counting as one of the named members: it edits
13950
+ `gala/publication.json` through one planned `PUT` (see
13951
+ `ContentChangePublicationProfileEntry`).
13750
13952
  Assets are images only (PNG, JPEG, WebP, GIF, AVIF; SVG is refused):
13751
13953
  at most 20 per change, each at most 5 MiB and together at most
13752
13954
  20 MiB, measured on the decoded bytes -- `assets[].bytesBase64` is
@@ -13779,6 +13981,8 @@ components:
13779
13981
  maxLength: 512
13780
13982
  minLength: 1
13781
13983
  type: string
13984
+ publicationProfile:
13985
+ $ref: "#/components/schemas/ContentChangePublicationProfileEntry"
13782
13986
  required: []
13783
13987
  type: object
13784
13988
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdContentChangesPlanResponse:
@@ -14606,7 +14810,16 @@ components:
14606
14810
  - $ref: "#/components/schemas/PublicationTransfer"
14607
14811
  PostOrganizationsByOrganizationIdPublicationsRequest:
14608
14812
  additionalProperties: false
14813
+ description: |
14814
+ `description` (SCHEMA-3.12.0) is the optional site tagline, written
14815
+ as `gala/publication.json`'s `description`. When absent the server
14816
+ keeps its fallback (the site name).
14609
14817
  properties:
14818
+ description:
14819
+ $ref: "#/components/schemas/PortablePublicationPlainText"
14820
+ x-gala-graphemeLength:
14821
+ maximum: 300
14822
+ minimum: 1
14610
14823
  name:
14611
14824
  maxLength: 80
14612
14825
  minLength: 1
@@ -15812,10 +16025,19 @@ components:
15812
16025
  (SCHEMA-3.3.0, optional) is the file's footer attribution switch;
15813
16026
  absent means the file has none, which renders as shown. `tokens`
15814
16027
  (SCHEMA-3.10.0, optional) is the file's publication palette as read;
15815
- absent or `{}` means the theme's own colours.
16028
+ absent or `{}` means the theme's own colours. `brandMark`
16029
+ (SCHEMA-3.12.0, optional): the publication's brand mark as currently
16030
+ committed, absent when none.
15816
16031
  properties:
15817
16032
  attribution:
15818
16033
  $ref: "#/components/schemas/PortableAppearanceAttribution"
16034
+ brandMark:
16035
+ description: "SCHEMA-3.12.0: the publication's brand mark as currently committed, absent when none"
16036
+ oneOf:
16037
+ - allOf:
16038
+ - $ref: "#/components/schemas/PortableAppearanceRepoRelativePath"
16039
+ - pattern: ^assets/brand/
16040
+ - type: "null"
15819
16041
  colorModeDefault:
15820
16042
  $ref: "#/components/schemas/AppearanceColorMode"
15821
16043
  themeId:
@@ -30308,7 +30530,10 @@ paths:
30308
30530
  - displayName: Example Author
30309
30531
  id: 018f0000-0000-7000-8000-000000000001
30310
30532
  defaultLanguage: en
30533
+ description: Example tagline
30534
+ socialLinks: []
30311
30535
  theme: "@rathnasgala2/theme-default@^4.0.0"
30536
+ title: Example
30312
30537
  setUp: true
30313
30538
  schema:
30314
30539
  $ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdContentResponse"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rathnasgala2/schemas",
3
- "version": "3.11.0",
3
+ "version": "3.12.0",
4
4
  "description": "Executable JSON Schema and OpenAPI contracts for Galascribe",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
package/sbom.cdx.json CHANGED
@@ -97,8 +97,8 @@
97
97
  "type": "library",
98
98
  "name": "schemas",
99
99
  "group": "@rathnasgala2",
100
- "version": "3.11.0",
101
- "bom-ref": "@rathnasgala2/schemas@3.11.0",
100
+ "version": "3.12.0",
101
+ "bom-ref": "@rathnasgala2/schemas@3.12.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@3.11.0?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2Frathnasgala2%2Fschema.git",
111
+ "purl": "pkg:npm/%40rathnasgala2/schemas@3.12.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@3.11.0|ajv-formats@3.0.1",
156
+ "bom-ref": "@rathnasgala2/schemas@3.12.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@3.11.0|ajv@8.20.0",
190
+ "bom-ref": "@rathnasgala2/schemas@3.12.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@3.11.0|fast-deep-equal@3.1.3",
224
+ "bom-ref": "@rathnasgala2/schemas@3.12.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.8",
258
- "bom-ref": "@rathnasgala2/schemas@3.11.0|fast-uri@3.1.8",
258
+ "bom-ref": "@rathnasgala2/schemas@3.12.0|fast-uri@3.1.8",
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@3.11.0|json-schema-traverse@1.0.0",
292
+ "bom-ref": "@rathnasgala2/schemas@3.12.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@3.11.0|require-from-string@2.0.2",
326
+ "bom-ref": "@rathnasgala2/schemas@3.12.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@3.11.0",
1067
+ "ref": "@rathnasgala2/schemas@3.12.0",
1068
1068
  "dependsOn": [
1069
- "@rathnasgala2/schemas@3.11.0|ajv-formats@3.0.1",
1070
- "@rathnasgala2/schemas@3.11.0|ajv@8.20.0",
1069
+ "@rathnasgala2/schemas@3.12.0|ajv-formats@3.0.1",
1070
+ "@rathnasgala2/schemas@3.12.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@3.11.0|ajv-formats@3.0.1",
1092
+ "ref": "@rathnasgala2/schemas@3.12.0|ajv-formats@3.0.1",
1093
1093
  "dependsOn": [
1094
- "@rathnasgala2/schemas@3.11.0|ajv@8.20.0"
1094
+ "@rathnasgala2/schemas@3.12.0|ajv@8.20.0"
1095
1095
  ]
1096
1096
  },
1097
1097
  {
1098
- "ref": "@rathnasgala2/schemas@3.11.0|ajv@8.20.0",
1098
+ "ref": "@rathnasgala2/schemas@3.12.0|ajv@8.20.0",
1099
1099
  "dependsOn": [
1100
- "@rathnasgala2/schemas@3.11.0|fast-deep-equal@3.1.3",
1101
- "@rathnasgala2/schemas@3.11.0|fast-uri@3.1.8",
1102
- "@rathnasgala2/schemas@3.11.0|json-schema-traverse@1.0.0",
1103
- "@rathnasgala2/schemas@3.11.0|require-from-string@2.0.2"
1100
+ "@rathnasgala2/schemas@3.12.0|fast-deep-equal@3.1.3",
1101
+ "@rathnasgala2/schemas@3.12.0|fast-uri@3.1.8",
1102
+ "@rathnasgala2/schemas@3.12.0|json-schema-traverse@1.0.0",
1103
+ "@rathnasgala2/schemas@3.12.0|require-from-string@2.0.2"
1104
1104
  ]
1105
1105
  },
1106
1106
  {
1107
- "ref": "@rathnasgala2/schemas@3.11.0|fast-deep-equal@3.1.3"
1107
+ "ref": "@rathnasgala2/schemas@3.12.0|fast-deep-equal@3.1.3"
1108
1108
  },
1109
1109
  {
1110
- "ref": "@rathnasgala2/schemas@3.11.0|fast-uri@3.1.8"
1110
+ "ref": "@rathnasgala2/schemas@3.12.0|fast-uri@3.1.8"
1111
1111
  },
1112
1112
  {
1113
- "ref": "@rathnasgala2/schemas@3.11.0|json-schema-traverse@1.0.0"
1113
+ "ref": "@rathnasgala2/schemas@3.12.0|json-schema-traverse@1.0.0"
1114
1114
  },
1115
1115
  {
1116
- "ref": "@rathnasgala2/schemas@3.11.0|require-from-string@2.0.2"
1116
+ "ref": "@rathnasgala2/schemas@3.12.0|require-from-string@2.0.2"
1117
1117
  },
1118
1118
  {
1119
1119
  "ref": "pkg:npm/semver@7.8.5"
@@ -867,7 +867,8 @@
867
867
  "maxItems": 32,
868
868
  "uniqueItems": true
869
869
  },
870
- "edition": { "$ref": "#/$defs/contentEdition" }
870
+ "edition": { "$ref": "#/$defs/contentEdition" },
871
+ "seo": { "$ref": "#/$defs/contentSeo" }
871
872
  },
872
873
  "additionalProperties": false,
873
874
  "dependentRequired": { "seriesOrder": ["series"] },
@@ -905,6 +906,24 @@
905
906
  "additionalProperties": false,
906
907
  "description": "Prism edition of the article whose slug is `of`. `sourceDigest` is the digest of that article body the edition was generated from; an edition whose `sourceDigest` differs from the current article body digest is stale and is not rendered."
907
908
  },
909
+ "contentSeo": {
910
+ "type": "object",
911
+ "required": [],
912
+ "properties": {
913
+ "title": {
914
+ "$ref": "#/$defs/plainText",
915
+ "x-gala-graphemeLength": { "minimum": 1, "maximum": 70 }
916
+ },
917
+ "description": {
918
+ "$ref": "#/$defs/plainText",
919
+ "x-gala-graphemeLength": { "minimum": 1, "maximum": 300 }
920
+ },
921
+ "canonicalUrl": { "$ref": "#/$defs/urlHttps" },
922
+ "noindex": { "type": "boolean" }
923
+ },
924
+ "additionalProperties": false,
925
+ "description": "SCHEMA-3.12.0: optional search overrides for one document. `title` replaces the page title in search results (the site suffix is still appended on non-home pages), `description` replaces the search description, `canonicalUrl` is an absolute HTTPS canonical for syndicated or moved content, and `noindex: true` keeps a listed document out of search engines. Every member is optional; absent members fall back to the document's own title and description."
926
+ },
908
927
  "contentBuildMediaFile": {
909
928
  "type": "object",
910
929
  "required": ["path", "sourceDigest", "mediaType", "byteLength"],
@@ -64,6 +64,7 @@
64
64
  },
65
65
  "newsletter": { "enum": ["ineligible", "eligible"] },
66
66
  "edition": { "$ref": "#/$defs/contentEdition" },
67
+ "seo": { "$ref": "#/$defs/contentSeo" },
67
68
  "extensions": { "$ref": "#/$defs/extensionMap" }
68
69
  },
69
70
  "additionalProperties": false,
@@ -233,6 +234,24 @@
233
234
  "additionalProperties": false,
234
235
  "description": "Prism edition of the article whose slug is `of`. `sourceDigest` is the digest of that article body the edition was generated from; an edition whose `sourceDigest` differs from the current article body digest is stale and is not rendered."
235
236
  },
237
+ "contentSeo": {
238
+ "type": "object",
239
+ "required": [],
240
+ "properties": {
241
+ "title": {
242
+ "$ref": "#/$defs/plainText",
243
+ "x-gala-graphemeLength": { "minimum": 1, "maximum": 70 }
244
+ },
245
+ "description": {
246
+ "$ref": "#/$defs/plainText",
247
+ "x-gala-graphemeLength": { "minimum": 1, "maximum": 300 }
248
+ },
249
+ "canonicalUrl": { "$ref": "#/$defs/urlHttps" },
250
+ "noindex": { "type": "boolean" }
251
+ },
252
+ "additionalProperties": false,
253
+ "description": "SCHEMA-3.12.0: optional search overrides for one document. `title` replaces the page title in search results (the site suffix is still appended on non-home pages), `description` replaces the search description, `canonicalUrl` is an absolute HTTPS canonical for syndicated or moved content, and `noindex: true` keeps a listed document out of search engines. Every member is optional; absent members fall back to the document's own title and description."
254
+ },
236
255
  "extensionMap": {
237
256
  "type": "object",
238
257
  "maxProperties": 32,