@rathnasgala2/schemas 3.24.0 → 3.25.1

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.
Files changed (61) hide show
  1. package/THIRD_PARTY_LICENSES.json +1 -1
  2. package/diagnostics/diagnostic-map.json +264 -0
  3. package/docs/catalogs/app-components.json +239 -1
  4. package/docs/catalogs/app-routes.json +69 -1
  5. package/docs/catalogs/schema-inventory.json +7 -7
  6. package/examples/valid/build-input/rules.json +118 -0
  7. package/examples/valid/content-frontmatter/rules.json +11 -0
  8. package/examples/valid/deployment-receipt/rules.json +150 -0
  9. package/examples/valid/problem/rules.json +64 -0
  10. package/examples/valid/publication/rules.json +107 -0
  11. package/fixtures/boundary/build-input/rules.json +127 -0
  12. package/fixtures/boundary/content-frontmatter/rules.json +11 -0
  13. package/fixtures/boundary/deployment-receipt/rules.json +163 -0
  14. package/fixtures/boundary/problem/rules.json +64 -0
  15. package/fixtures/boundary/publication/rules.json +116 -0
  16. package/fixtures/invalid/build-input/REQUEST_FIELD_UNKNOWN/cases.json +38 -0
  17. package/fixtures/invalid/build-input/SCHEMA_ENUM_INVALID/cases.json +18 -0
  18. package/fixtures/invalid/build-input/SCHEMA_NUMBER_TOO_LARGE/cases.json +11 -0
  19. package/fixtures/invalid/build-input/SCHEMA_NUMBER_TOO_SMALL/cases.json +44 -0
  20. package/fixtures/invalid/build-input/SCHEMA_PATTERN_INVALID/cases.json +9 -0
  21. package/fixtures/invalid/build-input/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +18 -0
  22. package/fixtures/invalid/build-input/SCHEMA_TYPE_INVALID/cases.json +89 -0
  23. package/fixtures/invalid/content-frontmatter/SCHEMA_PATTERN_INVALID/cases.json +9 -0
  24. package/fixtures/invalid/content-frontmatter/SCHEMA_TYPE_INVALID/cases.json +9 -0
  25. package/fixtures/invalid/deployment-receipt/REQUEST_FIELD_UNKNOWN/cases.json +51 -0
  26. package/fixtures/invalid/deployment-receipt/SCHEMA_ARRAY_TOO_LONG/cases.json +15 -0
  27. package/fixtures/invalid/deployment-receipt/SCHEMA_ENUM_INVALID/cases.json +11 -0
  28. package/fixtures/invalid/deployment-receipt/SCHEMA_NUMBER_TOO_SMALL/cases.json +66 -0
  29. package/fixtures/invalid/deployment-receipt/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +101 -0
  30. package/fixtures/invalid/deployment-receipt/SCHEMA_TYPE_INVALID/cases.json +108 -0
  31. package/fixtures/invalid/problem/REQUEST_FIELD_UNKNOWN/cases.json +15 -0
  32. package/fixtures/invalid/problem/SCHEMA_NUMBER_TOO_SMALL/cases.json +44 -0
  33. package/fixtures/invalid/problem/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +56 -0
  34. package/fixtures/invalid/problem/SCHEMA_TYPE_INVALID/cases.json +53 -0
  35. package/fixtures/invalid/publication/REQUEST_FIELD_UNKNOWN/cases.json +38 -0
  36. package/fixtures/invalid/publication/SCHEMA_ENUM_INVALID/cases.json +18 -0
  37. package/fixtures/invalid/publication/SCHEMA_NUMBER_TOO_LARGE/cases.json +13 -0
  38. package/fixtures/invalid/publication/SCHEMA_NUMBER_TOO_SMALL/cases.json +46 -0
  39. package/fixtures/invalid/publication/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +18 -0
  40. package/fixtures/invalid/publication/SCHEMA_TYPE_INVALID/cases.json +80 -0
  41. package/fixtures/manifest.json +2034 -10
  42. package/fixtures/unknown-field/build-input/rules.json +63 -0
  43. package/fixtures/unknown-field/content-frontmatter/rules.json +2 -0
  44. package/fixtures/unknown-field/deployment-receipt/rules.json +76 -0
  45. package/fixtures/unknown-field/problem/rules.json +30 -0
  46. package/fixtures/unknown-field/publication/rules.json +61 -0
  47. package/generated/browser/validator-core.mjs +3 -3
  48. package/generated/typescript/contracts/build-input.d.ts +24 -0
  49. package/generated/typescript/contracts/content-frontmatter.d.ts +3 -0
  50. package/generated/typescript/contracts/deployment-receipt.d.ts +18 -0
  51. package/generated/typescript/contracts/problem.d.ts +6 -0
  52. package/generated/typescript/contracts/publication.d.ts +21 -0
  53. package/openapi/http-catalog.json +28 -2
  54. package/openapi/openapi.yaml +487 -6
  55. package/package.json +1 -1
  56. package/sbom.cdx.json +23 -23
  57. package/schemas/build-input.schema.json +47 -0
  58. package/schemas/content-frontmatter.schema.json +6 -0
  59. package/schemas/deployment-receipt.schema.json +35 -0
  60. package/schemas/problem.schema.json +17 -0
  61. package/schemas/publication.schema.json +41 -0
@@ -1394,6 +1394,9 @@ components:
1394
1394
  `gala/publication.json`. An absent member is preserved. `null`
1395
1395
  resets `description` to the publication title (the file requires a
1396
1396
  description); `null` clears `defaultImageRef` and `crawlers`.
1397
+ `listing`, `aiRights` and `performance` (SCHEMA-3.25.1, the
1398
+ `publication.schema.json` 3.25.0 members) follow `crawlers`: absent
1399
+ keeps the stored value, an object replaces it whole, `null` clears it.
1397
1400
  `title`, `defaultLanguage` and `socialLinks` cannot be cleared.
1398
1401
  `socialLinks` (max 32, the publication file's own limit) replaces
1399
1402
  the whole list. `canonicalBase` is never client-settable: it changes
@@ -1401,6 +1404,10 @@ components:
1401
1404
  `422 VALIDATION_FAILED` pointed at `/publicationProfile`; member
1402
1405
  failures point at `/publicationProfile/<member>`.
1403
1406
  properties:
1407
+ aiRights:
1408
+ oneOf:
1409
+ - $ref: "#/components/schemas/PortablePublicationAiRights"
1410
+ - type: "null"
1404
1411
  crawlers:
1405
1412
  oneOf:
1406
1413
  - $ref: "#/components/schemas/PortablePublicationCrawlers"
@@ -1420,6 +1427,14 @@ components:
1420
1427
  maximum: 300
1421
1428
  minimum: 1
1422
1429
  - type: "null"
1430
+ listing:
1431
+ oneOf:
1432
+ - $ref: "#/components/schemas/PortablePublicationListing"
1433
+ - type: "null"
1434
+ performance:
1435
+ oneOf:
1436
+ - $ref: "#/components/schemas/PortablePublicationPerformance"
1437
+ - type: "null"
1423
1438
  socialLinks:
1424
1439
  items:
1425
1440
  $ref: "#/components/schemas/PortablePublicationSocialLink"
@@ -1473,12 +1488,18 @@ components:
1473
1488
  `contentId` is the header's `id`; `status` is the header's `status`
1474
1489
  upper-cased to this contract's enum style. `publishAfter`
1475
1490
  (SCHEMA-3.19.0, optional and nullable) is the header's staggered-release
1476
- date.
1491
+ date. `deleteDate` (SCHEMA-3.25.1, optional and nullable) is the
1492
+ header's scheduled-removal date.
1477
1493
  properties:
1478
1494
  contentId:
1479
1495
  $ref: "#/components/schemas/PortableContentFrontmatterStableId"
1480
1496
  createdAt:
1481
1497
  $ref: "#/components/schemas/PortableContentFrontmatterRfc3339"
1498
+ deleteDate:
1499
+ description: "SCHEMA-3.25.1: the header's `deleteDate` date (`YYYY-MM-DD`) of an article scheduled for removal, `null` or absent when the header carries none."
1500
+ oneOf:
1501
+ - $ref: "#/components/schemas/PortableContentFrontmatterDeleteDate"
1502
+ - type: "null"
1482
1503
  language:
1483
1504
  $ref: "#/components/schemas/PortableContentFrontmatterBcp47"
1484
1505
  publishAfter:
@@ -1573,8 +1594,12 @@ components:
1573
1594
  as the inventory, and returned on every page of the inventory, not
1574
1595
  only the first -- the editor needs these facts regardless of which
1575
1596
  page it opened. Carries no personal data beyond what each author
1576
- file itself already publishes.
1597
+ file itself already publishes. `listing`, `aiRights` and `performance`
1598
+ (SCHEMA-3.25.1, optional) are the publication file's 3.25.0 members,
1599
+ absent when the file carries none.
1577
1600
  properties:
1601
+ aiRights:
1602
+ $ref: "#/components/schemas/PortablePublicationAiRights"
1578
1603
  authors:
1579
1604
  items:
1580
1605
  $ref: "#/components/schemas/ContentPublicationAuthorSummary"
@@ -1591,6 +1616,10 @@ components:
1591
1616
  x-gala-graphemeLength:
1592
1617
  maximum: 500
1593
1618
  minimum: 1
1619
+ listing:
1620
+ $ref: "#/components/schemas/PortablePublicationListing"
1621
+ performance:
1622
+ $ref: "#/components/schemas/PortablePublicationPerformance"
1594
1623
  socialLinks:
1595
1624
  items:
1596
1625
  $ref: "#/components/schemas/PortablePublicationSocialLink"
@@ -4776,6 +4805,48 @@ components:
4776
4805
  type: object
4777
4806
  GetPlatformPlansResponse:
4778
4807
  $ref: "#/components/schemas/PlatformPlanCapacityRelease"
4808
+ GetPlatformPrismGenerationsResponse:
4809
+ additionalProperties: false
4810
+ allOf:
4811
+ - else:
4812
+ properties:
4813
+ nextCursor:
4814
+ type: "null"
4815
+ if:
4816
+ properties:
4817
+ hasMore:
4818
+ not:
4819
+ enum:
4820
+ - false
4821
+ type: boolean
4822
+ x-gala-const: true
4823
+ required:
4824
+ - hasMore
4825
+ then:
4826
+ properties:
4827
+ nextCursor:
4828
+ type: string
4829
+ required:
4830
+ - nextCursor
4831
+ properties:
4832
+ hasMore:
4833
+ type: boolean
4834
+ items:
4835
+ items:
4836
+ $ref: "#/components/schemas/PlatformPrismGeneration"
4837
+ maxItems: 100
4838
+ type: array
4839
+ nextCursor:
4840
+ description: Opaque cursor for the next page. Present and non-null exactly when `hasMore` is true; absent or null when `hasMore` is false.
4841
+ maxLength: 2048
4842
+ minLength: 1
4843
+ type:
4844
+ - string
4845
+ - "null"
4846
+ required:
4847
+ - items
4848
+ - hasMore
4849
+ type: object
4779
4850
  GetPlatformSettingsByKeyResponse:
4780
4851
  $ref: "#/components/schemas/PlatformSetting"
4781
4852
  GetPlatformSettingsOverridesByKindByIdByKeyResponse:
@@ -5693,7 +5764,7 @@ components:
5693
5764
  additionalProperties: false
5694
5765
  properties:
5695
5766
  reasonCode:
5696
- description: "A free string. Known values: RUN_NOT_STARTED, BUILD_FAILED, RUN_CANCELLED, RUN_TIMED_OUT, WORKFLOW_UNAVAILABLE, DEPLOY_FAILED, PAGES_NOT_AVAILABLE, REPORT_FAILED, LIVE_CHECK_FAILED, CHANGE_CLOSED_ON_GITHUB and, new in 3.17.0, DESTINATION_BUSY_TIMEOUT, DESTINATION_FENCE_EXPIRED, CANONICAL_BASE_MISMATCH, DOMAIN_NOT_READY (the same codes as `OperationReason`). Clients must tolerate other values."
5767
+ description: "A free string. Known values: RUN_NOT_STARTED, BUILD_FAILED, RUN_CANCELLED, RUN_TIMED_OUT, WORKFLOW_UNAVAILABLE, DEPLOY_FAILED, PAGES_NOT_AVAILABLE, REPORT_FAILED, LIVE_CHECK_FAILED, CHANGE_CLOSED_ON_GITHUB and, new in 3.17.0, DESTINATION_BUSY_TIMEOUT, DESTINATION_FENCE_EXPIRED, CANONICAL_BASE_MISMATCH, DOMAIN_NOT_READY and, new in 3.25.0, PAGE_LOSS_GUARD (the same codes as `OperationReason`). Clients must tolerate other values."
5697
5768
  maxLength: 80
5698
5769
  minLength: 1
5699
5770
  type: string
@@ -6479,10 +6550,14 @@ components:
6479
6550
  format: uuid
6480
6551
  pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
6481
6552
  type: string
6553
+ performance:
6554
+ $ref: "#/components/schemas/PortableDeploymentReceiptDeploymentPerformance"
6482
6555
  phase:
6483
6556
  $ref: "#/components/schemas/OperationPhase"
6484
6557
  reason:
6485
6558
  $ref: "#/components/schemas/OperationReason"
6559
+ reasonDetails:
6560
+ $ref: "#/components/schemas/PageLossGuardDetails"
6486
6561
  recoveryActions:
6487
6562
  items:
6488
6563
  maxLength: 80
@@ -7455,6 +7530,8 @@ components:
7455
7530
  format: uuid
7456
7531
  pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
7457
7532
  type: string
7533
+ performance:
7534
+ $ref: "#/components/schemas/PortableDeploymentReceiptDeploymentPerformance"
7458
7535
  phase:
7459
7536
  enum:
7460
7537
  - accepted
@@ -7466,6 +7543,8 @@ components:
7466
7543
  type: string
7467
7544
  reason:
7468
7545
  $ref: "#/components/schemas/OperationReason"
7546
+ reasonDetails:
7547
+ $ref: "#/components/schemas/PageLossGuardDetails"
7469
7548
  recoveryActions:
7470
7549
  items:
7471
7550
  maxLength: 80
@@ -7594,7 +7673,10 @@ components:
7594
7673
  run settled with no receipt), `CANONICAL_BASE_MISMATCH` (the site's
7595
7674
  canonical base was not the address it is served from when the
7596
7675
  operation was dispatched) and `DOMAIN_NOT_READY` (a custom domain was
7597
- part-way through its switch and no origin could be verified).
7676
+ part-way through its switch and no origin could be verified). New in
7677
+ 3.25.0: `PAGE_LOSS_GUARD` (the publish would have removed too many pages
7678
+ from the live site, so authorization was refused and nothing was
7679
+ deployed; the operation's `reasonDetails` carry the counts).
7598
7680
  maxLength: 64
7599
7681
  minLength: 3
7600
7682
  pattern: ^[A-Z][A-Z0-9_]{2,63}$
@@ -7794,6 +7876,34 @@ components:
7794
7876
  - REVOKED
7795
7877
  - EXPIRED
7796
7878
  type: string
7879
+ PageLossGuardDetails:
7880
+ additionalProperties: false
7881
+ description: |
7882
+ SCHEMA-3.25.0. Present on an operation read when `reason` is
7883
+ `PAGE_LOSS_GUARD`: the candidate build has fewer pages than the last
7884
+ successful deployment of the same site and target. `lostPageCount` is
7885
+ `previousPageCount - candidatePageCount`; `permittedLoss` is the loss
7886
+ the platform settings allow. A person who accepts the loss publishes
7887
+ again with `allowPageLoss: true`.
7888
+ properties:
7889
+ candidatePageCount:
7890
+ minimum: 0
7891
+ type: integer
7892
+ lostPageCount:
7893
+ minimum: 0
7894
+ type: integer
7895
+ permittedLoss:
7896
+ minimum: 0
7897
+ type: integer
7898
+ previousPageCount:
7899
+ minimum: 0
7900
+ type: integer
7901
+ required:
7902
+ - previousPageCount
7903
+ - candidatePageCount
7904
+ - lostPageCount
7905
+ - permittedLoss
7906
+ type: object
7797
7907
  PasskeyState:
7798
7908
  enum:
7799
7909
  - ACTIVE
@@ -8660,6 +8770,36 @@ components:
8660
8770
  - PRO
8661
8771
  - BUSINESS
8662
8772
  type: string
8773
+ PlatformPrismGeneration:
8774
+ additionalProperties: false
8775
+ description: SCHEMA-3.25.0. One Prism generation as the operator list shows it, ownership and state only, never article text or the candidate body.
8776
+ properties:
8777
+ createdAt:
8778
+ $ref: "#/components/schemas/PortableProblemRfc3339"
8779
+ editionKind:
8780
+ $ref: "#/components/schemas/PrismEditionKind"
8781
+ generationId:
8782
+ format: uuid
8783
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
8784
+ type: string
8785
+ organizationId:
8786
+ format: uuid
8787
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
8788
+ type: string
8789
+ publicationId:
8790
+ format: uuid
8791
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
8792
+ type: string
8793
+ state:
8794
+ $ref: "#/components/schemas/PrismGenerationState"
8795
+ required:
8796
+ - generationId
8797
+ - organizationId
8798
+ - publicationId
8799
+ - editionKind
8800
+ - state
8801
+ - createdAt
8802
+ type: object
8663
8803
  PlatformSetting:
8664
8804
  additionalProperties: false
8665
8805
  description: "An app-wide setting: the active release value, or the default when none is released."
@@ -9047,6 +9187,10 @@ components:
9047
9187
  minimum: 1
9048
9188
  required: []
9049
9189
  type: object
9190
+ PortableContentFrontmatterDeleteDate:
9191
+ description: "SCHEMA-3.25.0: the calendar date (`YYYY-MM-DD`, day precision, read in the publication's staggered-release timezone) on or after which Galascribe removes this article from the published site: it leaves every listing, feed, sitemap and search index and its route renders a removed-post notice. Same format as `publishAfter`; it must be later than `publishAfter` and `date` when both exist. The API enforces that rule; the schema only fixes the shape."
9192
+ pattern: ^\d{4}-\d{2}-\d{2}$
9193
+ type: string
9050
9194
  PortableContentFrontmatterDigest:
9051
9195
  pattern: ^sha256:[0-9a-f]{64}$
9052
9196
  type: string
@@ -9114,6 +9258,8 @@ components:
9114
9258
  type: array
9115
9259
  createdAt:
9116
9260
  $ref: "#/components/schemas/PortableContentFrontmatterRfc3339"
9261
+ deleteDate:
9262
+ $ref: "#/components/schemas/PortableContentFrontmatterDeleteDate"
9117
9263
  description:
9118
9264
  $ref: "#/components/schemas/PortableContentFrontmatterPlainText"
9119
9265
  x-gala-graphemeLength:
@@ -12988,6 +13134,57 @@ components:
12988
13134
  - evidenceDigest
12989
13135
  - probes
12990
13136
  type: object
13137
+ PortableDeploymentReceiptDeploymentPerformance:
13138
+ additionalProperties: false
13139
+ description: "SCHEMA-3.25.0: the publish kernel's size-budget summary of the final artifact. `budgets` are the effective byte budgets; `overBudgetCount` counts every page asset over budget; `overBudget` lists at most 20, largest first. Informational: it never fails a publish."
13140
+ properties:
13141
+ budgets:
13142
+ additionalProperties: false
13143
+ properties:
13144
+ cssBytes:
13145
+ minimum: 1024
13146
+ type: integer
13147
+ htmlBytes:
13148
+ minimum: 1024
13149
+ type: integer
13150
+ jsBytes:
13151
+ minimum: 1024
13152
+ type: integer
13153
+ required: []
13154
+ type: object
13155
+ overBudget:
13156
+ items:
13157
+ additionalProperties: false
13158
+ properties:
13159
+ budget:
13160
+ minimum: 1024
13161
+ type: integer
13162
+ bytes:
13163
+ minimum: 0
13164
+ type: integer
13165
+ kind:
13166
+ enum:
13167
+ - html
13168
+ - css
13169
+ - js
13170
+ path:
13171
+ $ref: "#/components/schemas/PortableDeploymentReceiptRepoRelativePath"
13172
+ required:
13173
+ - path
13174
+ - kind
13175
+ - bytes
13176
+ - budget
13177
+ type: object
13178
+ maxItems: 20
13179
+ type: array
13180
+ overBudgetCount:
13181
+ minimum: 0
13182
+ type: integer
13183
+ required:
13184
+ - budgets
13185
+ - overBudgetCount
13186
+ - overBudget
13187
+ type: object
12991
13188
  PortableDeploymentReceiptDeploymentWarning:
12992
13189
  oneOf:
12993
13190
  - allOf:
@@ -13837,6 +14034,8 @@ components:
13837
14034
  - superseded
13838
14035
  - unknown-reconciling
13839
14036
  - rolled-back
14037
+ performance:
14038
+ $ref: "#/components/schemas/PortableDeploymentReceiptDeploymentPerformance"
13840
14039
  provenanceDigest:
13841
14040
  $ref: "#/components/schemas/PortableDeploymentReceiptDigest"
13842
14041
  publisher:
@@ -14754,6 +14953,28 @@ components:
14754
14953
  x-gala-graphemeLength:
14755
14954
  maximum: 500
14756
14955
  minimum: 0
14956
+ details:
14957
+ additionalProperties: false
14958
+ description: "SCHEMA-3.25.1, optional, carried by a PAGE_LOSS_GUARD problem and absent from every other: the counts behind the refusal, the same members as the `PageLossGuardDetails` operation `reasonDetails`. The candidate build has fewer pages than the last successful deployment; `lostPageCount` is `previousPageCount - candidatePageCount` and `permittedLoss` is the loss the platform settings allow."
14959
+ properties:
14960
+ candidatePageCount:
14961
+ minimum: 0
14962
+ type: integer
14963
+ lostPageCount:
14964
+ minimum: 0
14965
+ type: integer
14966
+ permittedLoss:
14967
+ minimum: 0
14968
+ type: integer
14969
+ previousPageCount:
14970
+ minimum: 0
14971
+ type: integer
14972
+ required:
14973
+ - previousPageCount
14974
+ - candidatePageCount
14975
+ - lostPageCount
14976
+ - permittedLoss
14977
+ type: object
14757
14978
  domainState:
14758
14979
  description: "SCHEMA-3.17.0, optional, carried by a CANONICAL_BASE_MISMATCH problem and absent from every other: the state of the site's custom-domain binding that decided `expectedBase` (a `DomainBindingState` value such as `CERTIFICATE_PENDING` or `ACTIVE`), absent when the site has no custom domain. A client shows a value it does not know as is."
14759
14980
  maxLength: 80
@@ -14893,6 +15114,24 @@ components:
14893
15114
  format: uri
14894
15115
  pattern: ^https://(?![^/?#]*@)
14895
15116
  type: string
15117
+ PortablePublicationAiRights:
15118
+ additionalProperties: false
15119
+ description: "SCHEMA-3.25.0: how AI systems may use the writing. `search` covers search and answer bots, `training` covers training crawlers. When present it wins over `crawlers.ai`; when absent, `crawlers.ai` allow means both allow and block means both block. `licenseUrl` is the optional https URL of the license terms."
15120
+ properties:
15121
+ licenseUrl:
15122
+ $ref: "#/components/schemas/PortablePublicationUrlHttps"
15123
+ search:
15124
+ enum:
15125
+ - allow
15126
+ - block
15127
+ training:
15128
+ enum:
15129
+ - allow
15130
+ - block
15131
+ required:
15132
+ - search
15133
+ - training
15134
+ type: object
14896
15135
  PortablePublicationBcp47:
14897
15136
  description: Structurally valid canonical BCP-47 language tag.
14898
15137
  format: gala-bcp47
@@ -14913,6 +15152,36 @@ components:
14913
15152
  required:
14914
15153
  - ai
14915
15154
  type: object
15155
+ PortablePublicationListing:
15156
+ additionalProperties: false
15157
+ description: "SCHEMA-3.25.0: listing settings. `pageSize` is the number of posts on each listing page (1 to 50); an absent member means 10."
15158
+ properties:
15159
+ pageSize:
15160
+ maximum: 50
15161
+ minimum: 1
15162
+ type: integer
15163
+ required: []
15164
+ type: object
15165
+ PortablePublicationPerformance:
15166
+ additionalProperties: false
15167
+ description: "SCHEMA-3.25.0: size budgets in bytes, each at least 1024 and optional. `htmlBytes` bounds a page's HTML, `cssBytes` and `jsBytes` bound the sum of the same-origin stylesheets and scripts a page links. A page over budget is reported; a budget never fails a build."
15168
+ properties:
15169
+ budgets:
15170
+ additionalProperties: false
15171
+ properties:
15172
+ cssBytes:
15173
+ minimum: 1024
15174
+ type: integer
15175
+ htmlBytes:
15176
+ minimum: 1024
15177
+ type: integer
15178
+ jsBytes:
15179
+ minimum: 1024
15180
+ type: integer
15181
+ required: []
15182
+ type: object
15183
+ required: []
15184
+ type: object
14916
15185
  PortablePublicationPlainLabel:
14917
15186
  description: Normalized Unicode plain text without markup, controls, or bidi overrides.
14918
15187
  format: gala-plain-label
@@ -15730,6 +15999,10 @@ components:
15730
15999
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdChangesPublishRequest:
15731
16000
  additionalProperties: false
15732
16001
  properties:
16002
+ allowPageLoss:
16003
+ default: false
16004
+ description: "SCHEMA-3.25.0: true accepts that this publish may remove many pages from the live site. The server stores it with the operation and skips the page-loss guard; absent or false keeps the guard on (a publish that would lose too many pages ends `FAILED_NO_EFFECT` with reason `PAGE_LOSS_GUARD`)."
16005
+ type: boolean
15733
16006
  changeIds:
15734
16007
  items:
15735
16008
  format: uuid
@@ -15858,7 +16131,12 @@ components:
15858
16131
  (SCHEMA-3.19.0) is refused with `409 STAGGERED_RELEASE_DISABLED` while the
15859
16132
  publication's staggered release is off (`publishingPolicy.staggeredRelease`), and
15860
16133
  with `422 PUBLISH_AFTER_ON_PUBLISHED_POST` when its `status` is not
15861
- `draft`; `errors[].pointer` is `/documents/<path>`.
16134
+ `draft`; `errors[].pointer` is `/documents/<path>`. A document whose
16135
+ `deleteDate` (SCHEMA-3.25.0) is not later than its `publishAfter` or
16136
+ `date` is refused with the content-change rejection reason
16137
+ `DELETE_DATE_NOT_AFTER_RELEASE` (SCHEMA-3.25.1), alongside the other
16138
+ reasons the API reports for cross-document rules; those reasons are
16139
+ not an enumerated schema member.
15862
16140
  Assets are images only (PNG, JPEG, WebP, GIF, AVIF; SVG is refused):
15863
16141
  at most 20 per change, each at most 5 MiB and together at most
15864
16142
  20 MiB, measured on the decoded bytes -- `assets[].bytesBase64` is
@@ -16228,6 +16506,10 @@ components:
16228
16506
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdPublishesRequest:
16229
16507
  additionalProperties: false
16230
16508
  properties:
16509
+ allowPageLoss:
16510
+ default: false
16511
+ description: "SCHEMA-3.25.0: true accepts that this publish may remove many pages from the live site. The server stores it with the operation and skips the page-loss guard; absent or false keeps the guard on (a publish that would lose too many pages ends `FAILED_NO_EFFECT` with reason `PAGE_LOSS_GUARD`)."
16512
+ type: boolean
16231
16513
  reviewId:
16232
16514
  format: uuid
16233
16515
  pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
@@ -16677,6 +16959,10 @@ components:
16677
16959
  person confirmed. The server publishes that head only while it is still
16678
16960
  the repository's head.
16679
16961
  properties:
16962
+ allowPageLoss:
16963
+ default: false
16964
+ description: "SCHEMA-3.25.0: true accepts that this publish may remove many pages from the live site. The server stores it with the operation and skips the page-loss guard; absent or false keeps the guard on (a publish that would lose too many pages ends `FAILED_NO_EFFECT` with reason `PAGE_LOSS_GUARD`)."
16965
+ type: boolean
16680
16966
  headCommit:
16681
16967
  $ref: "#/components/schemas/PortableDeploymentIntentGitObjectId"
16682
16968
  required:
@@ -17925,6 +18211,8 @@ components:
17925
18211
  format: uuid
17926
18212
  pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
17927
18213
  type: string
18214
+ performance:
18215
+ $ref: "#/components/schemas/PortableDeploymentReceiptDeploymentPerformance"
17928
18216
  provenanceDigest:
17929
18217
  pattern: ^sha256:[0-9a-f]{64}$
17930
18218
  type: string
@@ -19432,6 +19720,10 @@ components:
19432
19720
  manifestDigest:
19433
19721
  pattern: ^sha256:[0-9a-f]{64}$
19434
19722
  type: string
19723
+ pageCount:
19724
+ description: "SCHEMA-3.25.0: the number of `.html` files in the artifact. Optional so a kernel built before 3.25.0 still validates; an absent count exempts the deployment from the page-loss guard."
19725
+ minimum: 0
19726
+ type: integer
19435
19727
  pagesBuildVersion:
19436
19728
  description: |
19437
19729
  The Pages build version this deployment addresses, when the
@@ -59846,6 +60138,175 @@ paths:
59846
60138
  - NONE
59847
60139
  x-gala-success-category: update
59848
60140
  x-gala-tenant-scope: NONE
60141
+ /v2/platform/prism-generations:
60142
+ get:
60143
+ description: |
60144
+ Operators only (`ADMIN` or `ROOT`). Every Prism edition generation on
60145
+ the platform across all organizations, newest first, one keyset page at
60146
+ a time. Article text and candidate bodies are never exposed, only the
60147
+ generation's state, size and ownership.
60148
+ operationId: getPlatformPrismGenerations
60149
+ parameters:
60150
+ - $ref: "#/components/parameters/XCorrelationId"
60151
+ - description: Only generations in this state.
60152
+ example: CANDIDATE_READY
60153
+ in: query
60154
+ name: state
60155
+ required: false
60156
+ schema:
60157
+ $ref: "#/components/schemas/PrismGenerationState"
60158
+ - $ref: "#/components/parameters/Cursor"
60159
+ - $ref: "#/components/parameters/Limit"
60160
+ responses:
60161
+ "200":
60162
+ content:
60163
+ application/json:
60164
+ examples:
60165
+ nominal:
60166
+ summary: Nominal successful response
60167
+ value:
60168
+ hasMore: false
60169
+ items:
60170
+ - createdAt: "2026-10-10T12:00:00.000Z"
60171
+ editionKind: QUICK_READ
60172
+ generationId: 018f0000-0000-7000-8000-000000000001
60173
+ organizationId: 018f0000-0000-7000-8000-000000000003
60174
+ publicationId: 018f0000-0000-7000-8000-000000000002
60175
+ state: CANDIDATE_READY
60176
+ nextCursor: null
60177
+ schema:
60178
+ $ref: "#/components/schemas/GetPlatformPrismGenerationsResponse"
60179
+ description: list platform Prism generations succeeded
60180
+ headers:
60181
+ Cache-Control:
60182
+ $ref: "#/components/headers/CacheControlNoStore"
60183
+ X-Correlation-Id:
60184
+ $ref: "#/components/headers/XCorrelationId"
60185
+ "400":
60186
+ $ref: "#/components/responses/ValidationFailed"
60187
+ "401":
60188
+ $ref: "#/components/responses/PlatformAuthenticationRequired"
60189
+ "403":
60190
+ $ref: "#/components/responses/AuthorizationDenied"
60191
+ security:
60192
+ - browserSession: []
60193
+ summary: list platform Prism generations
60194
+ tags:
60195
+ - platform
60196
+ x-gala-activation-gate: MVP
60197
+ x-gala-activation-guards:
60198
+ - NONE
60199
+ x-gala-capability-key: platform.prism.view
60200
+ x-gala-concurrency: none
60201
+ x-gala-conditional-capabilities: []
60202
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
60203
+ x-gala-nullability: required-and-nullable-are-explicit
60204
+ x-gala-purpose: list platform Prism generations
60205
+ x-gala-reachable-problems:
60206
+ - AUTHENTICATION_REQUIRED
60207
+ - AUTHORIZATION_DENIED
60208
+ - REAUTH_REQUIRED
60209
+ - VALIDATION_FAILED
60210
+ x-gala-replay-identity: safe-query
60211
+ x-gala-state-guards:
60212
+ - NONE
60213
+ x-gala-success-category: query
60214
+ x-gala-tenant-scope: NONE
60215
+ /v2/platform/prism-generations:export:
60216
+ post:
60217
+ description: Operators only (`ADMIN` or `ROOT`), with recent authentication (`401 REAUTH_REQUIRED` when the session is stale). The answer is a UTF-8 CSV file with a header row (`generationId,organizationId,publicationId,editionKind,state,createdAt`) that the operator App saves as a download. A cell that starts with `=`, `+`, `-`, `@`, a tab or a carriage return is prefixed with an apostrophe so a spreadsheet does not run it as a formula.
60218
+ operationId: postPlatformPrismGenerationsExport
60219
+ parameters:
60220
+ - $ref: "#/components/parameters/XCorrelationId"
60221
+ - $ref: "#/components/parameters/XCsrfToken"
60222
+ responses:
60223
+ "200":
60224
+ content:
60225
+ text/csv:
60226
+ schema:
60227
+ format: binary
60228
+ type: string
60229
+ description: export platform Prism generations as CSV succeeded
60230
+ headers:
60231
+ Cache-Control:
60232
+ $ref: "#/components/headers/CacheControlNoStore"
60233
+ Content-Disposition:
60234
+ $ref: "#/components/headers/ContentDispositionAttachment"
60235
+ X-Content-Type-Options:
60236
+ $ref: "#/components/headers/XContentTypeOptionsNosniff"
60237
+ X-Correlation-Id:
60238
+ $ref: "#/components/headers/XCorrelationId"
60239
+ "400":
60240
+ $ref: "#/components/responses/ValidationFailed"
60241
+ "401":
60242
+ content:
60243
+ application/problem+json:
60244
+ examples:
60245
+ AUTHENTICATION_REQUIRED:
60246
+ summary: AUTHENTICATION_REQUIRED
60247
+ value:
60248
+ code: AUTHENTICATION_REQUIRED
60249
+ correlationId: 018f0000-0000-7000-8000-000000000001
60250
+ detail: See the operation contract.
60251
+ errors: []
60252
+ retryable: false
60253
+ schemaId: urn:gala:schema:problem:2.0.0
60254
+ schemaVersion: 2.0.0
60255
+ status: 401
60256
+ title: AUTHENTICATION_REQUIRED
60257
+ type: urn:gala:problem:authentication-required
60258
+ REAUTH_REQUIRED:
60259
+ summary: REAUTH_REQUIRED
60260
+ value:
60261
+ code: REAUTH_REQUIRED
60262
+ correlationId: 018f0000-0000-7000-8000-000000000001
60263
+ detail: See the operation contract.
60264
+ errors: []
60265
+ retryable: false
60266
+ schemaId: urn:gala:schema:problem:2.0.0
60267
+ schemaVersion: 2.0.0
60268
+ status: 401
60269
+ title: REAUTH_REQUIRED
60270
+ type: urn:gala:problem:reauth-required
60271
+ schema:
60272
+ $ref: "#/components/schemas/Problem"
60273
+ description: AUTHENTICATION_REQUIRED, REAUTH_REQUIRED
60274
+ headers:
60275
+ Cache-Control:
60276
+ $ref: "#/components/headers/CacheControlNoStore"
60277
+ X-Correlation-Id:
60278
+ $ref: "#/components/headers/XCorrelationId"
60279
+ x-gala-problem-codes:
60280
+ - AUTHENTICATION_REQUIRED
60281
+ - REAUTH_REQUIRED
60282
+ "403":
60283
+ $ref: "#/components/responses/AuthorizationDenied"
60284
+ security:
60285
+ - browserSession: []
60286
+ summary: export platform Prism generations as CSV
60287
+ tags:
60288
+ - platform
60289
+ x-gala-action-grant: none
60290
+ x-gala-activation-gate: MVP
60291
+ x-gala-activation-guards:
60292
+ - NONE
60293
+ x-gala-assurance-class: RECENT_AUTHENTICATION
60294
+ x-gala-capability-key: platform.prism.export
60295
+ x-gala-concurrency: none
60296
+ x-gala-conditional-capabilities: []
60297
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
60298
+ x-gala-nullability: required-and-nullable-are-explicit
60299
+ x-gala-purpose: export platform Prism generations as CSV
60300
+ x-gala-reachable-problems:
60301
+ - AUTHENTICATION_REQUIRED
60302
+ - AUTHORIZATION_DENIED
60303
+ - REAUTH_REQUIRED
60304
+ - VALIDATION_FAILED
60305
+ x-gala-replay-identity: natural-idempotent-state
60306
+ x-gala-state-guards:
60307
+ - NONE
60308
+ x-gala-success-category: protocol
60309
+ x-gala-tenant-scope: NONE
59849
60310
  /v2/platform/settings/overrides/{kind}/{id}/{key}:
59850
60311
  delete:
59851
60312
  description: |
@@ -70553,6 +71014,24 @@ paths:
70553
71014
  status: 409
70554
71015
  title: INVALID_SOURCE_STATE
70555
71016
  type: urn:gala:problem:invalid-source-state
71017
+ PAGE_LOSS_GUARD:
71018
+ summary: PAGE_LOSS_GUARD
71019
+ value:
71020
+ code: PAGE_LOSS_GUARD
71021
+ correlationId: 018f0000-0000-7000-8000-000000000001
71022
+ detail: See the operation contract.
71023
+ details:
71024
+ candidatePageCount: 40
71025
+ lostPageCount: 60
71026
+ permittedLoss: 25
71027
+ previousPageCount: 100
71028
+ errors: []
71029
+ retryable: false
71030
+ schemaId: urn:gala:schema:problem:2.0.0
71031
+ schemaVersion: 2.0.0
71032
+ status: 409
71033
+ title: PAGE_LOSS_GUARD
71034
+ type: urn:gala:problem:page-loss-guard
70556
71035
  WORKLOAD_REPLAYED:
70557
71036
  summary: WORKLOAD_REPLAYED
70558
71037
  value:
@@ -70568,7 +71047,7 @@ paths:
70568
71047
  type: urn:gala:problem:workload-replayed
70569
71048
  schema:
70570
71049
  $ref: "#/components/schemas/Problem"
70571
- description: DESTINATION_MUTATION_IN_PROGRESS, INVALID_SOURCE_STATE, WORKLOAD_REPLAYED
71050
+ description: DESTINATION_MUTATION_IN_PROGRESS, INVALID_SOURCE_STATE, PAGE_LOSS_GUARD, WORKLOAD_REPLAYED
70572
71051
  headers:
70573
71052
  Cache-Control:
70574
71053
  $ref: "#/components/headers/CacheControlNoStore"
@@ -70577,6 +71056,7 @@ paths:
70577
71056
  x-gala-problem-codes:
70578
71057
  - DESTINATION_MUTATION_IN_PROGRESS
70579
71058
  - INVALID_SOURCE_STATE
71059
+ - PAGE_LOSS_GUARD
70580
71060
  - WORKLOAD_REPLAYED
70581
71061
  "410":
70582
71062
  content:
@@ -70740,6 +71220,7 @@ paths:
70740
71220
  - DEPENDENCY_UNAVAILABLE
70741
71221
  - DESTINATION_MUTATION_IN_PROGRESS
70742
71222
  - INVALID_SOURCE_STATE
71223
+ - PAGE_LOSS_GUARD
70743
71224
  - RATE_LIMITED
70744
71225
  - REQUEST_FIELD_UNKNOWN
70745
71226
  - VALIDATION_FAILED