@rathnasgala2/schemas 3.17.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:724c2017e5453ced56aa0d283b317babf8f41431b8b32caa5e8c7173a6484bad",
4
+ "openApiDigest": "sha256:d835a5a348edb96e2c92b3705d038a6854386aa12f6856493214a15493068dde",
5
5
  "operations": [
6
6
  {
7
7
  "operationId": "getInternalHealth",
@@ -120,6 +120,19 @@
120
120
  "apiKeyScope": null,
121
121
  "sourceFragment": "callbacks"
122
122
  },
123
+ {
124
+ "operationId": "postCallbacksStripe",
125
+ "method": "POST",
126
+ "path": "/v2/callbacks/stripe",
127
+ "purpose": "accept an authenticated Stripe billing event",
128
+ "capabilityKey": null,
129
+ "conditionalCapabilityKeys": [],
130
+ "activationGate": "MVP",
131
+ "assuranceClass": "SESSION",
132
+ "actionGrant": "none",
133
+ "apiKeyScope": null,
134
+ "sourceFragment": "callbacks"
135
+ },
123
136
  {
124
137
  "operationId": "getClaimsByToken",
125
138
  "method": "GET",
@@ -2686,5 +2699,5 @@
2686
2699
  "sourceFragment": "workloads"
2687
2700
  }
2688
2701
  ],
2689
- "digest": "sha256:7958a1b4349e014c35b83eae61aa2298e0079280957989654536abf109b19a5b"
2702
+ "digest": "sha256:2d26250d96a503479216501c5aa63e1de98fc77276433294d79db1f30fe5f8b8"
2690
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
@@ -14269,6 +14314,22 @@ components:
14269
14314
  required:
14270
14315
  - accepted
14271
14316
  type: object
14317
+ PostCallbacksStripeRequest:
14318
+ additionalProperties: true
14319
+ description: Raw Stripe event JSON authenticated over the exact received bytes by the required Stripe-Signature header; the event object is opaque to the contract.
14320
+ type: object
14321
+ PostCallbacksStripeResponse:
14322
+ additionalProperties: false
14323
+ properties:
14324
+ accepted:
14325
+ not:
14326
+ enum:
14327
+ - false
14328
+ type: boolean
14329
+ x-gala-const: true
14330
+ required:
14331
+ - accepted
14332
+ type: object
14272
14333
  PostClaimsByTokenAcceptResponse:
14273
14334
  additionalProperties: false
14274
14335
  properties:
@@ -14845,6 +14906,11 @@ components:
14845
14906
  `appearance`, counting as one of the named members: it edits
14846
14907
  `gala/publication.json` through one planned `PUT` (see
14847
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>`.
14848
14914
  Assets are images only (PNG, JPEG, WebP, GIF, AVIF; SVG is refused):
14849
14915
  at most 20 per change, each at most 5 MiB and together at most
14850
14916
  20 MiB, measured on the decoded bytes -- `assets[].bytesBase64` is
@@ -17495,7 +17561,7 @@ components:
17495
17561
  type: string
17496
17562
  PublishingPolicy:
17497
17563
  additionalProperties: false
17498
- 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`)."
17499
17565
  properties:
17500
17566
  galascribeMerges:
17501
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.
@@ -17503,9 +17569,12 @@ components:
17503
17569
  requireReview:
17504
17570
  description: Default false. When true a change needs an approved review before it can be published.
17505
17571
  type: boolean
17572
+ staggeredRelease:
17573
+ $ref: "#/components/schemas/StaggeredReleaseSetting"
17506
17574
  required:
17507
17575
  - requireReview
17508
17576
  - galascribeMerges
17577
+ - staggeredRelease
17509
17578
  type: object
17510
17579
  PutOrganizationsByOrganizationIdPublicationsByPublicationIdAnalyticsSettingsRequest:
17511
17580
  additionalProperties: false
@@ -19131,6 +19200,18 @@ components:
19131
19200
  - at
19132
19201
  - actor
19133
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
19134
19215
  SitePendingChange:
19135
19216
  additionalProperties: false
19136
19217
  allOf:
@@ -19331,6 +19412,40 @@ components:
19331
19412
  - from
19332
19413
  - to
19333
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
19334
19449
  VerificationPlanEntry:
19335
19450
  additionalProperties: false
19336
19451
  properties:
@@ -19445,6 +19560,10 @@ components:
19445
19560
  bearerFormat: Opaque publication-scoped reader token
19446
19561
  scheme: bearer
19447
19562
  type: http
19563
+ stripeWebhookSignature:
19564
+ in: header
19565
+ name: Stripe-Signature
19566
+ type: apiKey
19448
19567
  info:
19449
19568
  description: Executable Galascribe MVP HTTP contract.
19450
19569
  title: Galascribe API
@@ -20569,6 +20688,103 @@ paths:
20569
20688
  - NONE
20570
20689
  x-gala-success-category: oauth-callback
20571
20690
  x-gala-tenant-scope: NONE
20691
+ /v2/callbacks/stripe:
20692
+ post:
20693
+ description: |
20694
+ Stripe billing webhook. The body is the raw Stripe event JSON, opaque to this contract, authenticated by the `Stripe-Signature` header over the exact received bytes (`t=<unix>,v1=<hex>`, HMAC-SHA256 of `<t>.<raw body>`, five-minute tolerance). `200` means the event was accepted, including a duplicate delivery and an event type that is ignored. `400` is a malformed body or a missing, bad or expired signature. `503` means billing is not configured on this deployment.
20695
+ operationId: postCallbacksStripe
20696
+ parameters:
20697
+ - $ref: "#/components/parameters/XCorrelationId"
20698
+ - example: t=1700000000,v1=0000000000000000000000000000000000000000000000000000000000000000
20699
+ in: header
20700
+ name: Stripe-Signature
20701
+ required: true
20702
+ schema:
20703
+ maxLength: 1024
20704
+ minLength: 1
20705
+ type: string
20706
+ requestBody:
20707
+ content:
20708
+ application/json:
20709
+ examples:
20710
+ nominal:
20711
+ summary: Nominal valid request
20712
+ value: {}
20713
+ schema:
20714
+ $ref: "#/components/schemas/PostCallbacksStripeRequest"
20715
+ required: true
20716
+ responses:
20717
+ "200":
20718
+ content:
20719
+ application/json:
20720
+ examples:
20721
+ nominal:
20722
+ summary: Nominal successful response
20723
+ value:
20724
+ accepted: true
20725
+ schema:
20726
+ $ref: "#/components/schemas/PostCallbacksStripeResponse"
20727
+ description: accept an authenticated Stripe billing event succeeded
20728
+ headers:
20729
+ Cache-Control:
20730
+ $ref: "#/components/headers/CacheControlNoStore"
20731
+ X-Correlation-Id:
20732
+ $ref: "#/components/headers/XCorrelationId"
20733
+ "400":
20734
+ $ref: "#/components/responses/ValidationFailed"
20735
+ "413":
20736
+ $ref: "#/components/responses/RequestTooLarge"
20737
+ "415":
20738
+ $ref: "#/components/responses/UnsupportedMediaType"
20739
+ "503":
20740
+ content:
20741
+ application/problem+json:
20742
+ examples:
20743
+ DEPENDENCY_UNAVAILABLE:
20744
+ summary: DEPENDENCY_UNAVAILABLE
20745
+ value:
20746
+ code: DEPENDENCY_UNAVAILABLE
20747
+ correlationId: 018f0000-0000-7000-8000-000000000001
20748
+ detail: See the operation contract.
20749
+ errors: []
20750
+ retryable: true
20751
+ schemaId: urn:gala:schema:problem:2.0.0
20752
+ schemaVersion: 2.0.0
20753
+ status: 503
20754
+ title: DEPENDENCY_UNAVAILABLE
20755
+ type: urn:gala:problem:dependency-unavailable
20756
+ schema:
20757
+ $ref: "#/components/schemas/Problem"
20758
+ description: DEPENDENCY_UNAVAILABLE
20759
+ headers:
20760
+ Cache-Control:
20761
+ $ref: "#/components/headers/CacheControlNoStore"
20762
+ X-Correlation-Id:
20763
+ $ref: "#/components/headers/XCorrelationId"
20764
+ x-gala-problem-codes:
20765
+ - DEPENDENCY_UNAVAILABLE
20766
+ security:
20767
+ - stripeWebhookSignature: []
20768
+ summary: accept an authenticated Stripe billing event
20769
+ tags:
20770
+ - callbacks
20771
+ x-gala-activation-gate: MVP
20772
+ x-gala-activation-guards:
20773
+ - NONE
20774
+ x-gala-capability-key: null
20775
+ x-gala-concurrency: provider-event-id-idempotency-and-event-time-ordering
20776
+ x-gala-conditional-capabilities: []
20777
+ x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
20778
+ x-gala-nullability: required-and-nullable-are-explicit
20779
+ x-gala-purpose: accept an authenticated Stripe billing event
20780
+ x-gala-reachable-problems:
20781
+ - DEPENDENCY_UNAVAILABLE
20782
+ - VALIDATION_FAILED
20783
+ x-gala-replay-identity: stripe-event-id
20784
+ x-gala-state-guards:
20785
+ - NONE
20786
+ x-gala-success-category: billing-callback
20787
+ x-gala-tenant-scope: NONE
20572
20788
  /v2/claims/{token}:
20573
20789
  get:
20574
20790
  description: |
@@ -31854,7 +32070,7 @@ paths:
31854
32070
  x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
31855
32071
  patch:
31856
32072
  description: |
31857
- 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`.
31858
32074
  operationId: patchOrganizationsByOrganizationIdPublicationsByPublicationId
31859
32075
  parameters:
31860
32076
  - $ref: "#/components/parameters/XCorrelationId"
@@ -34305,6 +34521,21 @@ paths:
34305
34521
  status: 409
34306
34522
  title: INVALID_SOURCE_STATE
34307
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
34308
34539
  TRANSFER_PENDING:
34309
34540
  summary: TRANSFER_PENDING
34310
34541
  value:
@@ -34320,7 +34551,7 @@ paths:
34320
34551
  type: urn:gala:problem:transfer-pending
34321
34552
  schema:
34322
34553
  $ref: "#/components/schemas/Problem"
34323
- description: COMMAND_REPLAY_CONFLICT, INVALID_SOURCE_STATE, TRANSFER_PENDING
34554
+ description: COMMAND_REPLAY_CONFLICT, INVALID_SOURCE_STATE, STAGGERED_RELEASE_DISABLED, TRANSFER_PENDING
34324
34555
  headers:
34325
34556
  Cache-Control:
34326
34557
  $ref: "#/components/headers/CacheControlNoStore"
@@ -34331,11 +34562,27 @@ paths:
34331
34562
  x-gala-problem-codes:
34332
34563
  - COMMAND_REPLAY_CONFLICT
34333
34564
  - INVALID_SOURCE_STATE
34565
+ - STAGGERED_RELEASE_DISABLED
34334
34566
  - TRANSFER_PENDING
34335
34567
  "422":
34336
34568
  content:
34337
34569
  application/problem+json:
34338
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
34339
34586
  VALIDATION_FAILED:
34340
34587
  summary: VALIDATION_FAILED
34341
34588
  value:
@@ -34351,13 +34598,14 @@ paths:
34351
34598
  type: urn:gala:problem:validation-failed
34352
34599
  schema:
34353
34600
  $ref: "#/components/schemas/Problem"
34354
- description: VALIDATION_FAILED
34601
+ description: PUBLISH_AFTER_ON_PUBLISHED_POST, VALIDATION_FAILED
34355
34602
  headers:
34356
34603
  Cache-Control:
34357
34604
  $ref: "#/components/headers/CacheControlNoStore"
34358
34605
  X-Correlation-Id:
34359
34606
  $ref: "#/components/headers/XCorrelationId"
34360
34607
  x-gala-problem-codes:
34608
+ - PUBLISH_AFTER_ON_PUBLISHED_POST
34361
34609
  - VALIDATION_FAILED
34362
34610
  "503":
34363
34611
  content:
@@ -34408,8 +34656,10 @@ paths:
34408
34656
  - CAPABILITY_UNAVAILABLE
34409
34657
  - COMMAND_REPLAY_CONFLICT
34410
34658
  - INVALID_SOURCE_STATE
34659
+ - PUBLISH_AFTER_ON_PUBLISHED_POST
34411
34660
  - REQUEST_FIELD_UNKNOWN
34412
34661
  - RESOURCE_NOT_FOUND
34662
+ - STAGGERED_RELEASE_DISABLED
34413
34663
  - TRANSFER_PENDING
34414
34664
  - VALIDATION_FAILED
34415
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.17.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.17.0",
101
- "bom-ref": "@rathnasgala2/schemas@3.17.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.17.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.17.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.17.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.17.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.17.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.17.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.17.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.17.0",
1067
+ "ref": "@rathnasgala2/schemas@3.19.0",
1068
1068
  "dependsOn": [
1069
- "@rathnasgala2/schemas@3.17.0|ajv-formats@3.0.1",
1070
- "@rathnasgala2/schemas@3.17.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.17.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.17.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.17.0|ajv@8.20.0",
1098
+ "ref": "@rathnasgala2/schemas@3.19.0|ajv@8.20.0",
1099
1099
  "dependsOn": [
1100
- "@rathnasgala2/schemas@3.17.0|fast-deep-equal@3.1.3",
1101
- "@rathnasgala2/schemas@3.17.0|fast-uri@3.1.8",
1102
- "@rathnasgala2/schemas@3.17.0|json-schema-traverse@1.0.0",
1103
- "@rathnasgala2/schemas@3.17.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.17.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.17.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.17.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.17.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"],