@rathnasgala2/schemas 3.24.0 → 3.25.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.
Files changed (52) hide show
  1. package/THIRD_PARTY_LICENSES.json +1 -1
  2. package/diagnostics/diagnostic-map.json +222 -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 +6 -6
  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/publication/rules.json +107 -0
  10. package/fixtures/boundary/build-input/rules.json +127 -0
  11. package/fixtures/boundary/content-frontmatter/rules.json +11 -0
  12. package/fixtures/boundary/deployment-receipt/rules.json +163 -0
  13. package/fixtures/boundary/publication/rules.json +116 -0
  14. package/fixtures/invalid/build-input/REQUEST_FIELD_UNKNOWN/cases.json +38 -0
  15. package/fixtures/invalid/build-input/SCHEMA_ENUM_INVALID/cases.json +18 -0
  16. package/fixtures/invalid/build-input/SCHEMA_NUMBER_TOO_LARGE/cases.json +11 -0
  17. package/fixtures/invalid/build-input/SCHEMA_NUMBER_TOO_SMALL/cases.json +44 -0
  18. package/fixtures/invalid/build-input/SCHEMA_PATTERN_INVALID/cases.json +9 -0
  19. package/fixtures/invalid/build-input/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +18 -0
  20. package/fixtures/invalid/build-input/SCHEMA_TYPE_INVALID/cases.json +89 -0
  21. package/fixtures/invalid/content-frontmatter/SCHEMA_PATTERN_INVALID/cases.json +9 -0
  22. package/fixtures/invalid/content-frontmatter/SCHEMA_TYPE_INVALID/cases.json +9 -0
  23. package/fixtures/invalid/deployment-receipt/REQUEST_FIELD_UNKNOWN/cases.json +51 -0
  24. package/fixtures/invalid/deployment-receipt/SCHEMA_ARRAY_TOO_LONG/cases.json +15 -0
  25. package/fixtures/invalid/deployment-receipt/SCHEMA_ENUM_INVALID/cases.json +11 -0
  26. package/fixtures/invalid/deployment-receipt/SCHEMA_NUMBER_TOO_SMALL/cases.json +66 -0
  27. package/fixtures/invalid/deployment-receipt/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +101 -0
  28. package/fixtures/invalid/deployment-receipt/SCHEMA_TYPE_INVALID/cases.json +108 -0
  29. package/fixtures/invalid/publication/REQUEST_FIELD_UNKNOWN/cases.json +38 -0
  30. package/fixtures/invalid/publication/SCHEMA_ENUM_INVALID/cases.json +18 -0
  31. package/fixtures/invalid/publication/SCHEMA_NUMBER_TOO_LARGE/cases.json +13 -0
  32. package/fixtures/invalid/publication/SCHEMA_NUMBER_TOO_SMALL/cases.json +46 -0
  33. package/fixtures/invalid/publication/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +18 -0
  34. package/fixtures/invalid/publication/SCHEMA_TYPE_INVALID/cases.json +80 -0
  35. package/fixtures/manifest.json +1710 -8
  36. package/fixtures/unknown-field/build-input/rules.json +63 -0
  37. package/fixtures/unknown-field/content-frontmatter/rules.json +2 -0
  38. package/fixtures/unknown-field/deployment-receipt/rules.json +76 -0
  39. package/fixtures/unknown-field/publication/rules.json +61 -0
  40. package/generated/browser/validator-core.mjs +3 -3
  41. package/generated/typescript/contracts/build-input.d.ts +24 -0
  42. package/generated/typescript/contracts/content-frontmatter.d.ts +3 -0
  43. package/generated/typescript/contracts/deployment-receipt.d.ts +18 -0
  44. package/generated/typescript/contracts/publication.d.ts +21 -0
  45. package/openapi/http-catalog.json +28 -2
  46. package/openapi/openapi.yaml +353 -2
  47. package/package.json +1 -1
  48. package/sbom.cdx.json +23 -23
  49. package/schemas/build-input.schema.json +47 -0
  50. package/schemas/content-frontmatter.schema.json +6 -0
  51. package/schemas/deployment-receipt.schema.json +35 -0
  52. package/schemas/publication.schema.json +41 -0
@@ -1,6 +1,12 @@
1
1
  // Generated from urn:gala:schema:build-input:2.0.0; sourceDesignRevision=a53052955ceb6c1aa10c886289dc832eedfe6de0a00004df07d353ac19c4403a.
2
2
  // Do not edit.
3
3
 
4
+ export type BuildInputAiRights = Readonly<{
5
+ readonly licenseUrl?: BuildInputUrlHttps;
6
+ readonly search: 'allow' | 'block';
7
+ readonly training: 'allow' | 'block';
8
+ }>;
9
+
4
10
  export type BuildInputAnalyticsConfig = Readonly<{
5
11
  readonly consent: Readonly<{
6
12
  readonly policy: 'opt-in';
@@ -158,6 +164,7 @@ export type BuildInputContentEdition = Readonly<{
158
164
  export type BuildInputContentFrontmatterNormalized = Readonly<{
159
165
  readonly authorIds: ReadonlyArray<BuildInputStableId>;
160
166
  readonly createdAt: BuildInputRfc3339;
167
+ readonly deleteDate?: BuildInputDeleteDate;
161
168
  readonly description?: BuildInputPlainText;
162
169
  readonly edition?: BuildInputContentEdition;
163
170
  readonly hero?: BuildInputResolvedMedia;
@@ -187,6 +194,8 @@ export type BuildInputContentSeo = Readonly<{
187
194
  readonly title?: BuildInputPlainText;
188
195
  }>;
189
196
 
197
+ export type BuildInputDeleteDate = string;
198
+
190
199
  export type BuildInputDestinationCapabilityProfile = Readonly<{
191
200
  readonly adapter: BuildInputAuthoredAdapterIdentity;
192
201
  readonly baseUrl: BuildInputUrlHttps;
@@ -228,6 +237,10 @@ export type BuildInputInteractionsServiceOrigin = string;
228
237
 
229
238
  export type BuildInputIsoCountry = string;
230
239
 
240
+ export type BuildInputListing = Readonly<{
241
+ readonly pageSize?: number;
242
+ }>;
243
+
231
244
  export type BuildInputLocalizedAuthor = Readonly<{
232
245
  readonly biography: BuildInputPlainText;
233
246
  readonly displayName: BuildInputPlainText;
@@ -317,6 +330,14 @@ export type BuildInputPackageRange = string;
317
330
 
318
331
  export type BuildInputPassiveVisualToken = never;
319
332
 
333
+ export type BuildInputPerformance = Readonly<{
334
+ readonly budgets?: Readonly<{
335
+ readonly cssBytes?: number;
336
+ readonly htmlBytes?: number;
337
+ readonly jsBytes?: number;
338
+ }>;
339
+ }>;
340
+
320
341
  export type BuildInputPlainLabel = string;
321
342
 
322
343
  export type BuildInputPlainText = string;
@@ -332,6 +353,7 @@ export type BuildInputPolicyPageNormalized = Readonly<{
332
353
  }>;
333
354
 
334
355
  export type BuildInputPublicationNormalized = Readonly<{
356
+ readonly aiRights?: BuildInputAiRights;
335
357
  readonly authorIds: ReadonlyArray<BuildInputStableId>;
336
358
  readonly canonicalBase: BuildInputUrlHttps;
337
359
  readonly contactAuthorId?: BuildInputStableId;
@@ -349,7 +371,9 @@ export type BuildInputPublicationNormalized = Readonly<{
349
371
  readonly heading: BuildInputPlainText;
350
372
  }>;
351
373
  readonly id: BuildInputStableId;
374
+ readonly listing?: BuildInputListing;
352
375
  readonly newsletter?: BuildInputNewsletter;
376
+ readonly performance?: BuildInputPerformance;
353
377
  readonly profile?: Readonly<{
354
378
  readonly body: BuildInputRenderableBody;
355
379
  readonly route: BuildInputCanonicalRoute;
@@ -24,6 +24,8 @@ export type ContentFrontmatterContentSeo = Readonly<{
24
24
  readonly title?: ContentFrontmatterPlainText;
25
25
  }>;
26
26
 
27
+ export type ContentFrontmatterDeleteDate = string;
28
+
27
29
  export type ContentFrontmatterDigest = string;
28
30
 
29
31
  export type ContentFrontmatterExtensionKey = string;
@@ -74,6 +76,7 @@ export type ContentFrontmatterUrn = string;
74
76
  export type ContentFrontmatterDocument = Readonly<{
75
77
  readonly authors: ReadonlyArray<ContentFrontmatterStableId>;
76
78
  readonly createdAt: ContentFrontmatterRfc3339;
79
+ readonly deleteDate?: ContentFrontmatterDeleteDate;
77
80
  readonly description?: ContentFrontmatterPlainText;
78
81
  readonly edition?: ContentFrontmatterContentEdition;
79
82
  readonly extensions: ContentFrontmatterExtensionMap;
@@ -745,6 +745,23 @@ export type DeploymentReceiptDeploymentObservation = (
745
745
  }> &
746
746
  unknown;
747
747
 
748
+ export type DeploymentReceiptDeploymentPerformance = Readonly<{
749
+ readonly budgets: Readonly<{
750
+ readonly cssBytes?: number;
751
+ readonly htmlBytes?: number;
752
+ readonly jsBytes?: number;
753
+ }>;
754
+ readonly overBudget: ReadonlyArray<
755
+ Readonly<{
756
+ readonly budget: number;
757
+ readonly bytes: number;
758
+ readonly kind: 'html' | 'css' | 'js';
759
+ readonly path: DeploymentReceiptRepoRelativePath;
760
+ }>
761
+ >;
762
+ readonly overBudgetCount: number;
763
+ }>;
764
+
748
765
  export type DeploymentReceiptDeploymentPolicyDecision = Readonly<{
749
766
  readonly activationDetectionIntervalSeconds: 60;
750
767
  readonly activationDetectionProfile: 'gala-public-activation-detection-v2';
@@ -1613,6 +1630,7 @@ export type DeploymentReceiptDocument = (
1613
1630
  | 'superseded'
1614
1631
  | 'unknown-reconciling'
1615
1632
  | 'rolled-back';
1633
+ readonly performance?: DeploymentReceiptDeploymentPerformance;
1616
1634
  readonly provenanceDigest: DeploymentReceiptDigest;
1617
1635
  readonly publisher: DeploymentReceiptPackageIdentity &
1618
1636
  Readonly<{
@@ -1,6 +1,12 @@
1
1
  // Generated from urn:gala:schema:publication:2.0.0; sourceDesignRevision=a53052955ceb6c1aa10c886289dc832eedfe6de0a00004df07d353ac19c4403a.
2
2
  // Do not edit.
3
3
 
4
+ export type PublicationAiRights = Readonly<{
5
+ readonly licenseUrl?: PublicationUrlHttps;
6
+ readonly search: 'allow' | 'block';
7
+ readonly training: 'allow' | 'block';
8
+ }>;
9
+
4
10
  export type PublicationBcp47 = string;
5
11
 
6
12
  export type PublicationCanonicalRoute = string;
@@ -36,6 +42,10 @@ export type PublicationGlob = string;
36
42
 
37
43
  export type PublicationIsoCountry = string;
38
44
 
45
+ export type PublicationListing = Readonly<{
46
+ readonly pageSize?: number;
47
+ }>;
48
+
39
49
  export type PublicationNewsletter =
40
50
  | Readonly<{
41
51
  readonly emailContent: 'card' | 'full';
@@ -57,6 +67,14 @@ export type PublicationPackageRange = string;
57
67
 
58
68
  export type PublicationPassiveVisualToken = never;
59
69
 
70
+ export type PublicationPerformance = Readonly<{
71
+ readonly budgets?: Readonly<{
72
+ readonly cssBytes?: number;
73
+ readonly htmlBytes?: number;
74
+ readonly jsBytes?: number;
75
+ }>;
76
+ }>;
77
+
60
78
  export type PublicationPlainLabel = string;
61
79
 
62
80
  export type PublicationPlainText = string;
@@ -125,6 +143,7 @@ export type PublicationUrlHttps = string;
125
143
  export type PublicationUrn = string;
126
144
 
127
145
  export type PublicationDocument = Readonly<{
146
+ readonly aiRights?: PublicationAiRights;
128
147
  readonly authors: ReadonlyArray<PublicationRepoRelativePath>;
129
148
  readonly canonicalBase: PublicationUrlHttps;
130
149
  readonly contactForm?: PublicationContactForm;
@@ -136,7 +155,9 @@ export type PublicationDocument = Readonly<{
136
155
  readonly extensions: PublicationExtensionMap;
137
156
  readonly footerCard?: PublicationFooterCard;
138
157
  readonly id: PublicationStableId;
158
+ readonly listing?: PublicationListing;
139
159
  readonly newsletter?: PublicationNewsletter;
160
+ readonly performance?: PublicationPerformance;
140
161
  readonly policies?: PublicationPublicationPolicies;
141
162
  readonly profile?: PublicationPublicationProfile;
142
163
  readonly schemaId: 'urn:gala:schema:publication:2.0.0';
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "2.0.0",
3
3
  "sourceDesignRevision": "a53052955ceb6c1aa10c886289dc832eedfe6de0a00004df07d353ac19c4403a",
4
- "openApiDigest": "sha256:84db429fb73a76449703c1e6e5b7cb28114966f245b5fd20a0a1f5e049a584f1",
4
+ "openApiDigest": "sha256:55a877835a611d3a2cbd91e8f863baeca2192a228b95de1eebc94a568ff337ac",
5
5
  "operations": [
6
6
  {
7
7
  "operationId": "getInternalHealth",
@@ -2230,6 +2230,32 @@
2230
2230
  "apiKeyScope": null,
2231
2231
  "sourceFragment": "platform"
2232
2232
  },
2233
+ {
2234
+ "operationId": "getPlatformPrismGenerations",
2235
+ "method": "GET",
2236
+ "path": "/v2/platform/prism-generations",
2237
+ "purpose": "list platform Prism generations",
2238
+ "capabilityKey": "platform.prism.view",
2239
+ "conditionalCapabilityKeys": [],
2240
+ "activationGate": "MVP",
2241
+ "assuranceClass": "SESSION",
2242
+ "actionGrant": "none",
2243
+ "apiKeyScope": null,
2244
+ "sourceFragment": "platform"
2245
+ },
2246
+ {
2247
+ "operationId": "postPlatformPrismGenerationsExport",
2248
+ "method": "POST",
2249
+ "path": "/v2/platform/prism-generations:export",
2250
+ "purpose": "export platform Prism generations as CSV",
2251
+ "capabilityKey": "platform.prism.export",
2252
+ "conditionalCapabilityKeys": [],
2253
+ "activationGate": "MVP",
2254
+ "assuranceClass": "RECENT_AUTHENTICATION",
2255
+ "actionGrant": "none",
2256
+ "apiKeyScope": null,
2257
+ "sourceFragment": "platform"
2258
+ },
2233
2259
  {
2234
2260
  "operationId": "getPlatformSettingsByKey",
2235
2261
  "method": "GET",
@@ -3206,5 +3232,5 @@
3206
3232
  "sourceFragment": "workloads"
3207
3233
  }
3208
3234
  ],
3209
- "digest": "sha256:717a75c038a3380c6082a97d3c58f935187915c612228c35ae2fa64aaf5a1741"
3235
+ "digest": "sha256:38eaece75559fa90ba57b4c0b5cd69bbd7d61188007266d18a62a48e5e33f89c"
3210
3236
  }
@@ -4776,6 +4776,48 @@ components:
4776
4776
  type: object
4777
4777
  GetPlatformPlansResponse:
4778
4778
  $ref: "#/components/schemas/PlatformPlanCapacityRelease"
4779
+ GetPlatformPrismGenerationsResponse:
4780
+ additionalProperties: false
4781
+ allOf:
4782
+ - else:
4783
+ properties:
4784
+ nextCursor:
4785
+ type: "null"
4786
+ if:
4787
+ properties:
4788
+ hasMore:
4789
+ not:
4790
+ enum:
4791
+ - false
4792
+ type: boolean
4793
+ x-gala-const: true
4794
+ required:
4795
+ - hasMore
4796
+ then:
4797
+ properties:
4798
+ nextCursor:
4799
+ type: string
4800
+ required:
4801
+ - nextCursor
4802
+ properties:
4803
+ hasMore:
4804
+ type: boolean
4805
+ items:
4806
+ items:
4807
+ $ref: "#/components/schemas/PlatformPrismGeneration"
4808
+ maxItems: 100
4809
+ type: array
4810
+ nextCursor:
4811
+ description: Opaque cursor for the next page. Present and non-null exactly when `hasMore` is true; absent or null when `hasMore` is false.
4812
+ maxLength: 2048
4813
+ minLength: 1
4814
+ type:
4815
+ - string
4816
+ - "null"
4817
+ required:
4818
+ - items
4819
+ - hasMore
4820
+ type: object
4779
4821
  GetPlatformSettingsByKeyResponse:
4780
4822
  $ref: "#/components/schemas/PlatformSetting"
4781
4823
  GetPlatformSettingsOverridesByKindByIdByKeyResponse:
@@ -5693,7 +5735,7 @@ components:
5693
5735
  additionalProperties: false
5694
5736
  properties:
5695
5737
  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."
5738
+ 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
5739
  maxLength: 80
5698
5740
  minLength: 1
5699
5741
  type: string
@@ -6479,10 +6521,14 @@ components:
6479
6521
  format: uuid
6480
6522
  pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
6481
6523
  type: string
6524
+ performance:
6525
+ $ref: "#/components/schemas/PortableDeploymentReceiptDeploymentPerformance"
6482
6526
  phase:
6483
6527
  $ref: "#/components/schemas/OperationPhase"
6484
6528
  reason:
6485
6529
  $ref: "#/components/schemas/OperationReason"
6530
+ reasonDetails:
6531
+ $ref: "#/components/schemas/PageLossGuardDetails"
6486
6532
  recoveryActions:
6487
6533
  items:
6488
6534
  maxLength: 80
@@ -7455,6 +7501,8 @@ components:
7455
7501
  format: uuid
7456
7502
  pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
7457
7503
  type: string
7504
+ performance:
7505
+ $ref: "#/components/schemas/PortableDeploymentReceiptDeploymentPerformance"
7458
7506
  phase:
7459
7507
  enum:
7460
7508
  - accepted
@@ -7466,6 +7514,8 @@ components:
7466
7514
  type: string
7467
7515
  reason:
7468
7516
  $ref: "#/components/schemas/OperationReason"
7517
+ reasonDetails:
7518
+ $ref: "#/components/schemas/PageLossGuardDetails"
7469
7519
  recoveryActions:
7470
7520
  items:
7471
7521
  maxLength: 80
@@ -7594,7 +7644,10 @@ components:
7594
7644
  run settled with no receipt), `CANONICAL_BASE_MISMATCH` (the site's
7595
7645
  canonical base was not the address it is served from when the
7596
7646
  operation was dispatched) and `DOMAIN_NOT_READY` (a custom domain was
7597
- part-way through its switch and no origin could be verified).
7647
+ part-way through its switch and no origin could be verified). New in
7648
+ 3.25.0: `PAGE_LOSS_GUARD` (the publish would have removed too many pages
7649
+ from the live site, so authorization was refused and nothing was
7650
+ deployed; the operation's `reasonDetails` carry the counts).
7598
7651
  maxLength: 64
7599
7652
  minLength: 3
7600
7653
  pattern: ^[A-Z][A-Z0-9_]{2,63}$
@@ -7794,6 +7847,34 @@ components:
7794
7847
  - REVOKED
7795
7848
  - EXPIRED
7796
7849
  type: string
7850
+ PageLossGuardDetails:
7851
+ additionalProperties: false
7852
+ description: |
7853
+ SCHEMA-3.25.0. Present on an operation read when `reason` is
7854
+ `PAGE_LOSS_GUARD`: the candidate build has fewer pages than the last
7855
+ successful deployment of the same site and target. `lostPageCount` is
7856
+ `previousPageCount - candidatePageCount`; `permittedLoss` is the loss
7857
+ the platform settings allow. A person who accepts the loss publishes
7858
+ again with `allowPageLoss: true`.
7859
+ properties:
7860
+ candidatePageCount:
7861
+ minimum: 0
7862
+ type: integer
7863
+ lostPageCount:
7864
+ minimum: 0
7865
+ type: integer
7866
+ permittedLoss:
7867
+ minimum: 0
7868
+ type: integer
7869
+ previousPageCount:
7870
+ minimum: 0
7871
+ type: integer
7872
+ required:
7873
+ - previousPageCount
7874
+ - candidatePageCount
7875
+ - lostPageCount
7876
+ - permittedLoss
7877
+ type: object
7797
7878
  PasskeyState:
7798
7879
  enum:
7799
7880
  - ACTIVE
@@ -8660,6 +8741,36 @@ components:
8660
8741
  - PRO
8661
8742
  - BUSINESS
8662
8743
  type: string
8744
+ PlatformPrismGeneration:
8745
+ additionalProperties: false
8746
+ 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.
8747
+ properties:
8748
+ createdAt:
8749
+ $ref: "#/components/schemas/PortableProblemRfc3339"
8750
+ editionKind:
8751
+ $ref: "#/components/schemas/PrismEditionKind"
8752
+ generationId:
8753
+ format: uuid
8754
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
8755
+ type: string
8756
+ organizationId:
8757
+ format: uuid
8758
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
8759
+ type: string
8760
+ publicationId:
8761
+ format: uuid
8762
+ pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
8763
+ type: string
8764
+ state:
8765
+ $ref: "#/components/schemas/PrismGenerationState"
8766
+ required:
8767
+ - generationId
8768
+ - organizationId
8769
+ - publicationId
8770
+ - editionKind
8771
+ - state
8772
+ - createdAt
8773
+ type: object
8663
8774
  PlatformSetting:
8664
8775
  additionalProperties: false
8665
8776
  description: "An app-wide setting: the active release value, or the default when none is released."
@@ -9047,6 +9158,10 @@ components:
9047
9158
  minimum: 1
9048
9159
  required: []
9049
9160
  type: object
9161
+ PortableContentFrontmatterDeleteDate:
9162
+ 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."
9163
+ pattern: ^\d{4}-\d{2}-\d{2}$
9164
+ type: string
9050
9165
  PortableContentFrontmatterDigest:
9051
9166
  pattern: ^sha256:[0-9a-f]{64}$
9052
9167
  type: string
@@ -9114,6 +9229,8 @@ components:
9114
9229
  type: array
9115
9230
  createdAt:
9116
9231
  $ref: "#/components/schemas/PortableContentFrontmatterRfc3339"
9232
+ deleteDate:
9233
+ $ref: "#/components/schemas/PortableContentFrontmatterDeleteDate"
9117
9234
  description:
9118
9235
  $ref: "#/components/schemas/PortableContentFrontmatterPlainText"
9119
9236
  x-gala-graphemeLength:
@@ -12988,6 +13105,57 @@ components:
12988
13105
  - evidenceDigest
12989
13106
  - probes
12990
13107
  type: object
13108
+ PortableDeploymentReceiptDeploymentPerformance:
13109
+ additionalProperties: false
13110
+ 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."
13111
+ properties:
13112
+ budgets:
13113
+ additionalProperties: false
13114
+ properties:
13115
+ cssBytes:
13116
+ minimum: 1024
13117
+ type: integer
13118
+ htmlBytes:
13119
+ minimum: 1024
13120
+ type: integer
13121
+ jsBytes:
13122
+ minimum: 1024
13123
+ type: integer
13124
+ required: []
13125
+ type: object
13126
+ overBudget:
13127
+ items:
13128
+ additionalProperties: false
13129
+ properties:
13130
+ budget:
13131
+ minimum: 1024
13132
+ type: integer
13133
+ bytes:
13134
+ minimum: 0
13135
+ type: integer
13136
+ kind:
13137
+ enum:
13138
+ - html
13139
+ - css
13140
+ - js
13141
+ path:
13142
+ $ref: "#/components/schemas/PortableDeploymentReceiptRepoRelativePath"
13143
+ required:
13144
+ - path
13145
+ - kind
13146
+ - bytes
13147
+ - budget
13148
+ type: object
13149
+ maxItems: 20
13150
+ type: array
13151
+ overBudgetCount:
13152
+ minimum: 0
13153
+ type: integer
13154
+ required:
13155
+ - budgets
13156
+ - overBudgetCount
13157
+ - overBudget
13158
+ type: object
12991
13159
  PortableDeploymentReceiptDeploymentWarning:
12992
13160
  oneOf:
12993
13161
  - allOf:
@@ -13837,6 +14005,8 @@ components:
13837
14005
  - superseded
13838
14006
  - unknown-reconciling
13839
14007
  - rolled-back
14008
+ performance:
14009
+ $ref: "#/components/schemas/PortableDeploymentReceiptDeploymentPerformance"
13840
14010
  provenanceDigest:
13841
14011
  $ref: "#/components/schemas/PortableDeploymentReceiptDigest"
13842
14012
  publisher:
@@ -15730,6 +15900,10 @@ components:
15730
15900
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdChangesPublishRequest:
15731
15901
  additionalProperties: false
15732
15902
  properties:
15903
+ allowPageLoss:
15904
+ default: false
15905
+ 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`)."
15906
+ type: boolean
15733
15907
  changeIds:
15734
15908
  items:
15735
15909
  format: uuid
@@ -16228,6 +16402,10 @@ components:
16228
16402
  PostOrganizationsByOrganizationIdPublicationsByPublicationIdPublishesRequest:
16229
16403
  additionalProperties: false
16230
16404
  properties:
16405
+ allowPageLoss:
16406
+ default: false
16407
+ 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`)."
16408
+ type: boolean
16231
16409
  reviewId:
16232
16410
  format: uuid
16233
16411
  pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
@@ -19432,6 +19610,10 @@ components:
19432
19610
  manifestDigest:
19433
19611
  pattern: ^sha256:[0-9a-f]{64}$
19434
19612
  type: string
19613
+ pageCount:
19614
+ 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."
19615
+ minimum: 0
19616
+ type: integer
19435
19617
  pagesBuildVersion:
19436
19618
  description: |
19437
19619
  The Pages build version this deployment addresses, when the
@@ -59846,6 +60028,175 @@ paths:
59846
60028
  - NONE
59847
60029
  x-gala-success-category: update
59848
60030
  x-gala-tenant-scope: NONE
60031
+ /v2/platform/prism-generations:
60032
+ get:
60033
+ description: |
60034
+ Operators only (`ADMIN` or `ROOT`). Every Prism edition generation on
60035
+ the platform across all organizations, newest first, one keyset page at
60036
+ a time. Article text and candidate bodies are never exposed, only the
60037
+ generation's state, size and ownership.
60038
+ operationId: getPlatformPrismGenerations
60039
+ parameters:
60040
+ - $ref: "#/components/parameters/XCorrelationId"
60041
+ - description: Only generations in this state.
60042
+ example: CANDIDATE_READY
60043
+ in: query
60044
+ name: state
60045
+ required: false
60046
+ schema:
60047
+ $ref: "#/components/schemas/PrismGenerationState"
60048
+ - $ref: "#/components/parameters/Cursor"
60049
+ - $ref: "#/components/parameters/Limit"
60050
+ responses:
60051
+ "200":
60052
+ content:
60053
+ application/json:
60054
+ examples:
60055
+ nominal:
60056
+ summary: Nominal successful response
60057
+ value:
60058
+ hasMore: false
60059
+ items:
60060
+ - createdAt: "2026-10-10T12:00:00.000Z"
60061
+ editionKind: QUICK_READ
60062
+ generationId: 018f0000-0000-7000-8000-000000000001
60063
+ organizationId: 018f0000-0000-7000-8000-000000000003
60064
+ publicationId: 018f0000-0000-7000-8000-000000000002
60065
+ state: CANDIDATE_READY
60066
+ nextCursor: null
60067
+ schema:
60068
+ $ref: "#/components/schemas/GetPlatformPrismGenerationsResponse"
60069
+ description: list platform Prism generations succeeded
60070
+ headers:
60071
+ Cache-Control:
60072
+ $ref: "#/components/headers/CacheControlNoStore"
60073
+ X-Correlation-Id:
60074
+ $ref: "#/components/headers/XCorrelationId"
60075
+ "400":
60076
+ $ref: "#/components/responses/ValidationFailed"
60077
+ "401":
60078
+ $ref: "#/components/responses/PlatformAuthenticationRequired"
60079
+ "403":
60080
+ $ref: "#/components/responses/AuthorizationDenied"
60081
+ security:
60082
+ - browserSession: []
60083
+ summary: list platform Prism generations
60084
+ tags:
60085
+ - platform
60086
+ x-gala-activation-gate: MVP
60087
+ x-gala-activation-guards:
60088
+ - NONE
60089
+ x-gala-capability-key: platform.prism.view
60090
+ x-gala-concurrency: none
60091
+ x-gala-conditional-capabilities: []
60092
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
60093
+ x-gala-nullability: required-and-nullable-are-explicit
60094
+ x-gala-purpose: list platform Prism generations
60095
+ x-gala-reachable-problems:
60096
+ - AUTHENTICATION_REQUIRED
60097
+ - AUTHORIZATION_DENIED
60098
+ - REAUTH_REQUIRED
60099
+ - VALIDATION_FAILED
60100
+ x-gala-replay-identity: safe-query
60101
+ x-gala-state-guards:
60102
+ - NONE
60103
+ x-gala-success-category: query
60104
+ x-gala-tenant-scope: NONE
60105
+ /v2/platform/prism-generations:export:
60106
+ post:
60107
+ 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.
60108
+ operationId: postPlatformPrismGenerationsExport
60109
+ parameters:
60110
+ - $ref: "#/components/parameters/XCorrelationId"
60111
+ - $ref: "#/components/parameters/XCsrfToken"
60112
+ responses:
60113
+ "200":
60114
+ content:
60115
+ text/csv:
60116
+ schema:
60117
+ format: binary
60118
+ type: string
60119
+ description: export platform Prism generations as CSV succeeded
60120
+ headers:
60121
+ Cache-Control:
60122
+ $ref: "#/components/headers/CacheControlNoStore"
60123
+ Content-Disposition:
60124
+ $ref: "#/components/headers/ContentDispositionAttachment"
60125
+ X-Content-Type-Options:
60126
+ $ref: "#/components/headers/XContentTypeOptionsNosniff"
60127
+ X-Correlation-Id:
60128
+ $ref: "#/components/headers/XCorrelationId"
60129
+ "400":
60130
+ $ref: "#/components/responses/ValidationFailed"
60131
+ "401":
60132
+ content:
60133
+ application/problem+json:
60134
+ examples:
60135
+ AUTHENTICATION_REQUIRED:
60136
+ summary: AUTHENTICATION_REQUIRED
60137
+ value:
60138
+ code: AUTHENTICATION_REQUIRED
60139
+ correlationId: 018f0000-0000-7000-8000-000000000001
60140
+ detail: See the operation contract.
60141
+ errors: []
60142
+ retryable: false
60143
+ schemaId: urn:gala:schema:problem:2.0.0
60144
+ schemaVersion: 2.0.0
60145
+ status: 401
60146
+ title: AUTHENTICATION_REQUIRED
60147
+ type: urn:gala:problem:authentication-required
60148
+ REAUTH_REQUIRED:
60149
+ summary: REAUTH_REQUIRED
60150
+ value:
60151
+ code: REAUTH_REQUIRED
60152
+ correlationId: 018f0000-0000-7000-8000-000000000001
60153
+ detail: See the operation contract.
60154
+ errors: []
60155
+ retryable: false
60156
+ schemaId: urn:gala:schema:problem:2.0.0
60157
+ schemaVersion: 2.0.0
60158
+ status: 401
60159
+ title: REAUTH_REQUIRED
60160
+ type: urn:gala:problem:reauth-required
60161
+ schema:
60162
+ $ref: "#/components/schemas/Problem"
60163
+ description: AUTHENTICATION_REQUIRED, REAUTH_REQUIRED
60164
+ headers:
60165
+ Cache-Control:
60166
+ $ref: "#/components/headers/CacheControlNoStore"
60167
+ X-Correlation-Id:
60168
+ $ref: "#/components/headers/XCorrelationId"
60169
+ x-gala-problem-codes:
60170
+ - AUTHENTICATION_REQUIRED
60171
+ - REAUTH_REQUIRED
60172
+ "403":
60173
+ $ref: "#/components/responses/AuthorizationDenied"
60174
+ security:
60175
+ - browserSession: []
60176
+ summary: export platform Prism generations as CSV
60177
+ tags:
60178
+ - platform
60179
+ x-gala-action-grant: none
60180
+ x-gala-activation-gate: MVP
60181
+ x-gala-activation-guards:
60182
+ - NONE
60183
+ x-gala-assurance-class: RECENT_AUTHENTICATION
60184
+ x-gala-capability-key: platform.prism.export
60185
+ x-gala-concurrency: none
60186
+ x-gala-conditional-capabilities: []
60187
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
60188
+ x-gala-nullability: required-and-nullable-are-explicit
60189
+ x-gala-purpose: export platform Prism generations as CSV
60190
+ x-gala-reachable-problems:
60191
+ - AUTHENTICATION_REQUIRED
60192
+ - AUTHORIZATION_DENIED
60193
+ - REAUTH_REQUIRED
60194
+ - VALIDATION_FAILED
60195
+ x-gala-replay-identity: natural-idempotent-state
60196
+ x-gala-state-guards:
60197
+ - NONE
60198
+ x-gala-success-category: protocol
60199
+ x-gala-tenant-scope: NONE
59849
60200
  /v2/platform/settings/overrides/{kind}/{id}/{key}:
59850
60201
  delete:
59851
60202
  description: |