@rathnasgala2/schemas 3.18.0 → 3.19.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.
@@ -53,6 +53,8 @@ export type ContentFrontmatterPlainLabel = string;
53
53
 
54
54
  export type ContentFrontmatterPlainText = string;
55
55
 
56
+ export type ContentFrontmatterPublishAfterDate = string;
57
+
56
58
  export type ContentFrontmatterRepoRelativePath = string;
57
59
 
58
60
  export type ContentFrontmatterRfc3339 = string;
@@ -80,6 +82,7 @@ export type ContentFrontmatterDocument = Readonly<{
80
82
  readonly kind: 'article' | 'page' | 'edition';
81
83
  readonly language: ContentFrontmatterBcp47;
82
84
  readonly newsletter?: 'ineligible' | 'eligible';
85
+ readonly publishAfter?: ContentFrontmatterPublishAfterDate;
83
86
  readonly publishedAt?: ContentFrontmatterRfc3339;
84
87
  readonly redirects: ReadonlyArray<ContentFrontmatterCanonicalRoute>;
85
88
  readonly route?: ContentFrontmatterCanonicalRoute;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": "2.0.0",
3
3
  "sourceDesignRevision": "a53052955ceb6c1aa10c886289dc832eedfe6de0a00004df07d353ac19c4403a",
4
- "openApiDigest": "sha256:873e58c1c5cff984dbee260f215f8c6f3fd10c8623889ba4618b832814b043a9",
4
+ "openApiDigest": "sha256:d835a5a348edb96e2c92b3705d038a6854386aa12f6856493214a15493068dde",
5
5
  "operations": [
6
6
  {
7
7
  "operationId": "getInternalHealth",
@@ -2699,5 +2699,5 @@
2699
2699
  "sourceFragment": "workloads"
2700
2700
  }
2701
2701
  ],
2702
- "digest": "sha256:7c2a102c264904a42607e573f34c5c4db46e498fc068c3778e2b5f8c9f023607"
2702
+ "digest": "sha256:2d26250d96a503479216501c5aa63e1de98fc77276433294d79db1f30fe5f8b8"
2703
2703
  }
@@ -1308,7 +1308,9 @@ components:
1308
1308
  description: |
1309
1309
  The header block's own facts about this item, read at inventory time.
1310
1310
  `contentId` is the header's `id`; `status` is the header's `status`
1311
- upper-cased to this contract's enum style.
1311
+ upper-cased to this contract's enum style. `publishAfter`
1312
+ (SCHEMA-3.19.0, optional and nullable) is the header's staggered-release
1313
+ date.
1312
1314
  properties:
1313
1315
  contentId:
1314
1316
  $ref: "#/components/schemas/PortableContentFrontmatterStableId"
@@ -1316,6 +1318,11 @@ components:
1316
1318
  $ref: "#/components/schemas/PortableContentFrontmatterRfc3339"
1317
1319
  language:
1318
1320
  $ref: "#/components/schemas/PortableContentFrontmatterBcp47"
1321
+ publishAfter:
1322
+ description: "SCHEMA-3.19.0: the header's `publishAfter` date (`YYYY-MM-DD`) of a draft waiting for staggered release, `null` or absent when the header carries none."
1323
+ oneOf:
1324
+ - $ref: "#/components/schemas/PortableContentFrontmatterPublishAfterDate"
1325
+ - type: "null"
1319
1326
  publishedAt:
1320
1327
  $ref: "#/components/schemas/PortableContentFrontmatterRfc3339"
1321
1328
  slug:
@@ -3738,7 +3745,7 @@ components:
3738
3745
  then:
3739
3746
  required:
3740
3747
  - publishing
3741
- description: Everything a Home screen needs in one read. `url` is the live site address, `null` when nothing has been published. `lastPublished` is absent when `state` is `NEVER_PUBLISHED`. `publishing` is present exactly while `state` is `PUBLISHING`. `schedule` (SCHEMA-3.3.0, optional) is present while a scheduled publish is pending; a pending schedule never makes `state` `PUBLISHING` -- the site reads as it would without it until the schedule starts.
3748
+ description: Everything a Home screen needs in one read. `url` is the live site address, `null` when nothing has been published. `lastPublished` is absent when `state` is `NEVER_PUBLISHED`. `publishing` is present exactly while `state` is `PUBLISHING`. `schedule` (SCHEMA-3.3.0, optional) is present while a scheduled publish is pending; a pending schedule never makes `state` `PUBLISHING` -- the site reads as it would without it until the schedule starts. `nextRelease` (SCHEMA-3.19.0, optional and nullable) is the scheduled draft that the staggered release will publish next, the one with the earliest `publishAfter` date; `null` or absent when there is none.
3742
3749
  properties:
3743
3750
  attention:
3744
3751
  items:
@@ -3747,6 +3754,10 @@ components:
3747
3754
  type: array
3748
3755
  lastPublished:
3749
3756
  $ref: "#/components/schemas/SiteLastPublished"
3757
+ nextRelease:
3758
+ oneOf:
3759
+ - $ref: "#/components/schemas/SiteNextRelease"
3760
+ - type: "null"
3750
3761
  pendingChanges:
3751
3762
  items:
3752
3763
  $ref: "#/components/schemas/SitePendingChange"
@@ -6961,6 +6972,34 @@ components:
6961
6972
  type: boolean
6962
6973
  requireReview:
6963
6974
  type: boolean
6975
+ staggeredRelease:
6976
+ additionalProperties: false
6977
+ allOf:
6978
+ - if:
6979
+ properties:
6980
+ enabled:
6981
+ not:
6982
+ enum:
6983
+ - false
6984
+ type: boolean
6985
+ x-gala-const: true
6986
+ required:
6987
+ - enabled
6988
+ then:
6989
+ required:
6990
+ - timezone
6991
+ description: "SCHEMA-3.19.0: a change to the staggered-release setting (the shape of `StaggeredReleaseSetting` as a partial update). An omitted `staggeredRelease` leaves the setting unchanged. `timezone` is required when `enabled` is true. When `enabled` is false it may be omitted (the stored zone is kept) or sent (the zone is stored for the next time the setting is turned on). Turning the setting off never edits a draft: its `publishAfter` stays in the file."
6992
+ properties:
6993
+ enabled:
6994
+ type: boolean
6995
+ timezone:
6996
+ description: An IANA time zone name, as `StaggeredReleaseTimezone`. An unknown name is `422 VALIDATION_FAILED` pointed at `/publishingPolicy/staggeredRelease/timezone`.
6997
+ maxLength: 64
6998
+ pattern: ^(?:[A-Za-z_]+(?:/[A-Za-z0-9_+-]+)+|UTC)$
6999
+ type: string
7000
+ required:
7001
+ - enabled
7002
+ type: object
6964
7003
  type: object
6965
7004
  slug:
6966
7005
  maxLength: 80
@@ -8163,6 +8202,8 @@ components:
8163
8202
  enum:
8164
8203
  - ineligible
8165
8204
  - eligible
8205
+ publishAfter:
8206
+ $ref: "#/components/schemas/PortableContentFrontmatterPublishAfterDate"
8166
8207
  publishedAt:
8167
8208
  $ref: "#/components/schemas/PortableContentFrontmatterRfc3339"
8168
8209
  redirects:
@@ -8292,6 +8333,10 @@ components:
8292
8333
  description: NFC Unicode text without disallowed C0/C1 controls or bidi override/isolate controls.
8293
8334
  format: gala-plain-text
8294
8335
  type: string
8336
+ PortableContentFrontmatterPublishAfterDate:
8337
+ description: "SCHEMA-3.19.0: the calendar date (`YYYY-MM-DD`, day precision, read in the publication's staggered-release timezone) on or after which Galascribe publishes this draft. Meaningful only while `status` is `draft`; Galascribe removes it when the post is published. The API enforces both rules; the schema only fixes the shape."
8338
+ pattern: ^\d{4}-\d{2}-\d{2}$
8339
+ type: string
8295
8340
  PortableContentFrontmatterRepoRelativePath:
8296
8341
  description: NFC UTF-8 repository-relative path using slash separators, with no leading slash, dot segment, NUL, backslash, or percent-decoded traversal.
8297
8342
  format: gala-repository-relative-path
@@ -14861,6 +14906,11 @@ components:
14861
14906
  `appearance`, counting as one of the named members: it edits
14862
14907
  `gala/publication.json` through one planned `PUT` (see
14863
14908
  `ContentChangePublicationProfileEntry`).
14909
+ A `PUT` document whose front matter sets or changes `publishAfter`
14910
+ (SCHEMA-3.19.0) is refused with `409 STAGGERED_RELEASE_DISABLED` while the
14911
+ publication's staggered release is off (`publishingPolicy.staggeredRelease`), and
14912
+ with `422 PUBLISH_AFTER_ON_PUBLISHED_POST` when its `status` is not
14913
+ `draft`; `errors[].pointer` is `/documents/<path>`.
14864
14914
  Assets are images only (PNG, JPEG, WebP, GIF, AVIF; SVG is refused):
14865
14915
  at most 20 per change, each at most 5 MiB and together at most
14866
14916
  20 MiB, measured on the decoded bytes -- `assets[].bytesBase64` is
@@ -17511,7 +17561,7 @@ components:
17511
17561
  type: string
17512
17562
  PublishingPolicy:
17513
17563
  additionalProperties: false
17514
- description: "How this publication publishes. Absence of the member on the publication resource means the defaults: `requireReview` false, `galascribeMerges` true."
17564
+ description: "How this publication publishes. Absence of the member on the publication resource means the defaults: `requireReview` false, `galascribeMerges` true, and `staggeredRelease` off (`enabled` false, `timezone` null). When the member is present it carries all three (SCHEMA-3.19.0 adds `staggeredRelease`)."
17515
17565
  properties:
17516
17566
  galascribeMerges:
17517
17567
  description: Default true. When true Galascribe opens and merges the pull request itself through the GitHub App; when false each change must already be merged on GitHub before it can be published.
@@ -17519,9 +17569,12 @@ components:
17519
17569
  requireReview:
17520
17570
  description: Default false. When true a change needs an approved review before it can be published.
17521
17571
  type: boolean
17572
+ staggeredRelease:
17573
+ $ref: "#/components/schemas/StaggeredReleaseSetting"
17522
17574
  required:
17523
17575
  - requireReview
17524
17576
  - galascribeMerges
17577
+ - staggeredRelease
17525
17578
  type: object
17526
17579
  PutOrganizationsByOrganizationIdPublicationsByPublicationIdAnalyticsSettingsRequest:
17527
17580
  additionalProperties: false
@@ -19147,6 +19200,18 @@ components:
19147
19200
  - at
19148
19201
  - actor
19149
19202
  type: object
19203
+ SiteNextRelease:
19204
+ additionalProperties: false
19205
+ description: "The next draft the staggered release will publish (SCHEMA-3.19.0): `slug` is the draft's slug and `publishAfter` its `YYYY-MM-DD` date, read in the publication's staggered-release timezone."
19206
+ properties:
19207
+ publishAfter:
19208
+ $ref: "#/components/schemas/PortableContentFrontmatterPublishAfterDate"
19209
+ slug:
19210
+ $ref: "#/components/schemas/PortableContentFrontmatterSlug"
19211
+ required:
19212
+ - slug
19213
+ - publishAfter
19214
+ type: object
19150
19215
  SitePendingChange:
19151
19216
  additionalProperties: false
19152
19217
  allOf:
@@ -19347,6 +19412,40 @@ components:
19347
19412
  - from
19348
19413
  - to
19349
19414
  type: object
19415
+ StaggeredReleaseSetting:
19416
+ additionalProperties: false
19417
+ allOf:
19418
+ - if:
19419
+ properties:
19420
+ enabled:
19421
+ not:
19422
+ enum:
19423
+ - false
19424
+ type: boolean
19425
+ x-gala-const: true
19426
+ required:
19427
+ - enabled
19428
+ then:
19429
+ properties:
19430
+ timezone:
19431
+ type: string
19432
+ description: "SCHEMA-3.19.0: the publication's staggered-release setting as stored, the `staggeredRelease` member of `PublishingPolicy`. When `enabled` is true Galascribe publishes each draft whose `publishAfter` front-matter date has arrived, reading the date in `timezone` and releasing it on the first sweep at or after 00:00 of that date; when false nothing is released by the system and `publishAfter` values are kept untouched. A publication that never set it reads `{enabled: false, timezone: null}`; `timezone` is never null while `enabled` is true."
19433
+ properties:
19434
+ enabled:
19435
+ type: boolean
19436
+ timezone:
19437
+ oneOf:
19438
+ - $ref: "#/components/schemas/StaggeredReleaseTimezone"
19439
+ - type: "null"
19440
+ required:
19441
+ - enabled
19442
+ - timezone
19443
+ type: object
19444
+ StaggeredReleaseTimezone:
19445
+ description: "SCHEMA-3.19.0: an IANA time zone name (`America/Los_Angeles`, `Europe/London`, `UTC`). The API accepts only a name its time-zone database knows; an unknown name is `422 VALIDATION_FAILED` pointed at `/publishingPolicy/staggeredRelease/timezone`. The pattern only fixes the shape."
19446
+ maxLength: 64
19447
+ pattern: ^(?:[A-Za-z_]+(?:/[A-Za-z0-9_+-]+)+|UTC)$
19448
+ type: string
19350
19449
  VerificationPlanEntry:
19351
19450
  additionalProperties: false
19352
19451
  properties:
@@ -31971,7 +32070,7 @@ paths:
31971
32070
  x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
31972
32071
  patch:
31973
32072
  description: |
31974
- Updates publication metadata and state. As of schema 2.22.0 the request may also carry `publishingPolicy` (`requireReview`, `galascribeMerges`), a partial update: an omitted member keeps its value. The publication resource (`GET` and this response) returns `publishingPolicy`; its absence means the defaults, `requireReview` false and `galascribeMerges` true. The policy governs `POST .../changes:publish` and the review of changes.
32073
+ Updates publication metadata and state. As of schema 2.22.0 the request may also carry `publishingPolicy` (`requireReview`, `galascribeMerges`), a partial update: an omitted member keeps its value. The publication resource (`GET` and this response) returns `publishingPolicy`; its absence means the defaults, `requireReview` false and `galascribeMerges` true. The policy governs `POST .../changes:publish` and the review of changes. SCHEMA-3.19.0 adds `publishingPolicy.staggeredRelease` (`enabled`, `timezone`): staggered release publishes each draft whose `publishAfter` front-matter date has arrived, reading the date in `timezone`. A present `publishingPolicy` always carries it (a publication that never set it reads `enabled` false and `timezone` null; the absence of `publishingPolicy` means the same). In the request it is optional, absent means unchanged, `timezone` is required when `enabled` is true and must be an IANA zone name, else `422 VALIDATION_FAILED` pointed at `/publishingPolicy/staggeredRelease/timezone`.
31975
32074
  operationId: patchOrganizationsByOrganizationIdPublicationsByPublicationId
31976
32075
  parameters:
31977
32076
  - $ref: "#/components/parameters/XCorrelationId"
@@ -34422,6 +34521,21 @@ paths:
34422
34521
  status: 409
34423
34522
  title: INVALID_SOURCE_STATE
34424
34523
  type: urn:gala:problem:invalid-source-state
34524
+ STAGGERED_RELEASE_DISABLED:
34525
+ summary: STAGGERED_RELEASE_DISABLED
34526
+ value:
34527
+ code: STAGGERED_RELEASE_DISABLED
34528
+ correlationId: 018f0000-0000-7000-8000-000000000001
34529
+ detail: A document carries publishAfter but the publication's staggered release is off. See the operation contract.
34530
+ errors:
34531
+ - code: STAGGERED_RELEASE_DISABLED
34532
+ pointer: /documents/content~1articles~1example.md
34533
+ retryable: false
34534
+ schemaId: urn:gala:schema:problem:2.0.0
34535
+ schemaVersion: 2.0.0
34536
+ status: 409
34537
+ title: STAGGERED_RELEASE_DISABLED
34538
+ type: urn:gala:problem:staggered-release-disabled
34425
34539
  TRANSFER_PENDING:
34426
34540
  summary: TRANSFER_PENDING
34427
34541
  value:
@@ -34437,7 +34551,7 @@ paths:
34437
34551
  type: urn:gala:problem:transfer-pending
34438
34552
  schema:
34439
34553
  $ref: "#/components/schemas/Problem"
34440
- description: COMMAND_REPLAY_CONFLICT, INVALID_SOURCE_STATE, TRANSFER_PENDING
34554
+ description: COMMAND_REPLAY_CONFLICT, INVALID_SOURCE_STATE, STAGGERED_RELEASE_DISABLED, TRANSFER_PENDING
34441
34555
  headers:
34442
34556
  Cache-Control:
34443
34557
  $ref: "#/components/headers/CacheControlNoStore"
@@ -34448,11 +34562,27 @@ paths:
34448
34562
  x-gala-problem-codes:
34449
34563
  - COMMAND_REPLAY_CONFLICT
34450
34564
  - INVALID_SOURCE_STATE
34565
+ - STAGGERED_RELEASE_DISABLED
34451
34566
  - TRANSFER_PENDING
34452
34567
  "422":
34453
34568
  content:
34454
34569
  application/problem+json:
34455
34570
  examples:
34571
+ PUBLISH_AFTER_ON_PUBLISHED_POST:
34572
+ summary: PUBLISH_AFTER_ON_PUBLISHED_POST
34573
+ value:
34574
+ code: PUBLISH_AFTER_ON_PUBLISHED_POST
34575
+ correlationId: 018f0000-0000-7000-8000-000000000001
34576
+ detail: A document carries publishAfter but its status is not draft. See the operation contract.
34577
+ errors:
34578
+ - code: PUBLISH_AFTER_ON_PUBLISHED_POST
34579
+ pointer: /documents/content~1articles~1example.md
34580
+ retryable: false
34581
+ schemaId: urn:gala:schema:problem:2.0.0
34582
+ schemaVersion: 2.0.0
34583
+ status: 422
34584
+ title: PUBLISH_AFTER_ON_PUBLISHED_POST
34585
+ type: urn:gala:problem:publish-after-on-published-post
34456
34586
  VALIDATION_FAILED:
34457
34587
  summary: VALIDATION_FAILED
34458
34588
  value:
@@ -34468,13 +34598,14 @@ paths:
34468
34598
  type: urn:gala:problem:validation-failed
34469
34599
  schema:
34470
34600
  $ref: "#/components/schemas/Problem"
34471
- description: VALIDATION_FAILED
34601
+ description: PUBLISH_AFTER_ON_PUBLISHED_POST, VALIDATION_FAILED
34472
34602
  headers:
34473
34603
  Cache-Control:
34474
34604
  $ref: "#/components/headers/CacheControlNoStore"
34475
34605
  X-Correlation-Id:
34476
34606
  $ref: "#/components/headers/XCorrelationId"
34477
34607
  x-gala-problem-codes:
34608
+ - PUBLISH_AFTER_ON_PUBLISHED_POST
34478
34609
  - VALIDATION_FAILED
34479
34610
  "503":
34480
34611
  content:
@@ -34525,8 +34656,10 @@ paths:
34525
34656
  - CAPABILITY_UNAVAILABLE
34526
34657
  - COMMAND_REPLAY_CONFLICT
34527
34658
  - INVALID_SOURCE_STATE
34659
+ - PUBLISH_AFTER_ON_PUBLISHED_POST
34528
34660
  - REQUEST_FIELD_UNKNOWN
34529
34661
  - RESOURCE_NOT_FOUND
34662
+ - STAGGERED_RELEASE_DISABLED
34530
34663
  - TRANSFER_PENDING
34531
34664
  - VALIDATION_FAILED
34532
34665
  x-gala-replay-identity: idempotency-key
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rathnasgala2/schemas",
3
- "version": "3.18.0",
3
+ "version": "3.19.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.18.0",
101
- "bom-ref": "@rathnasgala2/schemas@3.18.0",
100
+ "version": "3.19.0",
101
+ "bom-ref": "@rathnasgala2/schemas@3.19.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.18.0?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2Frathnasgala2%2Fschema.git",
111
+ "purl": "pkg:npm/%40rathnasgala2/schemas@3.19.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.18.0|ajv-formats@3.0.1",
156
+ "bom-ref": "@rathnasgala2/schemas@3.19.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.18.0|ajv@8.20.0",
190
+ "bom-ref": "@rathnasgala2/schemas@3.19.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.18.0|fast-deep-equal@3.1.3",
224
+ "bom-ref": "@rathnasgala2/schemas@3.19.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.18.0|fast-uri@3.1.8",
258
+ "bom-ref": "@rathnasgala2/schemas@3.19.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.18.0|json-schema-traverse@1.0.0",
292
+ "bom-ref": "@rathnasgala2/schemas@3.19.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.18.0|require-from-string@2.0.2",
326
+ "bom-ref": "@rathnasgala2/schemas@3.19.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.18.0",
1067
+ "ref": "@rathnasgala2/schemas@3.19.0",
1068
1068
  "dependsOn": [
1069
- "@rathnasgala2/schemas@3.18.0|ajv-formats@3.0.1",
1070
- "@rathnasgala2/schemas@3.18.0|ajv@8.20.0",
1069
+ "@rathnasgala2/schemas@3.19.0|ajv-formats@3.0.1",
1070
+ "@rathnasgala2/schemas@3.19.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.18.0|ajv-formats@3.0.1",
1092
+ "ref": "@rathnasgala2/schemas@3.19.0|ajv-formats@3.0.1",
1093
1093
  "dependsOn": [
1094
- "@rathnasgala2/schemas@3.18.0|ajv@8.20.0"
1094
+ "@rathnasgala2/schemas@3.19.0|ajv@8.20.0"
1095
1095
  ]
1096
1096
  },
1097
1097
  {
1098
- "ref": "@rathnasgala2/schemas@3.18.0|ajv@8.20.0",
1098
+ "ref": "@rathnasgala2/schemas@3.19.0|ajv@8.20.0",
1099
1099
  "dependsOn": [
1100
- "@rathnasgala2/schemas@3.18.0|fast-deep-equal@3.1.3",
1101
- "@rathnasgala2/schemas@3.18.0|fast-uri@3.1.8",
1102
- "@rathnasgala2/schemas@3.18.0|json-schema-traverse@1.0.0",
1103
- "@rathnasgala2/schemas@3.18.0|require-from-string@2.0.2"
1100
+ "@rathnasgala2/schemas@3.19.0|fast-deep-equal@3.1.3",
1101
+ "@rathnasgala2/schemas@3.19.0|fast-uri@3.1.8",
1102
+ "@rathnasgala2/schemas@3.19.0|json-schema-traverse@1.0.0",
1103
+ "@rathnasgala2/schemas@3.19.0|require-from-string@2.0.2"
1104
1104
  ]
1105
1105
  },
1106
1106
  {
1107
- "ref": "@rathnasgala2/schemas@3.18.0|fast-deep-equal@3.1.3"
1107
+ "ref": "@rathnasgala2/schemas@3.19.0|fast-deep-equal@3.1.3"
1108
1108
  },
1109
1109
  {
1110
- "ref": "@rathnasgala2/schemas@3.18.0|fast-uri@3.1.8"
1110
+ "ref": "@rathnasgala2/schemas@3.19.0|fast-uri@3.1.8"
1111
1111
  },
1112
1112
  {
1113
- "ref": "@rathnasgala2/schemas@3.18.0|json-schema-traverse@1.0.0"
1113
+ "ref": "@rathnasgala2/schemas@3.19.0|json-schema-traverse@1.0.0"
1114
1114
  },
1115
1115
  {
1116
- "ref": "@rathnasgala2/schemas@3.18.0|require-from-string@2.0.2"
1116
+ "ref": "@rathnasgala2/schemas@3.19.0|require-from-string@2.0.2"
1117
1117
  },
1118
1118
  {
1119
1119
  "ref": "pkg:npm/semver@7.8.5"
@@ -65,6 +65,7 @@
65
65
  "newsletter": { "enum": ["ineligible", "eligible"] },
66
66
  "edition": { "$ref": "#/$defs/contentEdition" },
67
67
  "seo": { "$ref": "#/$defs/contentSeo" },
68
+ "publishAfter": { "$ref": "#/$defs/publishAfterDate" },
68
69
  "extensions": { "$ref": "#/$defs/extensionMap" }
69
70
  },
70
71
  "additionalProperties": false,
@@ -212,6 +213,11 @@
212
213
  }
213
214
  ]
214
215
  },
216
+ "publishAfterDate": {
217
+ "type": "string",
218
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
219
+ "description": "SCHEMA-3.19.0: the calendar date (`YYYY-MM-DD`, day precision, read in the publication's staggered-release timezone) on or after which Galascribe publishes this draft. Meaningful only while `status` is `draft`; Galascribe removes it when the post is published. The API enforces both rules; the schema only fixes the shape."
220
+ },
215
221
  "contentEdition": {
216
222
  "type": "object",
217
223
  "required": ["of", "kind", "sourceDigest", "generation", "approvedAt"],