@rathnasgala2/schemas 3.27.0 → 3.29.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 +1 -1
- package/docs/catalogs/schema-inventory.json +2 -2
- package/openapi/http-catalog.json +41 -2
- package/openapi/openapi.yaml +1409 -0
- package/package.json +1 -1
- package/sbom.cdx.json +23 -23
package/openapi/openapi.yaml
CHANGED
|
@@ -13,6 +13,14 @@ components:
|
|
|
13
13
|
pattern: ^no-store$
|
|
14
14
|
type: string
|
|
15
15
|
x-gala-const: no-store
|
|
16
|
+
CacheControlPrivateNoCache:
|
|
17
|
+
description: "SCHEMA-3.29.0: `private, no-cache` -- a browser may store the body but must revalidate it (`If-None-Match`) before every use. Used by reads that carry a strong `ETag` and answer `304`."
|
|
18
|
+
required: true
|
|
19
|
+
schema:
|
|
20
|
+
enum:
|
|
21
|
+
- private, no-cache
|
|
22
|
+
- no-cache, private
|
|
23
|
+
type: string
|
|
16
24
|
ContentDispositionAttachment:
|
|
17
25
|
description: "The archive is a download: `attachment` with its file name."
|
|
18
26
|
required: true
|
|
@@ -1491,6 +1499,12 @@ components:
|
|
|
1491
1499
|
date. `deleteDate` (SCHEMA-3.25.1, optional and nullable) is the
|
|
1492
1500
|
header's scheduled-removal date.
|
|
1493
1501
|
properties:
|
|
1502
|
+
authorIds:
|
|
1503
|
+
description: "SCHEMA-3.29.0: the header's `authors` (stable ids, header order), so a card can show a byline without reading the document; absent when the header names none."
|
|
1504
|
+
items:
|
|
1505
|
+
$ref: "#/components/schemas/PortableContentFrontmatterStableId"
|
|
1506
|
+
maxItems: 32
|
|
1507
|
+
type: array
|
|
1494
1508
|
contentId:
|
|
1495
1509
|
$ref: "#/components/schemas/PortableContentFrontmatterStableId"
|
|
1496
1510
|
createdAt:
|
|
@@ -1500,6 +1514,13 @@ components:
|
|
|
1500
1514
|
oneOf:
|
|
1501
1515
|
- $ref: "#/components/schemas/PortableContentFrontmatterDeleteDate"
|
|
1502
1516
|
- type: "null"
|
|
1517
|
+
description:
|
|
1518
|
+
description: "SCHEMA-3.28.0: the post's front-matter description, so the Posts list can show an excerpt without reading each document; absent when the header carries none."
|
|
1519
|
+
maxLength: 320
|
|
1520
|
+
type: string
|
|
1521
|
+
heroPath:
|
|
1522
|
+
$ref: "#/components/schemas/PortableContentFrontmatterRepoRelativePath"
|
|
1523
|
+
description: "SCHEMA-3.29.0: the repository path of the header's `hero` image, for a card thumbnail; absent when the header carries no hero."
|
|
1503
1524
|
language:
|
|
1504
1525
|
$ref: "#/components/schemas/PortableContentFrontmatterBcp47"
|
|
1505
1526
|
publishAfter:
|
|
@@ -1513,6 +1534,12 @@ components:
|
|
|
1513
1534
|
$ref: "#/components/schemas/PortableContentFrontmatterSlug"
|
|
1514
1535
|
status:
|
|
1515
1536
|
$ref: "#/components/schemas/ContentItemStatus"
|
|
1537
|
+
tags:
|
|
1538
|
+
description: "SCHEMA-3.29.0: the header's `tags`, so a card can show them; absent when the header carries none."
|
|
1539
|
+
items:
|
|
1540
|
+
$ref: "#/components/schemas/PortableContentFrontmatterPlainLabel"
|
|
1541
|
+
maxItems: 32
|
|
1542
|
+
type: array
|
|
1516
1543
|
title:
|
|
1517
1544
|
$ref: "#/components/schemas/PortableContentFrontmatterPlainText"
|
|
1518
1545
|
x-gala-graphemeLength:
|
|
@@ -1570,6 +1597,41 @@ components:
|
|
|
1570
1597
|
- HEADER_INVALID
|
|
1571
1598
|
- TOO_LARGE
|
|
1572
1599
|
type: string
|
|
1600
|
+
ContentPreviewContext:
|
|
1601
|
+
additionalProperties: false
|
|
1602
|
+
description: |
|
|
1603
|
+
SCHEMA-3.29.0. The repository facts a draft preview needs besides the
|
|
1604
|
+
post, all read at `revision`. Every member is best-effort: a file that
|
|
1605
|
+
is absent, unreadable, over 256 KiB or invalid against its schema is
|
|
1606
|
+
`null` (`navigation`, `publication`) or left out of `authors`, and
|
|
1607
|
+
never fails the read. `authors` holds the author files the
|
|
1608
|
+
publication document declares, in the order it declares them, at most
|
|
1609
|
+
200.
|
|
1610
|
+
properties:
|
|
1611
|
+
authors:
|
|
1612
|
+
items:
|
|
1613
|
+
$ref: "#/components/schemas/PortableAuthorDocument"
|
|
1614
|
+
maxItems: 200
|
|
1615
|
+
type: array
|
|
1616
|
+
navigation:
|
|
1617
|
+
description: The `gala/navigation.json` document, validated against its schema; `null` when the file is absent or invalid.
|
|
1618
|
+
oneOf:
|
|
1619
|
+
- $ref: "#/components/schemas/PortableNavigationDocument"
|
|
1620
|
+
- type: "null"
|
|
1621
|
+
publication:
|
|
1622
|
+
description: The `gala/publication.json` document, validated against its schema; `null` when the file is absent or invalid.
|
|
1623
|
+
oneOf:
|
|
1624
|
+
- $ref: "#/components/schemas/PortablePublicationDocument"
|
|
1625
|
+
- type: "null"
|
|
1626
|
+
revision:
|
|
1627
|
+
pattern: ^(?:sha1:[0-9a-f]{40}|sha256:[0-9a-f]{64})$
|
|
1628
|
+
type: string
|
|
1629
|
+
required:
|
|
1630
|
+
- revision
|
|
1631
|
+
- navigation
|
|
1632
|
+
- publication
|
|
1633
|
+
- authors
|
|
1634
|
+
type: object
|
|
1573
1635
|
ContentPublicationAuthorSummary:
|
|
1574
1636
|
additionalProperties: false
|
|
1575
1637
|
properties:
|
|
@@ -3246,6 +3308,8 @@ components:
|
|
|
3246
3308
|
- body
|
|
3247
3309
|
- digest
|
|
3248
3310
|
type: object
|
|
3311
|
+
GetOrganizationsByOrganizationIdPublicationsByPublicationIdContentPreviewContextResponse:
|
|
3312
|
+
$ref: "#/components/schemas/ContentPreviewContext"
|
|
3249
3313
|
GetOrganizationsByOrganizationIdPublicationsByPublicationIdContentResponse:
|
|
3250
3314
|
additionalProperties: false
|
|
3251
3315
|
allOf:
|
|
@@ -3870,6 +3934,8 @@ components:
|
|
|
3870
3934
|
- items
|
|
3871
3935
|
- nextCursor
|
|
3872
3936
|
type: object
|
|
3937
|
+
GetOrganizationsByOrganizationIdPublicationsByPublicationIdOverviewResponse:
|
|
3938
|
+
$ref: "#/components/schemas/PublicationOverview"
|
|
3873
3939
|
GetOrganizationsByOrganizationIdPublicationsByPublicationIdPolicySettingsResponse:
|
|
3874
3940
|
additionalProperties: false
|
|
3875
3941
|
properties:
|
|
@@ -9140,10 +9206,175 @@ components:
|
|
|
9140
9206
|
type: object
|
|
9141
9207
|
required: []
|
|
9142
9208
|
type: object
|
|
9209
|
+
PortableAuthorBcp47:
|
|
9210
|
+
description: Structurally valid canonical BCP-47 language tag.
|
|
9211
|
+
format: gala-bcp47
|
|
9212
|
+
maxLength: 255
|
|
9213
|
+
minLength: 1
|
|
9214
|
+
pattern: ^[A-Za-z0-9-]+$
|
|
9215
|
+
type: string
|
|
9216
|
+
x-gala-utf8ByteLength:
|
|
9217
|
+
maximum: 255
|
|
9218
|
+
minimum: 1
|
|
9219
|
+
PortableAuthorDocument:
|
|
9220
|
+
additionalProperties: false
|
|
9221
|
+
properties:
|
|
9222
|
+
avatarRef:
|
|
9223
|
+
$ref: "#/components/schemas/PortableAuthorRepoRelativePath"
|
|
9224
|
+
biography:
|
|
9225
|
+
$ref: "#/components/schemas/PortableAuthorPlainText"
|
|
9226
|
+
x-gala-graphemeLength:
|
|
9227
|
+
maximum: 2000
|
|
9228
|
+
minimum: 0
|
|
9229
|
+
displayName:
|
|
9230
|
+
$ref: "#/components/schemas/PortableAuthorPlainText"
|
|
9231
|
+
x-gala-graphemeLength:
|
|
9232
|
+
maximum: 120
|
|
9233
|
+
minimum: 1
|
|
9234
|
+
extensions:
|
|
9235
|
+
$ref: "#/components/schemas/PortableAuthorExtensionMap"
|
|
9236
|
+
id:
|
|
9237
|
+
$ref: "#/components/schemas/PortableAuthorStableId"
|
|
9238
|
+
links:
|
|
9239
|
+
items:
|
|
9240
|
+
$ref: "#/components/schemas/PortableAuthorSocialLink"
|
|
9241
|
+
maxItems: 32
|
|
9242
|
+
minItems: 0
|
|
9243
|
+
type: array
|
|
9244
|
+
localized:
|
|
9245
|
+
items:
|
|
9246
|
+
$ref: "#/components/schemas/PortableAuthorLocalizedAuthor"
|
|
9247
|
+
maxItems: 32
|
|
9248
|
+
minItems: 0
|
|
9249
|
+
type: array
|
|
9250
|
+
pronouns:
|
|
9251
|
+
$ref: "#/components/schemas/PortableAuthorPlainText"
|
|
9252
|
+
x-gala-graphemeLength:
|
|
9253
|
+
maximum: 80
|
|
9254
|
+
minimum: 1
|
|
9255
|
+
schemaId:
|
|
9256
|
+
pattern: ^urn:gala:schema:author:2\.0\.0$
|
|
9257
|
+
type: string
|
|
9258
|
+
x-gala-const: urn:gala:schema:author:2.0.0
|
|
9259
|
+
schemaVersion:
|
|
9260
|
+
pattern: ^2\.0\.0$
|
|
9261
|
+
type: string
|
|
9262
|
+
x-gala-const: 2.0.0
|
|
9263
|
+
required:
|
|
9264
|
+
- schemaId
|
|
9265
|
+
- schemaVersion
|
|
9266
|
+
- id
|
|
9267
|
+
- displayName
|
|
9268
|
+
- biography
|
|
9269
|
+
- links
|
|
9270
|
+
- localized
|
|
9271
|
+
- extensions
|
|
9272
|
+
title: Gala author contract
|
|
9273
|
+
type: object
|
|
9274
|
+
PortableAuthorExtensionKey:
|
|
9275
|
+
description: Reverse-DNS extension namespace that cannot shadow a core key.
|
|
9276
|
+
format: gala-extension-key
|
|
9277
|
+
type: string
|
|
9278
|
+
PortableAuthorExtensionMap:
|
|
9279
|
+
additionalProperties:
|
|
9280
|
+
x-gala-maxCanonicalBytes: 16384
|
|
9281
|
+
maxProperties: 32
|
|
9282
|
+
propertyNames:
|
|
9283
|
+
$ref: "#/components/schemas/PortableAuthorExtensionKey"
|
|
9284
|
+
type: object
|
|
9285
|
+
x-gala-maxCanonicalBytes: 131072
|
|
9286
|
+
PortableAuthorLocalizedAuthor:
|
|
9287
|
+
additionalProperties: false
|
|
9288
|
+
properties:
|
|
9289
|
+
biography:
|
|
9290
|
+
$ref: "#/components/schemas/PortableAuthorPlainText"
|
|
9291
|
+
x-gala-graphemeLength:
|
|
9292
|
+
maximum: 2000
|
|
9293
|
+
minimum: 0
|
|
9294
|
+
displayName:
|
|
9295
|
+
$ref: "#/components/schemas/PortableAuthorPlainText"
|
|
9296
|
+
x-gala-graphemeLength:
|
|
9297
|
+
maximum: 120
|
|
9298
|
+
minimum: 1
|
|
9299
|
+
language:
|
|
9300
|
+
$ref: "#/components/schemas/PortableAuthorBcp47"
|
|
9301
|
+
required:
|
|
9302
|
+
- language
|
|
9303
|
+
- displayName
|
|
9304
|
+
- biography
|
|
9305
|
+
type: object
|
|
9306
|
+
PortableAuthorPlainLabel:
|
|
9307
|
+
description: Normalized Unicode plain text without markup, controls, or bidi overrides.
|
|
9308
|
+
format: gala-plain-label
|
|
9309
|
+
type: string
|
|
9310
|
+
x-gala-graphemeLength:
|
|
9311
|
+
maximum: 80
|
|
9312
|
+
minimum: 1
|
|
9143
9313
|
PortableAuthorPlainText:
|
|
9144
9314
|
description: NFC Unicode text without disallowed C0/C1 controls or bidi override/isolate controls.
|
|
9145
9315
|
format: gala-plain-text
|
|
9146
9316
|
type: string
|
|
9317
|
+
PortableAuthorRepoRelativePath:
|
|
9318
|
+
description: NFC UTF-8 repository-relative path using slash separators, with no leading slash, dot segment, NUL, backslash, or percent-decoded traversal.
|
|
9319
|
+
format: gala-repository-relative-path
|
|
9320
|
+
maxLength: 512
|
|
9321
|
+
minLength: 1
|
|
9322
|
+
pattern: ^(?!/)(?!.*\\)(?!.*\u0000).+$
|
|
9323
|
+
type: string
|
|
9324
|
+
x-gala-utf8ByteLength:
|
|
9325
|
+
maximum: 512
|
|
9326
|
+
PortableAuthorSocialLink:
|
|
9327
|
+
additionalProperties: false
|
|
9328
|
+
allOf:
|
|
9329
|
+
- else:
|
|
9330
|
+
properties:
|
|
9331
|
+
uri:
|
|
9332
|
+
$ref: "#/components/schemas/PortableAuthorUrlHttps"
|
|
9333
|
+
if:
|
|
9334
|
+
properties:
|
|
9335
|
+
type:
|
|
9336
|
+
pattern: ^email$
|
|
9337
|
+
type: string
|
|
9338
|
+
x-gala-const: email
|
|
9339
|
+
required:
|
|
9340
|
+
- type
|
|
9341
|
+
then:
|
|
9342
|
+
properties:
|
|
9343
|
+
uri:
|
|
9344
|
+
format: uri
|
|
9345
|
+
pattern: "^mailto:"
|
|
9346
|
+
type: string
|
|
9347
|
+
properties:
|
|
9348
|
+
label:
|
|
9349
|
+
$ref: "#/components/schemas/PortableAuthorPlainLabel"
|
|
9350
|
+
type:
|
|
9351
|
+
enum:
|
|
9352
|
+
- website
|
|
9353
|
+
- email
|
|
9354
|
+
- github
|
|
9355
|
+
- linkedin
|
|
9356
|
+
- mastodon
|
|
9357
|
+
- bluesky
|
|
9358
|
+
- x
|
|
9359
|
+
- youtube
|
|
9360
|
+
- other
|
|
9361
|
+
uri:
|
|
9362
|
+
maxLength: 2048
|
|
9363
|
+
minLength: 1
|
|
9364
|
+
type: string
|
|
9365
|
+
required:
|
|
9366
|
+
- type
|
|
9367
|
+
- uri
|
|
9368
|
+
type: object
|
|
9369
|
+
PortableAuthorStableId:
|
|
9370
|
+
description: Lowercase canonical UUIDv7. Once published, it is immutable; its time ordering conveys neither chronology nor authority.
|
|
9371
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
9372
|
+
type: string
|
|
9373
|
+
PortableAuthorUrlHttps:
|
|
9374
|
+
description: Absolute HTTPS URL without embedded credentials.
|
|
9375
|
+
format: uri
|
|
9376
|
+
pattern: ^https://(?![^/?#]*@)
|
|
9377
|
+
type: string
|
|
9147
9378
|
PortableContentFrontmatterBcp47:
|
|
9148
9379
|
description: Structurally valid canonical BCP-47 language tag.
|
|
9149
9380
|
format: gala-bcp47
|
|
@@ -15003,6 +15234,159 @@ components:
|
|
|
15003
15234
|
- kind
|
|
15004
15235
|
- token
|
|
15005
15236
|
type: object
|
|
15237
|
+
PortableNavigationCanonicalRoute:
|
|
15238
|
+
description: Absolute normalized route with no query, fragment, dot segment, double slash, or non-normalized percent encoding.
|
|
15239
|
+
format: gala-canonical-route
|
|
15240
|
+
minLength: 1
|
|
15241
|
+
pattern: ^/(?!/)(?!.*//)(?!.*[?#]).*$
|
|
15242
|
+
type: string
|
|
15243
|
+
PortableNavigationDocument:
|
|
15244
|
+
$comment: The navigation graph validator rejects duplicate normalized internal routes within each collection.
|
|
15245
|
+
additionalProperties: false
|
|
15246
|
+
properties:
|
|
15247
|
+
extensions:
|
|
15248
|
+
$ref: "#/components/schemas/PortableNavigationExtensionMap"
|
|
15249
|
+
footerItems:
|
|
15250
|
+
items:
|
|
15251
|
+
$ref: "#/components/schemas/PortableNavigationNavigationItem"
|
|
15252
|
+
maxItems: 50
|
|
15253
|
+
minItems: 0
|
|
15254
|
+
type: array
|
|
15255
|
+
items:
|
|
15256
|
+
items:
|
|
15257
|
+
$ref: "#/components/schemas/PortableNavigationNavigationItem"
|
|
15258
|
+
maxItems: 100
|
|
15259
|
+
minItems: 0
|
|
15260
|
+
type: array
|
|
15261
|
+
schemaId:
|
|
15262
|
+
pattern: ^urn:gala:schema:navigation:2\.0\.0$
|
|
15263
|
+
type: string
|
|
15264
|
+
x-gala-const: urn:gala:schema:navigation:2.0.0
|
|
15265
|
+
schemaVersion:
|
|
15266
|
+
pattern: ^2\.0\.0$
|
|
15267
|
+
type: string
|
|
15268
|
+
x-gala-const: 2.0.0
|
|
15269
|
+
required:
|
|
15270
|
+
- schemaId
|
|
15271
|
+
- schemaVersion
|
|
15272
|
+
- items
|
|
15273
|
+
- footerItems
|
|
15274
|
+
- extensions
|
|
15275
|
+
title: Gala navigation contract
|
|
15276
|
+
type: object
|
|
15277
|
+
PortableNavigationExtensionKey:
|
|
15278
|
+
description: Reverse-DNS extension namespace that cannot shadow a core key.
|
|
15279
|
+
format: gala-extension-key
|
|
15280
|
+
type: string
|
|
15281
|
+
PortableNavigationExtensionMap:
|
|
15282
|
+
additionalProperties:
|
|
15283
|
+
x-gala-maxCanonicalBytes: 16384
|
|
15284
|
+
maxProperties: 32
|
|
15285
|
+
propertyNames:
|
|
15286
|
+
$ref: "#/components/schemas/PortableNavigationExtensionKey"
|
|
15287
|
+
type: object
|
|
15288
|
+
x-gala-maxCanonicalBytes: 131072
|
|
15289
|
+
PortableNavigationNavigationItem:
|
|
15290
|
+
additionalProperties: false
|
|
15291
|
+
allOf:
|
|
15292
|
+
- else:
|
|
15293
|
+
not:
|
|
15294
|
+
required:
|
|
15295
|
+
- route
|
|
15296
|
+
required:
|
|
15297
|
+
- url
|
|
15298
|
+
if:
|
|
15299
|
+
properties:
|
|
15300
|
+
type:
|
|
15301
|
+
pattern: ^internal$
|
|
15302
|
+
type: string
|
|
15303
|
+
x-gala-const: internal
|
|
15304
|
+
required:
|
|
15305
|
+
- type
|
|
15306
|
+
then:
|
|
15307
|
+
not:
|
|
15308
|
+
required:
|
|
15309
|
+
- url
|
|
15310
|
+
required:
|
|
15311
|
+
- route
|
|
15312
|
+
properties:
|
|
15313
|
+
children:
|
|
15314
|
+
items:
|
|
15315
|
+
$ref: "#/components/schemas/PortableNavigationNavigationLeaf"
|
|
15316
|
+
maxItems: 20
|
|
15317
|
+
minItems: 0
|
|
15318
|
+
type: array
|
|
15319
|
+
label:
|
|
15320
|
+
$ref: "#/components/schemas/PortableNavigationPlainLabel"
|
|
15321
|
+
route:
|
|
15322
|
+
$ref: "#/components/schemas/PortableNavigationCanonicalRoute"
|
|
15323
|
+
type:
|
|
15324
|
+
enum:
|
|
15325
|
+
- internal
|
|
15326
|
+
- external
|
|
15327
|
+
url:
|
|
15328
|
+
$ref: "#/components/schemas/PortableNavigationUrlHttps"
|
|
15329
|
+
required:
|
|
15330
|
+
- type
|
|
15331
|
+
- label
|
|
15332
|
+
- children
|
|
15333
|
+
type: object
|
|
15334
|
+
PortableNavigationNavigationLeaf:
|
|
15335
|
+
additionalProperties: false
|
|
15336
|
+
allOf:
|
|
15337
|
+
- else:
|
|
15338
|
+
not:
|
|
15339
|
+
required:
|
|
15340
|
+
- route
|
|
15341
|
+
required:
|
|
15342
|
+
- url
|
|
15343
|
+
if:
|
|
15344
|
+
properties:
|
|
15345
|
+
type:
|
|
15346
|
+
pattern: ^internal$
|
|
15347
|
+
type: string
|
|
15348
|
+
x-gala-const: internal
|
|
15349
|
+
required:
|
|
15350
|
+
- type
|
|
15351
|
+
then:
|
|
15352
|
+
not:
|
|
15353
|
+
required:
|
|
15354
|
+
- url
|
|
15355
|
+
required:
|
|
15356
|
+
- route
|
|
15357
|
+
properties:
|
|
15358
|
+
children:
|
|
15359
|
+
maxItems: 0
|
|
15360
|
+
minItems: 0
|
|
15361
|
+
type: array
|
|
15362
|
+
x-gala-const: []
|
|
15363
|
+
label:
|
|
15364
|
+
$ref: "#/components/schemas/PortableNavigationPlainLabel"
|
|
15365
|
+
route:
|
|
15366
|
+
$ref: "#/components/schemas/PortableNavigationCanonicalRoute"
|
|
15367
|
+
type:
|
|
15368
|
+
enum:
|
|
15369
|
+
- internal
|
|
15370
|
+
- external
|
|
15371
|
+
url:
|
|
15372
|
+
$ref: "#/components/schemas/PortableNavigationUrlHttps"
|
|
15373
|
+
required:
|
|
15374
|
+
- type
|
|
15375
|
+
- label
|
|
15376
|
+
- children
|
|
15377
|
+
type: object
|
|
15378
|
+
PortableNavigationPlainLabel:
|
|
15379
|
+
description: Normalized Unicode plain text without markup, controls, or bidi overrides.
|
|
15380
|
+
format: gala-plain-label
|
|
15381
|
+
type: string
|
|
15382
|
+
x-gala-graphemeLength:
|
|
15383
|
+
maximum: 80
|
|
15384
|
+
minimum: 1
|
|
15385
|
+
PortableNavigationUrlHttps:
|
|
15386
|
+
description: Absolute HTTPS URL without embedded credentials.
|
|
15387
|
+
format: uri
|
|
15388
|
+
pattern: ^https://(?![^/?#]*@)
|
|
15389
|
+
type: string
|
|
15006
15390
|
PortableProblemCanonicalRoute:
|
|
15007
15391
|
description: Absolute normalized route with no query, fragment, dot segment, double slash, or non-normalized percent encoding.
|
|
15008
15392
|
format: gala-canonical-route
|
|
@@ -15210,6 +15594,33 @@ components:
|
|
|
15210
15594
|
x-gala-utf8ByteLength:
|
|
15211
15595
|
maximum: 255
|
|
15212
15596
|
minimum: 1
|
|
15597
|
+
PortablePublicationCanonicalRoute:
|
|
15598
|
+
description: Absolute normalized route with no query, fragment, dot segment, double slash, or non-normalized percent encoding.
|
|
15599
|
+
format: gala-canonical-route
|
|
15600
|
+
minLength: 1
|
|
15601
|
+
pattern: ^/(?!/)(?!.*//)(?!.*[?#]).*$
|
|
15602
|
+
type: string
|
|
15603
|
+
PortablePublicationContactForm:
|
|
15604
|
+
additionalProperties: false
|
|
15605
|
+
description: "SCHEMA-3.22.0: the site's contact form. `enabled` turns the form on, and the template renders the `/contact/` page only when it is true. `fields.website` and `fields.phone` add the optional Website and Phone inputs; name, email and message are always present. The intro text is not a member: it is the optional document `gala/theme-pages/contact.md`, and the template shows a default intro when it is absent. An absent `contactForm` means no form. The API, not the schema, limits the form to the Pro and Business plans."
|
|
15606
|
+
properties:
|
|
15607
|
+
enabled:
|
|
15608
|
+
type: boolean
|
|
15609
|
+
fields:
|
|
15610
|
+
additionalProperties: false
|
|
15611
|
+
properties:
|
|
15612
|
+
phone:
|
|
15613
|
+
type: boolean
|
|
15614
|
+
website:
|
|
15615
|
+
type: boolean
|
|
15616
|
+
required:
|
|
15617
|
+
- website
|
|
15618
|
+
- phone
|
|
15619
|
+
type: object
|
|
15620
|
+
required:
|
|
15621
|
+
- enabled
|
|
15622
|
+
- fields
|
|
15623
|
+
type: object
|
|
15213
15624
|
PortablePublicationCrawlers:
|
|
15214
15625
|
additionalProperties: false
|
|
15215
15626
|
properties:
|
|
@@ -15220,6 +15631,134 @@ components:
|
|
|
15220
15631
|
required:
|
|
15221
15632
|
- ai
|
|
15222
15633
|
type: object
|
|
15634
|
+
PortablePublicationDocument:
|
|
15635
|
+
additionalProperties: false
|
|
15636
|
+
properties:
|
|
15637
|
+
aiRights:
|
|
15638
|
+
$ref: "#/components/schemas/PortablePublicationAiRights"
|
|
15639
|
+
authors:
|
|
15640
|
+
items:
|
|
15641
|
+
$ref: "#/components/schemas/PortablePublicationRepoRelativePath"
|
|
15642
|
+
maxItems: 32
|
|
15643
|
+
minItems: 1
|
|
15644
|
+
type: array
|
|
15645
|
+
canonicalBase:
|
|
15646
|
+
$ref: "#/components/schemas/PortablePublicationUrlHttps"
|
|
15647
|
+
contactForm:
|
|
15648
|
+
$ref: "#/components/schemas/PortablePublicationContactForm"
|
|
15649
|
+
contactRef:
|
|
15650
|
+
$ref: "#/components/schemas/PortablePublicationRepoRelativePath"
|
|
15651
|
+
crawlers:
|
|
15652
|
+
$ref: "#/components/schemas/PortablePublicationCrawlers"
|
|
15653
|
+
defaultImageRef:
|
|
15654
|
+
$ref: "#/components/schemas/PortablePublicationRepoRelativePath"
|
|
15655
|
+
defaultLanguage:
|
|
15656
|
+
$ref: "#/components/schemas/PortablePublicationBcp47"
|
|
15657
|
+
description:
|
|
15658
|
+
$ref: "#/components/schemas/PortablePublicationPlainText"
|
|
15659
|
+
x-gala-graphemeLength:
|
|
15660
|
+
maximum: 500
|
|
15661
|
+
minimum: 1
|
|
15662
|
+
extensions:
|
|
15663
|
+
$ref: "#/components/schemas/PortablePublicationExtensionMap"
|
|
15664
|
+
footerCard:
|
|
15665
|
+
$ref: "#/components/schemas/PortablePublicationFooterCard"
|
|
15666
|
+
id:
|
|
15667
|
+
$ref: "#/components/schemas/PortablePublicationStableId"
|
|
15668
|
+
listen:
|
|
15669
|
+
$ref: "#/components/schemas/PortablePublicationListen"
|
|
15670
|
+
listing:
|
|
15671
|
+
$ref: "#/components/schemas/PortablePublicationListing"
|
|
15672
|
+
newsletter:
|
|
15673
|
+
$ref: "#/components/schemas/PortablePublicationNewsletter"
|
|
15674
|
+
performance:
|
|
15675
|
+
$ref: "#/components/schemas/PortablePublicationPerformance"
|
|
15676
|
+
policies:
|
|
15677
|
+
$ref: "#/components/schemas/PortablePublicationPublicationPolicies"
|
|
15678
|
+
profile:
|
|
15679
|
+
$ref: "#/components/schemas/PortablePublicationPublicationProfile"
|
|
15680
|
+
schemaId:
|
|
15681
|
+
pattern: ^urn:gala:schema:publication:2\.0\.0$
|
|
15682
|
+
type: string
|
|
15683
|
+
x-gala-const: urn:gala:schema:publication:2.0.0
|
|
15684
|
+
schemaVersion:
|
|
15685
|
+
pattern: ^2\.0\.0$
|
|
15686
|
+
type: string
|
|
15687
|
+
x-gala-const: 2.0.0
|
|
15688
|
+
sharing:
|
|
15689
|
+
$ref: "#/components/schemas/PortablePublicationSharing"
|
|
15690
|
+
slug:
|
|
15691
|
+
$ref: "#/components/schemas/PortablePublicationSlug"
|
|
15692
|
+
socialLinks:
|
|
15693
|
+
items:
|
|
15694
|
+
$ref: "#/components/schemas/PortablePublicationSocialLink"
|
|
15695
|
+
maxItems: 32
|
|
15696
|
+
minItems: 0
|
|
15697
|
+
type: array
|
|
15698
|
+
title:
|
|
15699
|
+
$ref: "#/components/schemas/PortablePublicationPlainText"
|
|
15700
|
+
x-gala-graphemeLength:
|
|
15701
|
+
maximum: 200
|
|
15702
|
+
minimum: 1
|
|
15703
|
+
required:
|
|
15704
|
+
- schemaId
|
|
15705
|
+
- schemaVersion
|
|
15706
|
+
- id
|
|
15707
|
+
- slug
|
|
15708
|
+
- title
|
|
15709
|
+
- description
|
|
15710
|
+
- canonicalBase
|
|
15711
|
+
- defaultLanguage
|
|
15712
|
+
- authors
|
|
15713
|
+
- socialLinks
|
|
15714
|
+
- extensions
|
|
15715
|
+
title: Gala publication contract
|
|
15716
|
+
type: object
|
|
15717
|
+
PortablePublicationExtensionKey:
|
|
15718
|
+
description: Reverse-DNS extension namespace that cannot shadow a core key.
|
|
15719
|
+
format: gala-extension-key
|
|
15720
|
+
type: string
|
|
15721
|
+
PortablePublicationExtensionMap:
|
|
15722
|
+
additionalProperties:
|
|
15723
|
+
x-gala-maxCanonicalBytes: 16384
|
|
15724
|
+
maxProperties: 32
|
|
15725
|
+
propertyNames:
|
|
15726
|
+
$ref: "#/components/schemas/PortablePublicationExtensionKey"
|
|
15727
|
+
type: object
|
|
15728
|
+
x-gala-maxCanonicalBytes: 131072
|
|
15729
|
+
PortablePublicationFooterCard:
|
|
15730
|
+
additionalProperties: false
|
|
15731
|
+
properties:
|
|
15732
|
+
authorIds:
|
|
15733
|
+
items:
|
|
15734
|
+
$ref: "#/components/schemas/PortablePublicationStableId"
|
|
15735
|
+
maxItems: 32
|
|
15736
|
+
minItems: 1
|
|
15737
|
+
type: array
|
|
15738
|
+
body:
|
|
15739
|
+
$ref: "#/components/schemas/PortablePublicationRepoRelativePath"
|
|
15740
|
+
enabled:
|
|
15741
|
+
type: boolean
|
|
15742
|
+
heading:
|
|
15743
|
+
$ref: "#/components/schemas/PortablePublicationPlainText"
|
|
15744
|
+
x-gala-graphemeLength:
|
|
15745
|
+
maximum: 120
|
|
15746
|
+
minimum: 1
|
|
15747
|
+
required:
|
|
15748
|
+
- enabled
|
|
15749
|
+
- heading
|
|
15750
|
+
- body
|
|
15751
|
+
- authorIds
|
|
15752
|
+
type: object
|
|
15753
|
+
PortablePublicationListen:
|
|
15754
|
+
additionalProperties: false
|
|
15755
|
+
description: "SCHEMA-3.26.0: the site's Listen setting. `enabled: true` offers the audio version of the posts that have one: the template adds a Listen button to the top bar, a small invitation on each post with audio and a playlist on the home page, and ships its script only while at least one published article carries a `listen` member. An absent `listen` means off. The API, not the schema, limits turning it on to the Pro and Business plans."
|
|
15756
|
+
properties:
|
|
15757
|
+
enabled:
|
|
15758
|
+
type: boolean
|
|
15759
|
+
required:
|
|
15760
|
+
- enabled
|
|
15761
|
+
type: object
|
|
15223
15762
|
PortablePublicationListing:
|
|
15224
15763
|
additionalProperties: false
|
|
15225
15764
|
description: "SCHEMA-3.25.0: listing settings. `pageSize` is the number of posts on each listing page (1 to 50); an absent member means 10."
|
|
@@ -15230,6 +15769,59 @@ components:
|
|
|
15230
15769
|
type: integer
|
|
15231
15770
|
required: []
|
|
15232
15771
|
type: object
|
|
15772
|
+
PortablePublicationNewsletter:
|
|
15773
|
+
description: "SCHEMA-3.22.0: the newsletter panel. Link mode (`mode` absent or `link`) sends readers to the author's own newsletter at `url`; Galascribe mode (`mode: \"galascribe\"`) collects and mails subscribers itself. An absent `newsletter` member means the panel is off."
|
|
15774
|
+
oneOf:
|
|
15775
|
+
- additionalProperties: false
|
|
15776
|
+
description: "Link mode: the panel links to an external newsletter. `mode` is optional and `link` when present, so a 3.21 publication still validates."
|
|
15777
|
+
properties:
|
|
15778
|
+
mode:
|
|
15779
|
+
pattern: ^link$
|
|
15780
|
+
type: string
|
|
15781
|
+
x-gala-const: link
|
|
15782
|
+
text:
|
|
15783
|
+
$ref: "#/components/schemas/PortablePublicationPlainText"
|
|
15784
|
+
x-gala-graphemeLength:
|
|
15785
|
+
maximum: 300
|
|
15786
|
+
minimum: 1
|
|
15787
|
+
title:
|
|
15788
|
+
$ref: "#/components/schemas/PortablePublicationPlainLabel"
|
|
15789
|
+
url:
|
|
15790
|
+
$ref: "#/components/schemas/PortablePublicationUrlHttps"
|
|
15791
|
+
required:
|
|
15792
|
+
- url
|
|
15793
|
+
- title
|
|
15794
|
+
- text
|
|
15795
|
+
type: object
|
|
15796
|
+
- additionalProperties: false
|
|
15797
|
+
description: "Galascribe mode: the panel is an email field and a Subscribe button. `title` and `text` are the panel heading and sentence; there is no `url`. The API refuses to turn this mode on until the site owner has a postal address in their Account."
|
|
15798
|
+
properties:
|
|
15799
|
+
emailContent:
|
|
15800
|
+
description: "`card` mails the post title, description, image and a Read the post button; the template renders no email fragment. `full` mails the whole post: for each published post the template renders an email-safe HTML fragment at `/_gala/email/<content id>.html` (`<content id>` is the post's front-matter `id`; absolute URLs and inline-safe markup only; `noindex`; absent from the sitemap, the feeds, the search index and the llms files), which the API fetches after the generation is certified live."
|
|
15801
|
+
enum:
|
|
15802
|
+
- card
|
|
15803
|
+
- full
|
|
15804
|
+
mode:
|
|
15805
|
+
pattern: ^galascribe$
|
|
15806
|
+
type: string
|
|
15807
|
+
x-gala-const: galascribe
|
|
15808
|
+
replyToOwner:
|
|
15809
|
+
description: When true, subscribers' replies go to the site owner's contact email; when false the emails carry no Reply-To.
|
|
15810
|
+
type: boolean
|
|
15811
|
+
text:
|
|
15812
|
+
$ref: "#/components/schemas/PortablePublicationPlainText"
|
|
15813
|
+
x-gala-graphemeLength:
|
|
15814
|
+
maximum: 300
|
|
15815
|
+
minimum: 1
|
|
15816
|
+
title:
|
|
15817
|
+
$ref: "#/components/schemas/PortablePublicationPlainLabel"
|
|
15818
|
+
required:
|
|
15819
|
+
- mode
|
|
15820
|
+
- title
|
|
15821
|
+
- text
|
|
15822
|
+
- emailContent
|
|
15823
|
+
- replyToOwner
|
|
15824
|
+
type: object
|
|
15233
15825
|
PortablePublicationPerformance:
|
|
15234
15826
|
additionalProperties: false
|
|
15235
15827
|
description: "SCHEMA-3.25.0: size budgets in bytes, each at least 1024 and optional. `htmlBytes` bounds a page's HTML, `cssBytes` and `jsBytes` bound the sum of the same-origin stylesheets and scripts a page links. A page over budget is reported; a budget never fails a build."
|
|
@@ -15261,6 +15853,43 @@ components:
|
|
|
15261
15853
|
description: NFC Unicode text without disallowed C0/C1 controls or bidi override/isolate controls.
|
|
15262
15854
|
format: gala-plain-text
|
|
15263
15855
|
type: string
|
|
15856
|
+
PortablePublicationPolicyPage:
|
|
15857
|
+
additionalProperties: false
|
|
15858
|
+
properties:
|
|
15859
|
+
body:
|
|
15860
|
+
$ref: "#/components/schemas/PortablePublicationRepoRelativePath"
|
|
15861
|
+
pattern: ^.+\.md$
|
|
15862
|
+
title:
|
|
15863
|
+
$ref: "#/components/schemas/PortablePublicationPlainText"
|
|
15864
|
+
x-gala-graphemeLength:
|
|
15865
|
+
maximum: 80
|
|
15866
|
+
minimum: 1
|
|
15867
|
+
required:
|
|
15868
|
+
- title
|
|
15869
|
+
- body
|
|
15870
|
+
type: object
|
|
15871
|
+
PortablePublicationPublicationPolicies:
|
|
15872
|
+
additionalProperties: false
|
|
15873
|
+
properties:
|
|
15874
|
+
privacy:
|
|
15875
|
+
$ref: "#/components/schemas/PortablePublicationPolicyPage"
|
|
15876
|
+
terms:
|
|
15877
|
+
$ref: "#/components/schemas/PortablePublicationPolicyPage"
|
|
15878
|
+
required:
|
|
15879
|
+
- terms
|
|
15880
|
+
- privacy
|
|
15881
|
+
type: object
|
|
15882
|
+
PortablePublicationPublicationProfile:
|
|
15883
|
+
additionalProperties: false
|
|
15884
|
+
properties:
|
|
15885
|
+
body:
|
|
15886
|
+
$ref: "#/components/schemas/PortablePublicationRepoRelativePath"
|
|
15887
|
+
route:
|
|
15888
|
+
$ref: "#/components/schemas/PortablePublicationCanonicalRoute"
|
|
15889
|
+
required:
|
|
15890
|
+
- route
|
|
15891
|
+
- body
|
|
15892
|
+
type: object
|
|
15264
15893
|
PortablePublicationRepoRelativePath:
|
|
15265
15894
|
description: NFC UTF-8 repository-relative path using slash separators, with no leading slash, dot segment, NUL, backslash, or percent-decoded traversal.
|
|
15266
15895
|
format: gala-repository-relative-path
|
|
@@ -15270,6 +15899,36 @@ components:
|
|
|
15270
15899
|
type: string
|
|
15271
15900
|
x-gala-utf8ByteLength:
|
|
15272
15901
|
maximum: 512
|
|
15902
|
+
PortablePublicationSharing:
|
|
15903
|
+
additionalProperties: false
|
|
15904
|
+
description: "SCHEMA-3.22.0: the share buttons shown on each article. `targets` is the display order: 0 to 11 unique members of the closed target set. An absent `sharing` member means `[\"copy-link\"]` (the Copy link button only); an empty `targets` array means no share buttons. `native` is shown only where the browser offers the system share sheet; every other target is a plain link to that service's documented share URL. Bookmark is not a share target and is unaffected."
|
|
15905
|
+
properties:
|
|
15906
|
+
targets:
|
|
15907
|
+
items:
|
|
15908
|
+
enum:
|
|
15909
|
+
- copy-link
|
|
15910
|
+
- native
|
|
15911
|
+
- x
|
|
15912
|
+
- bluesky
|
|
15913
|
+
- linkedin
|
|
15914
|
+
- facebook
|
|
15915
|
+
- hacker-news
|
|
15916
|
+
- whatsapp
|
|
15917
|
+
- telegram
|
|
15918
|
+
- reddit
|
|
15919
|
+
- email
|
|
15920
|
+
maxItems: 11
|
|
15921
|
+
minItems: 0
|
|
15922
|
+
type: array
|
|
15923
|
+
uniqueItems: true
|
|
15924
|
+
required:
|
|
15925
|
+
- targets
|
|
15926
|
+
type: object
|
|
15927
|
+
PortablePublicationSlug:
|
|
15928
|
+
maxLength: 80
|
|
15929
|
+
minLength: 1
|
|
15930
|
+
pattern: ^[a-z0-9]+(?:-[a-z0-9]+)*$
|
|
15931
|
+
type: string
|
|
15273
15932
|
PortablePublicationSocialLink:
|
|
15274
15933
|
additionalProperties: false
|
|
15275
15934
|
allOf:
|
|
@@ -15313,6 +15972,10 @@ components:
|
|
|
15313
15972
|
- type
|
|
15314
15973
|
- uri
|
|
15315
15974
|
type: object
|
|
15975
|
+
PortablePublicationStableId:
|
|
15976
|
+
description: Lowercase canonical UUIDv7. Once published, it is immutable; its time ordering conveys neither chronology nor authority.
|
|
15977
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
15978
|
+
type: string
|
|
15316
15979
|
PortablePublicationUrlHttps:
|
|
15317
15980
|
description: Absolute HTTPS URL without embedded credentials.
|
|
15318
15981
|
format: uri
|
|
@@ -16419,6 +17082,8 @@ components:
|
|
|
16419
17082
|
type: object
|
|
16420
17083
|
PostOrganizationsByOrganizationIdPublicationsByPublicationIdModerationCommentsByCommentIdDecideResponse:
|
|
16421
17084
|
$ref: "#/components/schemas/ModerationQueueItem"
|
|
17085
|
+
PostOrganizationsByOrganizationIdPublicationsByPublicationIdOverviewRefreshResponse:
|
|
17086
|
+
$ref: "#/components/schemas/PublicationOverview"
|
|
16422
17087
|
PostOrganizationsByOrganizationIdPublicationsByPublicationIdPreviewRetirementResponse:
|
|
16423
17088
|
additionalProperties: false
|
|
16424
17089
|
description: The persisted consequence preview a retirement command must quote back. A client never fabricates `consequencePreviewId` or `consequenceDigest` (LOCAL-36 G-17).
|
|
@@ -18839,6 +19504,123 @@ components:
|
|
|
18839
19504
|
- name
|
|
18840
19505
|
- slug
|
|
18841
19506
|
type: object
|
|
19507
|
+
PublicationOverview:
|
|
19508
|
+
additionalProperties: false
|
|
19509
|
+
description: |
|
|
19510
|
+
SCHEMA-3.28.0: the Home page's at-a-glance numbers for one site. The
|
|
19511
|
+
counts are a snapshot taken at `computedAt` and valid until
|
|
19512
|
+
`expiresAt` (cached at least 24 hours per site); `lastPublish` and
|
|
19513
|
+
`reviewsWaitingOnYou` are live. When `posts.complete` is false the scan
|
|
19514
|
+
was truncated and the post counts are a lower bound.
|
|
19515
|
+
properties:
|
|
19516
|
+
computedAt:
|
|
19517
|
+
description: "Canonical Gala instant: the UTC millisecond subset of RFC 3339, exactly `YYYY-MM-DDThh:mm:ss.sssZ`. Stated here rather than as a `pattern` because a generated `OffsetDateTime` cannot carry one (LOCAL-56)."
|
|
19518
|
+
format: date-time
|
|
19519
|
+
type: string
|
|
19520
|
+
expiresAt:
|
|
19521
|
+
description: "Canonical Gala instant: the UTC millisecond subset of RFC 3339, exactly `YYYY-MM-DDThh:mm:ss.sssZ`. Stated here rather than as a `pattern` because a generated `OffsetDateTime` cannot carry one (LOCAL-56)."
|
|
19522
|
+
format: date-time
|
|
19523
|
+
type: string
|
|
19524
|
+
followers:
|
|
19525
|
+
format: int64
|
|
19526
|
+
minimum: 0
|
|
19527
|
+
type: integer
|
|
19528
|
+
interactions:
|
|
19529
|
+
additionalProperties: false
|
|
19530
|
+
properties:
|
|
19531
|
+
comments:
|
|
19532
|
+
format: int64
|
|
19533
|
+
minimum: 0
|
|
19534
|
+
type: integer
|
|
19535
|
+
commentsAwaitingModeration:
|
|
19536
|
+
format: int64
|
|
19537
|
+
minimum: 0
|
|
19538
|
+
type: integer
|
|
19539
|
+
reactions:
|
|
19540
|
+
format: int64
|
|
19541
|
+
minimum: 0
|
|
19542
|
+
type: integer
|
|
19543
|
+
required:
|
|
19544
|
+
- reactions
|
|
19545
|
+
- comments
|
|
19546
|
+
- commentsAwaitingModeration
|
|
19547
|
+
type: object
|
|
19548
|
+
lastPublish:
|
|
19549
|
+
oneOf:
|
|
19550
|
+
- additionalProperties: false
|
|
19551
|
+
properties:
|
|
19552
|
+
at:
|
|
19553
|
+
description: "Canonical Gala instant: the UTC millisecond subset of RFC 3339, exactly `YYYY-MM-DDThh:mm:ss.sssZ`. Stated here rather than as a `pattern` because a generated `OffsetDateTime` cannot carry one (LOCAL-56)."
|
|
19554
|
+
format: date-time
|
|
19555
|
+
type: string
|
|
19556
|
+
outcome:
|
|
19557
|
+
enum:
|
|
19558
|
+
- SUCCEEDED
|
|
19559
|
+
- FAILED
|
|
19560
|
+
- PUBLISHING
|
|
19561
|
+
type: string
|
|
19562
|
+
required:
|
|
19563
|
+
- at
|
|
19564
|
+
- outcome
|
|
19565
|
+
type: object
|
|
19566
|
+
- type: "null"
|
|
19567
|
+
newsletterSubscribers:
|
|
19568
|
+
additionalProperties: false
|
|
19569
|
+
properties:
|
|
19570
|
+
confirmed:
|
|
19571
|
+
format: int64
|
|
19572
|
+
minimum: 0
|
|
19573
|
+
type: integer
|
|
19574
|
+
pending:
|
|
19575
|
+
format: int64
|
|
19576
|
+
minimum: 0
|
|
19577
|
+
type: integer
|
|
19578
|
+
required:
|
|
19579
|
+
- confirmed
|
|
19580
|
+
- pending
|
|
19581
|
+
type: object
|
|
19582
|
+
posts:
|
|
19583
|
+
additionalProperties: false
|
|
19584
|
+
properties:
|
|
19585
|
+
complete:
|
|
19586
|
+
type: boolean
|
|
19587
|
+
draft:
|
|
19588
|
+
format: int64
|
|
19589
|
+
minimum: 0
|
|
19590
|
+
type: integer
|
|
19591
|
+
published:
|
|
19592
|
+
format: int64
|
|
19593
|
+
minimum: 0
|
|
19594
|
+
type: integer
|
|
19595
|
+
scheduled:
|
|
19596
|
+
format: int64
|
|
19597
|
+
minimum: 0
|
|
19598
|
+
type: integer
|
|
19599
|
+
required:
|
|
19600
|
+
- published
|
|
19601
|
+
- draft
|
|
19602
|
+
- scheduled
|
|
19603
|
+
- complete
|
|
19604
|
+
type: object
|
|
19605
|
+
reviewsWaitingOnYou:
|
|
19606
|
+
format: int64
|
|
19607
|
+
minimum: 0
|
|
19608
|
+
type: integer
|
|
19609
|
+
unreadContactMessages:
|
|
19610
|
+
format: int64
|
|
19611
|
+
minimum: 0
|
|
19612
|
+
type: integer
|
|
19613
|
+
required:
|
|
19614
|
+
- computedAt
|
|
19615
|
+
- expiresAt
|
|
19616
|
+
- followers
|
|
19617
|
+
- newsletterSubscribers
|
|
19618
|
+
- unreadContactMessages
|
|
19619
|
+
- interactions
|
|
19620
|
+
- posts
|
|
19621
|
+
- lastPublish
|
|
19622
|
+
- reviewsWaitingOnYou
|
|
19623
|
+
type: object
|
|
18842
19624
|
PublicationState:
|
|
18843
19625
|
enum:
|
|
18844
19626
|
- PROVISIONING
|
|
@@ -38078,6 +38860,334 @@ paths:
|
|
|
38078
38860
|
- NONE
|
|
38079
38861
|
x-gala-success-category: query
|
|
38080
38862
|
x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
|
|
38863
|
+
/v2/organizations/{organizationId}/publications/{publicationId}/content/preview-context:
|
|
38864
|
+
get:
|
|
38865
|
+
description: |
|
|
38866
|
+
Needs `publication.view`. The facts the published page reads from the
|
|
38867
|
+
site's repository besides the post itself, so the App's draft preview
|
|
38868
|
+
can render the site's real header menu, footer and author cards:
|
|
38869
|
+
`navigation` (`gala/navigation.json`), `publication`
|
|
38870
|
+
(`gala/publication.json`) and `authors` (every `gala/authors/*.json`).
|
|
38871
|
+
This is the one read of those `gala/` files; `GET .../content/documents`
|
|
38872
|
+
still refuses them. `revision` omitted reads the linked repository's
|
|
38873
|
+
current main head; a supplied `revision` is checked exactly as the
|
|
38874
|
+
documents read checks it, and any other value is `404
|
|
38875
|
+
RESOURCE_NOT_FOUND`. The read is best-effort per member: a file that is
|
|
38876
|
+
absent, unreadable, larger than 256 KiB or invalid against its schema
|
|
38877
|
+
is `null` (`navigation`, `publication`) or left out (`authors`, at most
|
|
38878
|
+
200, in file-name order), and never fails the read. The response
|
|
38879
|
+
carries a strong `ETag` and honours `If-None-Match` with `304` and no
|
|
38880
|
+
body; `Cache-Control` is `private, no-cache`, so a browser stores the
|
|
38881
|
+
body and revalidates it on every use.
|
|
38882
|
+
operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdContentPreviewContext
|
|
38883
|
+
parameters:
|
|
38884
|
+
- $ref: "#/components/parameters/XCorrelationId"
|
|
38885
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
38886
|
+
in: path
|
|
38887
|
+
name: organizationId
|
|
38888
|
+
required: true
|
|
38889
|
+
schema:
|
|
38890
|
+
format: uuid
|
|
38891
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
38892
|
+
type: string
|
|
38893
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
38894
|
+
in: path
|
|
38895
|
+
name: publicationId
|
|
38896
|
+
required: true
|
|
38897
|
+
schema:
|
|
38898
|
+
format: uuid
|
|
38899
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
38900
|
+
type: string
|
|
38901
|
+
- example: sha1:0000000000000000000000000000000000000000
|
|
38902
|
+
in: query
|
|
38903
|
+
name: revision
|
|
38904
|
+
required: false
|
|
38905
|
+
schema:
|
|
38906
|
+
pattern: ^(?:sha1:[0-9a-f]{40}|sha256:[0-9a-f]{64})$
|
|
38907
|
+
type: string
|
|
38908
|
+
- description: A previously returned `ETag`; a match answers `304`.
|
|
38909
|
+
example: '"a1b2c3d4"'
|
|
38910
|
+
in: header
|
|
38911
|
+
name: If-None-Match
|
|
38912
|
+
required: false
|
|
38913
|
+
schema:
|
|
38914
|
+
maxLength: 256
|
|
38915
|
+
type: string
|
|
38916
|
+
responses:
|
|
38917
|
+
"200":
|
|
38918
|
+
content:
|
|
38919
|
+
application/json:
|
|
38920
|
+
examples:
|
|
38921
|
+
nominal:
|
|
38922
|
+
summary: Nominal successful response
|
|
38923
|
+
value:
|
|
38924
|
+
authors:
|
|
38925
|
+
- biography: Writes about the craft of publishing.
|
|
38926
|
+
displayName: Example Author
|
|
38927
|
+
extensions: {}
|
|
38928
|
+
id: 018f0000-0000-7000-8000-000000000001
|
|
38929
|
+
links:
|
|
38930
|
+
- type: website
|
|
38931
|
+
uri: https://example.com/
|
|
38932
|
+
localized: []
|
|
38933
|
+
schemaId: urn:gala:schema:author:2.0.0
|
|
38934
|
+
schemaVersion: 2.0.0
|
|
38935
|
+
navigation:
|
|
38936
|
+
extensions: {}
|
|
38937
|
+
footerItems: []
|
|
38938
|
+
items:
|
|
38939
|
+
- children: []
|
|
38940
|
+
label: About
|
|
38941
|
+
route: /about/
|
|
38942
|
+
type: internal
|
|
38943
|
+
schemaId: urn:gala:schema:navigation:2.0.0
|
|
38944
|
+
schemaVersion: 2.0.0
|
|
38945
|
+
publication:
|
|
38946
|
+
authors:
|
|
38947
|
+
- gala/authors/example-author.json
|
|
38948
|
+
canonicalBase: https://example.com/
|
|
38949
|
+
defaultLanguage: en
|
|
38950
|
+
description: A site about the craft of publishing.
|
|
38951
|
+
extensions: {}
|
|
38952
|
+
id: 018f0000-0000-7000-8000-000000000001
|
|
38953
|
+
schemaId: urn:gala:schema:publication:2.0.0
|
|
38954
|
+
schemaVersion: 2.0.0
|
|
38955
|
+
slug: example
|
|
38956
|
+
socialLinks: []
|
|
38957
|
+
title: Example
|
|
38958
|
+
revision: sha1:0000000000000000000000000000000000000000
|
|
38959
|
+
schema:
|
|
38960
|
+
$ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdContentPreviewContextResponse"
|
|
38961
|
+
description: read the preview context succeeded
|
|
38962
|
+
headers:
|
|
38963
|
+
Cache-Control:
|
|
38964
|
+
$ref: "#/components/headers/CacheControlPrivateNoCache"
|
|
38965
|
+
ETag:
|
|
38966
|
+
description: Strong validator of this response body.
|
|
38967
|
+
required: true
|
|
38968
|
+
schema:
|
|
38969
|
+
maxLength: 256
|
|
38970
|
+
type: string
|
|
38971
|
+
X-Correlation-Id:
|
|
38972
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
38973
|
+
"304":
|
|
38974
|
+
description: the caller's `If-None-Match` still matches; no body
|
|
38975
|
+
headers:
|
|
38976
|
+
Cache-Control:
|
|
38977
|
+
$ref: "#/components/headers/CacheControlPrivateNoCache"
|
|
38978
|
+
ETag:
|
|
38979
|
+
description: Strong validator of this response body.
|
|
38980
|
+
required: true
|
|
38981
|
+
schema:
|
|
38982
|
+
maxLength: 256
|
|
38983
|
+
type: string
|
|
38984
|
+
X-Correlation-Id:
|
|
38985
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
38986
|
+
"400":
|
|
38987
|
+
content:
|
|
38988
|
+
application/problem+json:
|
|
38989
|
+
examples:
|
|
38990
|
+
VALIDATION_FAILED:
|
|
38991
|
+
summary: VALIDATION_FAILED
|
|
38992
|
+
value:
|
|
38993
|
+
code: VALIDATION_FAILED
|
|
38994
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
38995
|
+
detail: See the operation contract.
|
|
38996
|
+
errors: []
|
|
38997
|
+
retryable: false
|
|
38998
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
38999
|
+
schemaVersion: 2.0.0
|
|
39000
|
+
status: 400
|
|
39001
|
+
title: VALIDATION_FAILED
|
|
39002
|
+
type: urn:gala:problem:validation-failed
|
|
39003
|
+
schema:
|
|
39004
|
+
$ref: "#/components/schemas/Problem"
|
|
39005
|
+
description: VALIDATION_FAILED
|
|
39006
|
+
headers:
|
|
39007
|
+
Cache-Control:
|
|
39008
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
39009
|
+
X-Correlation-Id:
|
|
39010
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
39011
|
+
x-gala-problem-codes:
|
|
39012
|
+
- VALIDATION_FAILED
|
|
39013
|
+
"401":
|
|
39014
|
+
content:
|
|
39015
|
+
application/problem+json:
|
|
39016
|
+
examples:
|
|
39017
|
+
AUTHENTICATION_REQUIRED:
|
|
39018
|
+
summary: AUTHENTICATION_REQUIRED
|
|
39019
|
+
value:
|
|
39020
|
+
code: AUTHENTICATION_REQUIRED
|
|
39021
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
39022
|
+
detail: See the operation contract.
|
|
39023
|
+
errors: []
|
|
39024
|
+
retryable: false
|
|
39025
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
39026
|
+
schemaVersion: 2.0.0
|
|
39027
|
+
status: 401
|
|
39028
|
+
title: AUTHENTICATION_REQUIRED
|
|
39029
|
+
type: urn:gala:problem:authentication-required
|
|
39030
|
+
schema:
|
|
39031
|
+
$ref: "#/components/schemas/Problem"
|
|
39032
|
+
description: AUTHENTICATION_REQUIRED
|
|
39033
|
+
headers:
|
|
39034
|
+
Cache-Control:
|
|
39035
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
39036
|
+
X-Correlation-Id:
|
|
39037
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
39038
|
+
x-gala-problem-codes:
|
|
39039
|
+
- AUTHENTICATION_REQUIRED
|
|
39040
|
+
"403":
|
|
39041
|
+
content:
|
|
39042
|
+
application/problem+json:
|
|
39043
|
+
examples:
|
|
39044
|
+
AUTHORIZATION_DENIED:
|
|
39045
|
+
summary: AUTHORIZATION_DENIED
|
|
39046
|
+
value:
|
|
39047
|
+
code: AUTHORIZATION_DENIED
|
|
39048
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
39049
|
+
detail: See the operation contract.
|
|
39050
|
+
errors: []
|
|
39051
|
+
retryable: false
|
|
39052
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
39053
|
+
schemaVersion: 2.0.0
|
|
39054
|
+
status: 403
|
|
39055
|
+
title: AUTHORIZATION_DENIED
|
|
39056
|
+
type: urn:gala:problem:authorization-denied
|
|
39057
|
+
schema:
|
|
39058
|
+
$ref: "#/components/schemas/Problem"
|
|
39059
|
+
description: AUTHORIZATION_DENIED
|
|
39060
|
+
headers:
|
|
39061
|
+
Cache-Control:
|
|
39062
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
39063
|
+
X-Correlation-Id:
|
|
39064
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
39065
|
+
x-gala-problem-codes:
|
|
39066
|
+
- AUTHORIZATION_DENIED
|
|
39067
|
+
"404":
|
|
39068
|
+
content:
|
|
39069
|
+
application/problem+json:
|
|
39070
|
+
examples:
|
|
39071
|
+
RESOURCE_NOT_FOUND:
|
|
39072
|
+
summary: RESOURCE_NOT_FOUND
|
|
39073
|
+
value:
|
|
39074
|
+
code: RESOURCE_NOT_FOUND
|
|
39075
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
39076
|
+
detail: See the operation contract.
|
|
39077
|
+
errors: []
|
|
39078
|
+
retryable: false
|
|
39079
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
39080
|
+
schemaVersion: 2.0.0
|
|
39081
|
+
status: 404
|
|
39082
|
+
title: RESOURCE_NOT_FOUND
|
|
39083
|
+
type: urn:gala:problem:resource-not-found
|
|
39084
|
+
schema:
|
|
39085
|
+
$ref: "#/components/schemas/Problem"
|
|
39086
|
+
description: RESOURCE_NOT_FOUND
|
|
39087
|
+
headers:
|
|
39088
|
+
Cache-Control:
|
|
39089
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
39090
|
+
X-Correlation-Id:
|
|
39091
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
39092
|
+
x-gala-problem-codes:
|
|
39093
|
+
- RESOURCE_NOT_FOUND
|
|
39094
|
+
"429":
|
|
39095
|
+
content:
|
|
39096
|
+
application/problem+json:
|
|
39097
|
+
examples:
|
|
39098
|
+
RATE_LIMITED:
|
|
39099
|
+
summary: RATE_LIMITED
|
|
39100
|
+
value:
|
|
39101
|
+
code: RATE_LIMITED
|
|
39102
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
39103
|
+
detail: See the operation contract.
|
|
39104
|
+
errors: []
|
|
39105
|
+
retryable: true
|
|
39106
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
39107
|
+
schemaVersion: 2.0.0
|
|
39108
|
+
status: 429
|
|
39109
|
+
title: RATE_LIMITED
|
|
39110
|
+
type: urn:gala:problem:rate-limited
|
|
39111
|
+
schema:
|
|
39112
|
+
$ref: "#/components/schemas/Problem"
|
|
39113
|
+
description: RATE_LIMITED
|
|
39114
|
+
headers:
|
|
39115
|
+
Cache-Control:
|
|
39116
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
39117
|
+
Retry-After:
|
|
39118
|
+
$ref: "#/components/headers/RetryAfter"
|
|
39119
|
+
X-Correlation-Id:
|
|
39120
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
39121
|
+
x-gala-problem-codes:
|
|
39122
|
+
- RATE_LIMITED
|
|
39123
|
+
"503":
|
|
39124
|
+
content:
|
|
39125
|
+
application/problem+json:
|
|
39126
|
+
examples:
|
|
39127
|
+
CAPABILITY_UNAVAILABLE:
|
|
39128
|
+
summary: CAPABILITY_UNAVAILABLE
|
|
39129
|
+
value:
|
|
39130
|
+
code: CAPABILITY_UNAVAILABLE
|
|
39131
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
39132
|
+
detail: See the operation contract.
|
|
39133
|
+
errors: []
|
|
39134
|
+
retryable: false
|
|
39135
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
39136
|
+
schemaVersion: 2.0.0
|
|
39137
|
+
status: 503
|
|
39138
|
+
title: CAPABILITY_UNAVAILABLE
|
|
39139
|
+
type: urn:gala:problem:capability-unavailable
|
|
39140
|
+
DEPENDENCY_UNAVAILABLE:
|
|
39141
|
+
summary: DEPENDENCY_UNAVAILABLE
|
|
39142
|
+
value:
|
|
39143
|
+
code: DEPENDENCY_UNAVAILABLE
|
|
39144
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
39145
|
+
detail: See the operation contract.
|
|
39146
|
+
errors: []
|
|
39147
|
+
retryable: true
|
|
39148
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
39149
|
+
schemaVersion: 2.0.0
|
|
39150
|
+
status: 503
|
|
39151
|
+
title: DEPENDENCY_UNAVAILABLE
|
|
39152
|
+
type: urn:gala:problem:dependency-unavailable
|
|
39153
|
+
schema:
|
|
39154
|
+
$ref: "#/components/schemas/Problem"
|
|
39155
|
+
description: CAPABILITY_UNAVAILABLE, DEPENDENCY_UNAVAILABLE
|
|
39156
|
+
headers:
|
|
39157
|
+
Cache-Control:
|
|
39158
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
39159
|
+
X-Correlation-Id:
|
|
39160
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
39161
|
+
x-gala-problem-codes:
|
|
39162
|
+
- CAPABILITY_UNAVAILABLE
|
|
39163
|
+
- DEPENDENCY_UNAVAILABLE
|
|
39164
|
+
security:
|
|
39165
|
+
- browserSession: []
|
|
39166
|
+
summary: read the preview context
|
|
39167
|
+
tags:
|
|
39168
|
+
- organizations
|
|
39169
|
+
x-gala-activation-gate: MVP
|
|
39170
|
+
x-gala-activation-guards:
|
|
39171
|
+
- Active repository binding and configured GitHub App identity capability
|
|
39172
|
+
x-gala-capability-key: publication.view
|
|
39173
|
+
x-gala-concurrency: binding-epoch
|
|
39174
|
+
x-gala-conditional-capabilities: []
|
|
39175
|
+
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
39176
|
+
x-gala-nullability: required-and-nullable-are-explicit
|
|
39177
|
+
x-gala-purpose: read the preview context
|
|
39178
|
+
x-gala-reachable-problems:
|
|
39179
|
+
- AUTHENTICATION_REQUIRED
|
|
39180
|
+
- AUTHORIZATION_DENIED
|
|
39181
|
+
- CAPABILITY_UNAVAILABLE
|
|
39182
|
+
- DEPENDENCY_UNAVAILABLE
|
|
39183
|
+
- RATE_LIMITED
|
|
39184
|
+
- RESOURCE_NOT_FOUND
|
|
39185
|
+
- VALIDATION_FAILED
|
|
39186
|
+
x-gala-replay-identity: safe-query
|
|
39187
|
+
x-gala-state-guards:
|
|
39188
|
+
- NONE
|
|
39189
|
+
x-gala-success-category: query
|
|
39190
|
+
x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
|
|
38081
39191
|
/v2/organizations/{organizationId}/publications/{publicationId}/deployments:
|
|
38082
39192
|
get:
|
|
38083
39193
|
operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdDeployments
|
|
@@ -46785,6 +47895,305 @@ paths:
|
|
|
46785
47895
|
- NONE
|
|
46786
47896
|
x-gala-success-category: protocol
|
|
46787
47897
|
x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
|
|
47898
|
+
/v2/organizations/{organizationId}/publications/{publicationId}/overview:
|
|
47899
|
+
get:
|
|
47900
|
+
description: |
|
|
47901
|
+
Needs `publication.view`. The Home page's at-a-glance numbers for one
|
|
47902
|
+
site as a `PublicationOverview`. The body is a snapshot cached for at
|
|
47903
|
+
least 24 hours per site: `computedAt` says when it was taken and
|
|
47904
|
+
`expiresAt` when it may be recomputed. `lastPublish` and
|
|
47905
|
+
`reviewsWaitingOnYou` are live and read at request time, not from the
|
|
47906
|
+
snapshot. `posts.complete` is false when the scan was truncated, and
|
|
47907
|
+
the post counts are then a lower bound. The response carries an `ETag`
|
|
47908
|
+
and honours `If-None-Match` with `304` and no body. `POST
|
|
47909
|
+
.../overview:refresh` recomputes the snapshot on demand.
|
|
47910
|
+
operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdOverview
|
|
47911
|
+
parameters:
|
|
47912
|
+
- $ref: "#/components/parameters/XCorrelationId"
|
|
47913
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
47914
|
+
in: path
|
|
47915
|
+
name: organizationId
|
|
47916
|
+
required: true
|
|
47917
|
+
schema:
|
|
47918
|
+
format: uuid
|
|
47919
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
47920
|
+
type: string
|
|
47921
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
47922
|
+
in: path
|
|
47923
|
+
name: publicationId
|
|
47924
|
+
required: true
|
|
47925
|
+
schema:
|
|
47926
|
+
format: uuid
|
|
47927
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
47928
|
+
type: string
|
|
47929
|
+
- description: A previously returned `ETag`; a match answers `304`.
|
|
47930
|
+
example: '"a1b2c3d4"'
|
|
47931
|
+
in: header
|
|
47932
|
+
name: If-None-Match
|
|
47933
|
+
required: false
|
|
47934
|
+
schema:
|
|
47935
|
+
maxLength: 256
|
|
47936
|
+
type: string
|
|
47937
|
+
responses:
|
|
47938
|
+
"200":
|
|
47939
|
+
content:
|
|
47940
|
+
application/json:
|
|
47941
|
+
examples:
|
|
47942
|
+
nominal:
|
|
47943
|
+
summary: Nominal successful response
|
|
47944
|
+
value:
|
|
47945
|
+
computedAt: "2026-10-31T06:00:00.000Z"
|
|
47946
|
+
expiresAt: "2026-11-01T06:00:00.000Z"
|
|
47947
|
+
followers: 12
|
|
47948
|
+
interactions:
|
|
47949
|
+
comments: 8
|
|
47950
|
+
commentsAwaitingModeration: 1
|
|
47951
|
+
reactions: 41
|
|
47952
|
+
lastPublish:
|
|
47953
|
+
at: "2026-10-30T18:30:00.000Z"
|
|
47954
|
+
outcome: SUCCEEDED
|
|
47955
|
+
newsletterSubscribers:
|
|
47956
|
+
confirmed: 120
|
|
47957
|
+
pending: 4
|
|
47958
|
+
posts:
|
|
47959
|
+
complete: true
|
|
47960
|
+
draft: 3
|
|
47961
|
+
published: 25
|
|
47962
|
+
scheduled: 2
|
|
47963
|
+
reviewsWaitingOnYou: 0
|
|
47964
|
+
unreadContactMessages: 2
|
|
47965
|
+
schema:
|
|
47966
|
+
$ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdOverviewResponse"
|
|
47967
|
+
description: read a site's overview succeeded
|
|
47968
|
+
headers:
|
|
47969
|
+
Cache-Control:
|
|
47970
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
47971
|
+
ETag:
|
|
47972
|
+
description: Validator of this snapshot and the live fields.
|
|
47973
|
+
required: true
|
|
47974
|
+
schema:
|
|
47975
|
+
maxLength: 256
|
|
47976
|
+
type: string
|
|
47977
|
+
X-Correlation-Id:
|
|
47978
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
47979
|
+
"304":
|
|
47980
|
+
description: the caller's `If-None-Match` still matches; no body
|
|
47981
|
+
headers:
|
|
47982
|
+
ETag:
|
|
47983
|
+
description: Validator of this snapshot and the live fields.
|
|
47984
|
+
required: true
|
|
47985
|
+
schema:
|
|
47986
|
+
maxLength: 256
|
|
47987
|
+
type: string
|
|
47988
|
+
X-Correlation-Id:
|
|
47989
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
47990
|
+
"400":
|
|
47991
|
+
$ref: "#/components/responses/ValidationFailed"
|
|
47992
|
+
"401":
|
|
47993
|
+
content:
|
|
47994
|
+
application/problem+json:
|
|
47995
|
+
examples:
|
|
47996
|
+
AUTHENTICATION_REQUIRED:
|
|
47997
|
+
summary: AUTHENTICATION_REQUIRED
|
|
47998
|
+
value:
|
|
47999
|
+
code: AUTHENTICATION_REQUIRED
|
|
48000
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
48001
|
+
detail: See the operation contract.
|
|
48002
|
+
errors: []
|
|
48003
|
+
retryable: false
|
|
48004
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
48005
|
+
schemaVersion: 2.0.0
|
|
48006
|
+
status: 401
|
|
48007
|
+
title: AUTHENTICATION_REQUIRED
|
|
48008
|
+
type: urn:gala:problem:authentication-required
|
|
48009
|
+
schema:
|
|
48010
|
+
$ref: "#/components/schemas/Problem"
|
|
48011
|
+
description: AUTHENTICATION_REQUIRED
|
|
48012
|
+
headers:
|
|
48013
|
+
Cache-Control:
|
|
48014
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
48015
|
+
X-Correlation-Id:
|
|
48016
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
48017
|
+
x-gala-problem-codes:
|
|
48018
|
+
- AUTHENTICATION_REQUIRED
|
|
48019
|
+
"403":
|
|
48020
|
+
$ref: "#/components/responses/AuthorizationDenied"
|
|
48021
|
+
"404":
|
|
48022
|
+
$ref: "#/components/responses/ResourceNotFound"
|
|
48023
|
+
security:
|
|
48024
|
+
- browserSession: []
|
|
48025
|
+
summary: read a site's overview
|
|
48026
|
+
tags:
|
|
48027
|
+
- audience
|
|
48028
|
+
x-gala-activation-gate: MVP
|
|
48029
|
+
x-gala-activation-guards:
|
|
48030
|
+
- NONE
|
|
48031
|
+
x-gala-capability-key: publication.view
|
|
48032
|
+
x-gala-concurrency: authorization-and-publication-epochs
|
|
48033
|
+
x-gala-conditional-capabilities: []
|
|
48034
|
+
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
48035
|
+
x-gala-nullability: required-and-nullable-are-explicit
|
|
48036
|
+
x-gala-purpose: read a site's overview
|
|
48037
|
+
x-gala-reachable-problems:
|
|
48038
|
+
- AUTHENTICATION_REQUIRED
|
|
48039
|
+
- AUTHORIZATION_DENIED
|
|
48040
|
+
- RESOURCE_NOT_FOUND
|
|
48041
|
+
- VALIDATION_FAILED
|
|
48042
|
+
x-gala-replay-identity: safe-query
|
|
48043
|
+
x-gala-state-guards:
|
|
48044
|
+
- NONE
|
|
48045
|
+
x-gala-success-category: query
|
|
48046
|
+
x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
|
|
48047
|
+
/v2/organizations/{organizationId}/publications/{publicationId}/overview:refresh:
|
|
48048
|
+
post:
|
|
48049
|
+
description: |
|
|
48050
|
+
Needs `publication.view`. Recomputes the site's overview snapshot now
|
|
48051
|
+
and returns the same `PublicationOverview` as the read. At most one
|
|
48052
|
+
refresh per site per minute; a faster second call answers `429
|
|
48053
|
+
RATE_LIMITED` with `Retry-After`.
|
|
48054
|
+
operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdOverviewRefresh
|
|
48055
|
+
parameters:
|
|
48056
|
+
- $ref: "#/components/parameters/XCorrelationId"
|
|
48057
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
48058
|
+
in: path
|
|
48059
|
+
name: organizationId
|
|
48060
|
+
required: true
|
|
48061
|
+
schema:
|
|
48062
|
+
format: uuid
|
|
48063
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
48064
|
+
type: string
|
|
48065
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
48066
|
+
in: path
|
|
48067
|
+
name: publicationId
|
|
48068
|
+
required: true
|
|
48069
|
+
schema:
|
|
48070
|
+
format: uuid
|
|
48071
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
48072
|
+
type: string
|
|
48073
|
+
- $ref: "#/components/parameters/XCsrfToken"
|
|
48074
|
+
responses:
|
|
48075
|
+
"200":
|
|
48076
|
+
content:
|
|
48077
|
+
application/json:
|
|
48078
|
+
examples:
|
|
48079
|
+
nominal:
|
|
48080
|
+
summary: Nominal successful response
|
|
48081
|
+
value:
|
|
48082
|
+
computedAt: "2026-10-31T06:00:00.000Z"
|
|
48083
|
+
expiresAt: "2026-11-01T06:00:00.000Z"
|
|
48084
|
+
followers: 12
|
|
48085
|
+
interactions:
|
|
48086
|
+
comments: 8
|
|
48087
|
+
commentsAwaitingModeration: 1
|
|
48088
|
+
reactions: 41
|
|
48089
|
+
lastPublish:
|
|
48090
|
+
at: "2026-10-30T18:30:00.000Z"
|
|
48091
|
+
outcome: SUCCEEDED
|
|
48092
|
+
newsletterSubscribers:
|
|
48093
|
+
confirmed: 120
|
|
48094
|
+
pending: 4
|
|
48095
|
+
posts:
|
|
48096
|
+
complete: true
|
|
48097
|
+
draft: 3
|
|
48098
|
+
published: 25
|
|
48099
|
+
scheduled: 2
|
|
48100
|
+
reviewsWaitingOnYou: 0
|
|
48101
|
+
unreadContactMessages: 2
|
|
48102
|
+
schema:
|
|
48103
|
+
$ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdOverviewRefreshResponse"
|
|
48104
|
+
description: refresh a site's overview succeeded
|
|
48105
|
+
headers:
|
|
48106
|
+
Cache-Control:
|
|
48107
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
48108
|
+
X-Correlation-Id:
|
|
48109
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
48110
|
+
"400":
|
|
48111
|
+
$ref: "#/components/responses/ValidationFailed"
|
|
48112
|
+
"401":
|
|
48113
|
+
content:
|
|
48114
|
+
application/problem+json:
|
|
48115
|
+
examples:
|
|
48116
|
+
AUTHENTICATION_REQUIRED:
|
|
48117
|
+
summary: AUTHENTICATION_REQUIRED
|
|
48118
|
+
value:
|
|
48119
|
+
code: AUTHENTICATION_REQUIRED
|
|
48120
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
48121
|
+
detail: See the operation contract.
|
|
48122
|
+
errors: []
|
|
48123
|
+
retryable: false
|
|
48124
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
48125
|
+
schemaVersion: 2.0.0
|
|
48126
|
+
status: 401
|
|
48127
|
+
title: AUTHENTICATION_REQUIRED
|
|
48128
|
+
type: urn:gala:problem:authentication-required
|
|
48129
|
+
schema:
|
|
48130
|
+
$ref: "#/components/schemas/Problem"
|
|
48131
|
+
description: AUTHENTICATION_REQUIRED
|
|
48132
|
+
headers:
|
|
48133
|
+
Cache-Control:
|
|
48134
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
48135
|
+
X-Correlation-Id:
|
|
48136
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
48137
|
+
x-gala-problem-codes:
|
|
48138
|
+
- AUTHENTICATION_REQUIRED
|
|
48139
|
+
"403":
|
|
48140
|
+
$ref: "#/components/responses/AuthorizationDenied"
|
|
48141
|
+
"404":
|
|
48142
|
+
$ref: "#/components/responses/ResourceNotFound"
|
|
48143
|
+
"429":
|
|
48144
|
+
content:
|
|
48145
|
+
application/problem+json:
|
|
48146
|
+
examples:
|
|
48147
|
+
RATE_LIMITED:
|
|
48148
|
+
summary: RATE_LIMITED
|
|
48149
|
+
value:
|
|
48150
|
+
code: RATE_LIMITED
|
|
48151
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
48152
|
+
detail: See the operation contract.
|
|
48153
|
+
errors: []
|
|
48154
|
+
retryable: true
|
|
48155
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
48156
|
+
schemaVersion: 2.0.0
|
|
48157
|
+
status: 429
|
|
48158
|
+
title: RATE_LIMITED
|
|
48159
|
+
type: urn:gala:problem:rate-limited
|
|
48160
|
+
schema:
|
|
48161
|
+
$ref: "#/components/schemas/Problem"
|
|
48162
|
+
description: RATE_LIMITED
|
|
48163
|
+
headers:
|
|
48164
|
+
Cache-Control:
|
|
48165
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
48166
|
+
Retry-After:
|
|
48167
|
+
$ref: "#/components/headers/RetryAfter"
|
|
48168
|
+
X-Correlation-Id:
|
|
48169
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
48170
|
+
x-gala-problem-codes:
|
|
48171
|
+
- RATE_LIMITED
|
|
48172
|
+
security:
|
|
48173
|
+
- browserSession: []
|
|
48174
|
+
summary: refresh a site's overview
|
|
48175
|
+
tags:
|
|
48176
|
+
- audience
|
|
48177
|
+
x-gala-activation-gate: MVP
|
|
48178
|
+
x-gala-activation-guards:
|
|
48179
|
+
- NONE
|
|
48180
|
+
x-gala-capability-key: publication.view
|
|
48181
|
+
x-gala-concurrency: authorization-and-publication-epochs
|
|
48182
|
+
x-gala-conditional-capabilities: []
|
|
48183
|
+
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
48184
|
+
x-gala-nullability: required-and-nullable-are-explicit
|
|
48185
|
+
x-gala-purpose: refresh a site's overview
|
|
48186
|
+
x-gala-reachable-problems:
|
|
48187
|
+
- AUTHENTICATION_REQUIRED
|
|
48188
|
+
- AUTHORIZATION_DENIED
|
|
48189
|
+
- RATE_LIMITED
|
|
48190
|
+
- RESOURCE_NOT_FOUND
|
|
48191
|
+
- VALIDATION_FAILED
|
|
48192
|
+
x-gala-replay-identity: natural-idempotent-state
|
|
48193
|
+
x-gala-state-guards:
|
|
48194
|
+
- NONE
|
|
48195
|
+
x-gala-success-category: protocol
|
|
48196
|
+
x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
|
|
46788
48197
|
/v2/organizations/{organizationId}/publications/{publicationId}/policy-settings:
|
|
46789
48198
|
get:
|
|
46790
48199
|
description: Reads the site's Terms and Privacy text at the linked repository's current main branch head, meaning the `policies` member of `gala/publication.json` and the two markdown files it names. `source` is `FILE` when the repository names its own pages, and `terms` and `privacy` then carry each page's title and markdown. `source` is `DEFAULT` when `policies` is absent, and the site then shows the default text of `@rathnasgala2/schemas/site-policy-defaults`, which the API does not carry, and `terms` and `privacy` are omitted. `setUp` matches `GET .../repository/setup`'s `state`; `openChange` names an existing not-yet-published change of this publication that touches `gala/publication.json` or a policy file, or is null. SCHEMA-3.17.0 adds `422 VALIDATION_FAILED`, answered when `gala/publication.json` names a policy file that does not exist at the head; the repository is then inconsistent and no page text can be read, so the author fixes the repository (or writes both pages again with `PUT`) before the read answers.
|