@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.
- package/THIRD_PARTY_LICENSES.json +3 -3
- package/diagnostics/diagnostic-map.json +6 -0
- package/docs/catalogs/schema-inventory.json +3 -3
- package/examples/valid/content-frontmatter/rules.json +11 -0
- package/fixtures/boundary/content-frontmatter/rules.json +11 -0
- package/fixtures/invalid/content-frontmatter/SCHEMA_PATTERN_INVALID/cases.json +11 -0
- package/fixtures/invalid/content-frontmatter/SCHEMA_TYPE_INVALID/cases.json +9 -0
- package/fixtures/manifest.json +48 -2
- package/fixtures/unknown-field/content-frontmatter/rules.json +2 -0
- package/generated/browser/validator-core.mjs +2 -2
- package/generated/typescript/contracts/content-frontmatter.d.ts +3 -0
- package/openapi/http-catalog.json +15 -2
- package/openapi/openapi.yaml +256 -6
- package/package.json +1 -1
- package/sbom.cdx.json +23 -23
- package/schemas/content-frontmatter.schema.json +6 -0
|
@@ -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:
|
|
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:
|
|
2702
|
+
"digest": "sha256:2d26250d96a503479216501c5aa63e1de98fc77276433294d79db1f30fe5f8b8"
|
|
2690
2703
|
}
|
package/openapi/openapi.yaml
CHANGED
|
@@ -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
package/sbom.cdx.json
CHANGED
|
@@ -97,8 +97,8 @@
|
|
|
97
97
|
"type": "library",
|
|
98
98
|
"name": "schemas",
|
|
99
99
|
"group": "@rathnasgala2",
|
|
100
|
-
"version": "3.
|
|
101
|
-
"bom-ref": "@rathnasgala2/schemas@3.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
1067
|
+
"ref": "@rathnasgala2/schemas@3.19.0",
|
|
1068
1068
|
"dependsOn": [
|
|
1069
|
-
"@rathnasgala2/schemas@3.
|
|
1070
|
-
"@rathnasgala2/schemas@3.
|
|
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.
|
|
1092
|
+
"ref": "@rathnasgala2/schemas@3.19.0|ajv-formats@3.0.1",
|
|
1093
1093
|
"dependsOn": [
|
|
1094
|
-
"@rathnasgala2/schemas@3.
|
|
1094
|
+
"@rathnasgala2/schemas@3.19.0|ajv@8.20.0"
|
|
1095
1095
|
]
|
|
1096
1096
|
},
|
|
1097
1097
|
{
|
|
1098
|
-
"ref": "@rathnasgala2/schemas@3.
|
|
1098
|
+
"ref": "@rathnasgala2/schemas@3.19.0|ajv@8.20.0",
|
|
1099
1099
|
"dependsOn": [
|
|
1100
|
-
"@rathnasgala2/schemas@3.
|
|
1101
|
-
"@rathnasgala2/schemas@3.
|
|
1102
|
-
"@rathnasgala2/schemas@3.
|
|
1103
|
-
"@rathnasgala2/schemas@3.
|
|
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.
|
|
1107
|
+
"ref": "@rathnasgala2/schemas@3.19.0|fast-deep-equal@3.1.3"
|
|
1108
1108
|
},
|
|
1109
1109
|
{
|
|
1110
|
-
"ref": "@rathnasgala2/schemas@3.
|
|
1110
|
+
"ref": "@rathnasgala2/schemas@3.19.0|fast-uri@3.1.8"
|
|
1111
1111
|
},
|
|
1112
1112
|
{
|
|
1113
|
-
"ref": "@rathnasgala2/schemas@3.
|
|
1113
|
+
"ref": "@rathnasgala2/schemas@3.19.0|json-schema-traverse@1.0.0"
|
|
1114
1114
|
},
|
|
1115
1115
|
{
|
|
1116
|
-
"ref": "@rathnasgala2/schemas@3.
|
|
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"],
|