@rathnasgala2/schemas 3.31.0 → 3.32.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/diagnostics/diagnostic-map.json +119 -0
- package/docs/catalogs/schema-inventory.json +7 -7
- package/examples/valid/build-input/rules.json +126 -0
- package/examples/valid/interactions-config/rules.json +10 -0
- package/examples/valid/publication/rules.json +86 -0
- package/fixtures/boundary/build-input/rules.json +176 -0
- package/fixtures/boundary/interactions-config/rules.json +10 -0
- package/fixtures/boundary/publication/rules.json +132 -0
- package/fixtures/invalid/build-input/GRAPHEME_LENGTH_INVALID/cases.json +33 -0
- package/fixtures/invalid/build-input/REQUEST_FIELD_UNKNOWN/cases.json +30 -0
- package/fixtures/invalid/build-input/SCHEMA_ARRAY_DUPLICATE/cases.json +11 -0
- package/fixtures/invalid/build-input/SCHEMA_ARRAY_TOO_LONG/cases.json +15 -0
- package/fixtures/invalid/build-input/SCHEMA_ENUM_INVALID/cases.json +11 -0
- package/fixtures/invalid/build-input/SCHEMA_NUMBER_TOO_LARGE/cases.json +11 -0
- package/fixtures/invalid/build-input/SCHEMA_PATTERN_INVALID/cases.json +22 -0
- package/fixtures/invalid/build-input/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +51 -0
- package/fixtures/invalid/build-input/SCHEMA_TYPE_INVALID/cases.json +53 -0
- package/fixtures/invalid/interactions-config/SCHEMA_TYPE_INVALID/cases.json +11 -0
- package/fixtures/invalid/publication/GRAPHEME_LENGTH_INVALID/cases.json +33 -0
- package/fixtures/invalid/publication/REQUEST_FIELD_UNKNOWN/cases.json +30 -0
- package/fixtures/invalid/publication/SCHEMA_ARRAY_DUPLICATE/cases.json +9 -0
- package/fixtures/invalid/publication/SCHEMA_ARRAY_TOO_LONG/cases.json +13 -0
- package/fixtures/invalid/publication/SCHEMA_PATTERN_INVALID/cases.json +22 -0
- package/fixtures/invalid/publication/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +40 -0
- package/fixtures/invalid/publication/SCHEMA_TYPE_INVALID/cases.json +40 -0
- package/fixtures/manifest.json +943 -8
- package/fixtures/unknown-field/build-input/rules.json +50 -0
- package/fixtures/unknown-field/interactions-config/rules.json +1 -0
- package/fixtures/unknown-field/publication/rules.json +46 -0
- package/generated/browser/validator-core.mjs +3 -3
- package/generated/typescript/contracts/artifact-manifest.d.ts +4 -2
- package/generated/typescript/contracts/build-input.d.ts +16 -1
- package/generated/typescript/contracts/build-provenance.d.ts +4 -2
- package/generated/typescript/contracts/interactions-config.d.ts +1 -0
- package/generated/typescript/contracts/publication.d.ts +13 -0
- package/openapi/http-catalog.json +80 -2
- package/openapi/openapi.yaml +1710 -250
- package/package.json +1 -1
- package/sbom.cdx.json +23 -23
- package/schemas/artifact-manifest.schema.json +4 -2
- package/schemas/build-input.schema.json +64 -3
- package/schemas/build-provenance.schema.json +4 -2
- package/schemas/interactions-config.schema.json +6 -1
- package/schemas/publication.schema.json +48 -0
package/openapi/openapi.yaml
CHANGED
|
@@ -927,6 +927,14 @@ components:
|
|
|
927
927
|
format: uuid
|
|
928
928
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
929
929
|
type: string
|
|
930
|
+
likeCount:
|
|
931
|
+
description: "SCHEMA-3.32.0: how many readers like the comment; absent counts as 0."
|
|
932
|
+
format: int64
|
|
933
|
+
minimum: 0
|
|
934
|
+
type: integer
|
|
935
|
+
likedByMe:
|
|
936
|
+
description: "SCHEMA-3.32.0: true when the signed-in reader likes the comment; absent counts as false."
|
|
937
|
+
type: boolean
|
|
930
938
|
moreReplies:
|
|
931
939
|
type: boolean
|
|
932
940
|
own:
|
|
@@ -937,6 +945,9 @@ components:
|
|
|
937
945
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
938
946
|
type: string
|
|
939
947
|
- type: "null"
|
|
948
|
+
pinned:
|
|
949
|
+
description: "SCHEMA-3.32.0: true for the one root comment the site owner pinned to the top of the article; absent counts as false."
|
|
950
|
+
type: boolean
|
|
940
951
|
replies:
|
|
941
952
|
items:
|
|
942
953
|
$ref: "#/components/schemas/CommentViewLevel1"
|
|
@@ -990,6 +1001,14 @@ components:
|
|
|
990
1001
|
format: uuid
|
|
991
1002
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
992
1003
|
type: string
|
|
1004
|
+
likeCount:
|
|
1005
|
+
description: "SCHEMA-3.32.0: how many readers like the comment; absent counts as 0."
|
|
1006
|
+
format: int64
|
|
1007
|
+
minimum: 0
|
|
1008
|
+
type: integer
|
|
1009
|
+
likedByMe:
|
|
1010
|
+
description: "SCHEMA-3.32.0: true when the signed-in reader likes the comment; absent counts as false."
|
|
1011
|
+
type: boolean
|
|
993
1012
|
moreReplies:
|
|
994
1013
|
type: boolean
|
|
995
1014
|
own:
|
|
@@ -1000,6 +1019,9 @@ components:
|
|
|
1000
1019
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
1001
1020
|
type: string
|
|
1002
1021
|
- type: "null"
|
|
1022
|
+
pinned:
|
|
1023
|
+
description: "SCHEMA-3.32.0: true for the one root comment the site owner pinned to the top of the article; absent counts as false."
|
|
1024
|
+
type: boolean
|
|
1003
1025
|
replies:
|
|
1004
1026
|
items:
|
|
1005
1027
|
$ref: "#/components/schemas/CommentViewLevel2"
|
|
@@ -1053,6 +1075,14 @@ components:
|
|
|
1053
1075
|
format: uuid
|
|
1054
1076
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
1055
1077
|
type: string
|
|
1078
|
+
likeCount:
|
|
1079
|
+
description: "SCHEMA-3.32.0: how many readers like the comment; absent counts as 0."
|
|
1080
|
+
format: int64
|
|
1081
|
+
minimum: 0
|
|
1082
|
+
type: integer
|
|
1083
|
+
likedByMe:
|
|
1084
|
+
description: "SCHEMA-3.32.0: true when the signed-in reader likes the comment; absent counts as false."
|
|
1085
|
+
type: boolean
|
|
1056
1086
|
moreReplies:
|
|
1057
1087
|
type: boolean
|
|
1058
1088
|
own:
|
|
@@ -1063,6 +1093,9 @@ components:
|
|
|
1063
1093
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
1064
1094
|
type: string
|
|
1065
1095
|
- type: "null"
|
|
1096
|
+
pinned:
|
|
1097
|
+
description: "SCHEMA-3.32.0: true for the one root comment the site owner pinned to the top of the article; absent counts as false."
|
|
1098
|
+
type: boolean
|
|
1066
1099
|
replies:
|
|
1067
1100
|
items:
|
|
1068
1101
|
$ref: "#/components/schemas/CommentViewLevel3"
|
|
@@ -1116,6 +1149,14 @@ components:
|
|
|
1116
1149
|
format: uuid
|
|
1117
1150
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
1118
1151
|
type: string
|
|
1152
|
+
likeCount:
|
|
1153
|
+
description: "SCHEMA-3.32.0: how many readers like the comment; absent counts as 0."
|
|
1154
|
+
format: int64
|
|
1155
|
+
minimum: 0
|
|
1156
|
+
type: integer
|
|
1157
|
+
likedByMe:
|
|
1158
|
+
description: "SCHEMA-3.32.0: true when the signed-in reader likes the comment; absent counts as false."
|
|
1159
|
+
type: boolean
|
|
1119
1160
|
moreReplies:
|
|
1120
1161
|
type: boolean
|
|
1121
1162
|
own:
|
|
@@ -1126,6 +1167,9 @@ components:
|
|
|
1126
1167
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
1127
1168
|
type: string
|
|
1128
1169
|
- type: "null"
|
|
1170
|
+
pinned:
|
|
1171
|
+
description: "SCHEMA-3.32.0: true for the one root comment the site owner pinned to the top of the article; absent counts as false."
|
|
1172
|
+
type: boolean
|
|
1129
1173
|
replies:
|
|
1130
1174
|
maxItems: 0
|
|
1131
1175
|
type: array
|
|
@@ -1494,7 +1538,10 @@ components:
|
|
|
1494
1538
|
keeps the stored value, an object replaces it whole, `null` clears it.
|
|
1495
1539
|
`title`, `defaultLanguage` and `socialLinks` cannot be cleared.
|
|
1496
1540
|
`socialLinks` (max 32, the publication file's own limit) replaces
|
|
1497
|
-
the whole list. `
|
|
1541
|
+
the whole list. SCHEMA-3.32.0: `recommendations` (the sites the author
|
|
1542
|
+
recommends, max 24, `url` unique within the list) follows `crawlers`
|
|
1543
|
+
and not `socialLinks`: absent keeps the stored list, an array replaces
|
|
1544
|
+
the whole list, `null` clears it. `canonicalBase` is never client-settable: it changes
|
|
1498
1545
|
only through domain attach and detach. A profile that changes nothing is
|
|
1499
1546
|
`422 VALIDATION_FAILED` pointed at `/publicationProfile`; member
|
|
1500
1547
|
failures point at `/publicationProfile/<member>`.
|
|
@@ -1530,6 +1577,13 @@ components:
|
|
|
1530
1577
|
oneOf:
|
|
1531
1578
|
- $ref: "#/components/schemas/PortablePublicationPerformance"
|
|
1532
1579
|
- type: "null"
|
|
1580
|
+
recommendations:
|
|
1581
|
+
oneOf:
|
|
1582
|
+
- items:
|
|
1583
|
+
$ref: "#/components/schemas/Recommendation"
|
|
1584
|
+
maxItems: 24
|
|
1585
|
+
type: array
|
|
1586
|
+
- type: "null"
|
|
1533
1587
|
socialLinks:
|
|
1534
1588
|
items:
|
|
1535
1589
|
$ref: "#/components/schemas/PortablePublicationSocialLink"
|
|
@@ -1541,6 +1595,35 @@ components:
|
|
|
1541
1595
|
maximum: 120
|
|
1542
1596
|
minimum: 1
|
|
1543
1597
|
type: object
|
|
1598
|
+
ContentDocumentHistoryEntry:
|
|
1599
|
+
additionalProperties: false
|
|
1600
|
+
description: "SCHEMA-3.32.0: one commit that changed a content document. `source` is `draft` (saved from the editor), `publish` (a publish of the site), `import` (an import) or `unknown` (a commit Galascribe did not make). `authorLogin` is present only when GitHub names the committer."
|
|
1601
|
+
properties:
|
|
1602
|
+
authorLogin:
|
|
1603
|
+
maxLength: 39
|
|
1604
|
+
minLength: 1
|
|
1605
|
+
type: string
|
|
1606
|
+
committedAt:
|
|
1607
|
+
"": ../schemas/problem.schema.json#/$defs/rfc3339
|
|
1608
|
+
message:
|
|
1609
|
+
maxLength: 200
|
|
1610
|
+
type: string
|
|
1611
|
+
revision:
|
|
1612
|
+
pattern: ^(?:sha1:[0-9a-f]{40}|sha256:[0-9a-f]{64})$
|
|
1613
|
+
type: string
|
|
1614
|
+
source:
|
|
1615
|
+
enum:
|
|
1616
|
+
- draft
|
|
1617
|
+
- publish
|
|
1618
|
+
- import
|
|
1619
|
+
- unknown
|
|
1620
|
+
type: string
|
|
1621
|
+
required:
|
|
1622
|
+
- revision
|
|
1623
|
+
- committedAt
|
|
1624
|
+
- message
|
|
1625
|
+
- source
|
|
1626
|
+
type: object
|
|
1544
1627
|
ContentFrontmatter:
|
|
1545
1628
|
$ref: "#/components/schemas/PortableContentFrontmatterDocument"
|
|
1546
1629
|
ContentInventoryItem:
|
|
@@ -1745,7 +1828,9 @@ components:
|
|
|
1745
1828
|
page it opened. Carries no personal data beyond what each author
|
|
1746
1829
|
file itself already publishes. `listing`, `aiRights` and `performance`
|
|
1747
1830
|
(SCHEMA-3.25.1, optional) are the publication file's 3.25.0 members,
|
|
1748
|
-
absent when the file carries none.
|
|
1831
|
+
absent when the file carries none. `recommendations` (SCHEMA-3.32.0,
|
|
1832
|
+
optional) is the publication file's list of recommended sites, absent
|
|
1833
|
+
when the file carries none.
|
|
1749
1834
|
properties:
|
|
1750
1835
|
aiRights:
|
|
1751
1836
|
$ref: "#/components/schemas/PortablePublicationAiRights"
|
|
@@ -1769,6 +1854,11 @@ components:
|
|
|
1769
1854
|
$ref: "#/components/schemas/PortablePublicationListing"
|
|
1770
1855
|
performance:
|
|
1771
1856
|
$ref: "#/components/schemas/PortablePublicationPerformance"
|
|
1857
|
+
recommendations:
|
|
1858
|
+
items:
|
|
1859
|
+
$ref: "#/components/schemas/Recommendation"
|
|
1860
|
+
maxItems: 24
|
|
1861
|
+
type: array
|
|
1772
1862
|
socialLinks:
|
|
1773
1863
|
items:
|
|
1774
1864
|
$ref: "#/components/schemas/PortablePublicationSocialLink"
|
|
@@ -3595,6 +3685,18 @@ components:
|
|
|
3595
3685
|
- items
|
|
3596
3686
|
- nextCursor
|
|
3597
3687
|
type: object
|
|
3688
|
+
GetOrganizationsByOrganizationIdPublicationsByPublicationIdContentDocumentsHistoryResponse:
|
|
3689
|
+
additionalProperties: false
|
|
3690
|
+
description: "SCHEMA-3.32.0: the commits on the linked repository's main branch that changed one path, newest first, at most 50."
|
|
3691
|
+
properties:
|
|
3692
|
+
entries:
|
|
3693
|
+
items:
|
|
3694
|
+
"": "#/components/schemas/ContentDocumentHistoryEntry"
|
|
3695
|
+
maxItems: 50
|
|
3696
|
+
type: array
|
|
3697
|
+
required:
|
|
3698
|
+
- entries
|
|
3699
|
+
type: object
|
|
3598
3700
|
GetOrganizationsByOrganizationIdPublicationsByPublicationIdContentDocumentsResponse:
|
|
3599
3701
|
additionalProperties: false
|
|
3600
3702
|
properties:
|
|
@@ -7396,12 +7498,15 @@ components:
|
|
|
7396
7498
|
- state
|
|
7397
7499
|
type: object
|
|
7398
7500
|
ModerationDecision:
|
|
7501
|
+
description: "SCHEMA-3.32.0: `PIN` and `UNPIN` pin a visible root comment to the top of its article's comments, or release it. They apply to a visible root comment only, and change nothing else about it."
|
|
7399
7502
|
enum:
|
|
7400
7503
|
- HOLD
|
|
7401
7504
|
- RESTORE
|
|
7402
7505
|
- REMOVE
|
|
7403
7506
|
- DISMISS_REPORTS
|
|
7404
7507
|
- DENY_APPEAL
|
|
7508
|
+
- PIN
|
|
7509
|
+
- UNPIN
|
|
7405
7510
|
type: string
|
|
7406
7511
|
ModerationQueueItem:
|
|
7407
7512
|
additionalProperties: false
|
|
@@ -7551,10 +7656,17 @@ components:
|
|
|
7551
7656
|
type: object
|
|
7552
7657
|
NewsletterConfirmation:
|
|
7553
7658
|
additionalProperties: false
|
|
7554
|
-
description: "SCHEMA-3.23.0: what the confirmation page shows for one confirmation token."
|
|
7659
|
+
description: "SCHEMA-3.23.0: what the confirmation page shows for one confirmation token. SCHEMA-3.32.0: `afterSignupUrl` (the site's own after-signup address, when set) and `recommendations` (the sites the author recommends, when any) are present only when the site has them."
|
|
7555
7660
|
properties:
|
|
7661
|
+
afterSignupUrl:
|
|
7662
|
+
$ref: "#/components/schemas/PortablePublicationUrlHttps"
|
|
7556
7663
|
publication:
|
|
7557
7664
|
$ref: "#/components/schemas/AudiencePublication"
|
|
7665
|
+
recommendations:
|
|
7666
|
+
items:
|
|
7667
|
+
$ref: "#/components/schemas/Recommendation"
|
|
7668
|
+
maxItems: 24
|
|
7669
|
+
type: array
|
|
7558
7670
|
state:
|
|
7559
7671
|
$ref: "#/components/schemas/NewsletterConfirmationState"
|
|
7560
7672
|
required:
|
|
@@ -7578,6 +7690,13 @@ components:
|
|
|
7578
7690
|
additionalProperties: false
|
|
7579
7691
|
description: "SCHEMA-3.23.0: the send log of one post: when it went out and how many addresses it reached. `recipients` is the confirmed subscribers at send time; `sent`, `failed` and `deferred` (held back by a daily ceiling, retried later) account for them."
|
|
7580
7692
|
properties:
|
|
7693
|
+
clicked:
|
|
7694
|
+
description: "SCHEMA-3.32.0: addresses that clicked a link in the issue, from the mail provider; null when not yet known."
|
|
7695
|
+
format: int64
|
|
7696
|
+
minimum: 0
|
|
7697
|
+
type:
|
|
7698
|
+
- integer
|
|
7699
|
+
- "null"
|
|
7581
7700
|
contentId:
|
|
7582
7701
|
format: uuid
|
|
7583
7702
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
@@ -7586,6 +7705,13 @@ components:
|
|
|
7586
7705
|
format: int64
|
|
7587
7706
|
minimum: 0
|
|
7588
7707
|
type: integer
|
|
7708
|
+
delivered:
|
|
7709
|
+
description: "SCHEMA-3.32.0: addresses the receiving server accepted the issue for, from the mail provider; null when not yet known."
|
|
7710
|
+
format: int64
|
|
7711
|
+
minimum: 0
|
|
7712
|
+
type:
|
|
7713
|
+
- integer
|
|
7714
|
+
- "null"
|
|
7589
7715
|
failed:
|
|
7590
7716
|
format: int64
|
|
7591
7717
|
minimum: 0
|
|
@@ -7594,6 +7720,13 @@ components:
|
|
|
7594
7720
|
format: uuid
|
|
7595
7721
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
7596
7722
|
type: string
|
|
7723
|
+
opened:
|
|
7724
|
+
description: "SCHEMA-3.32.0: addresses that opened the issue, from the mail provider; an estimate, because open tracking is pixel-based and mail clients can load or block the pixel for the reader. Null when not yet known."
|
|
7725
|
+
format: int64
|
|
7726
|
+
minimum: 0
|
|
7727
|
+
type:
|
|
7728
|
+
- integer
|
|
7729
|
+
- "null"
|
|
7597
7730
|
recipients:
|
|
7598
7731
|
format: int64
|
|
7599
7732
|
minimum: 0
|
|
@@ -7627,8 +7760,12 @@ components:
|
|
|
7627
7760
|
type: string
|
|
7628
7761
|
NewsletterSettings:
|
|
7629
7762
|
additionalProperties: false
|
|
7630
|
-
description: "SCHEMA-3.23.0: the newsletter configuration of a site at the linked repository's main branch head, as `gala/publication.json` carries it, plus read-only status. `url` is set in `link` mode only; `emailContent` and `replyToOwner` in `galascribe` mode only; `title` and `text` in both modes; every one is null otherwise. `ownerPostalAddressSet` says whether the site owner has saved a postal address (`GET /v2/self/postal-address`); the Galascribe newsletter cannot be turned on without one. `paused` is true while sends are stopped for the site: the platform newsletter kill switch is on, or the owner has no postal address. `capacity` is the organization's subscriber allowance. `openChange` names an existing not-yet-published change of this publication that touches the file, or is null. `setUp` matches `GET .../repository/setup` `state`."
|
|
7763
|
+
description: "SCHEMA-3.23.0: the newsletter configuration of a site at the linked repository's main branch head, as `gala/publication.json` carries it, plus read-only status. `url` is set in `link` mode only; `emailContent` and `replyToOwner` in `galascribe` mode only; `title` and `text` in both modes; every one is null otherwise. `ownerPostalAddressSet` says whether the site owner has saved a postal address (`GET /v2/self/postal-address`); the Galascribe newsletter cannot be turned on without one. `paused` is true while sends are stopped for the site: the platform newsletter kill switch is on, or the owner has no postal address. `capacity` is the organization's subscriber allowance. `openChange` names an existing not-yet-published change of this publication that touches the file, or is null. `setUp` matches `GET .../repository/setup` `state`. SCHEMA-3.32.0: `welcome` and `afterSignupUrl` (`galascribe` mode only; null when unset or in another mode) are optional members, so a 3.31 reader ignores them."
|
|
7631
7764
|
properties:
|
|
7765
|
+
afterSignupUrl:
|
|
7766
|
+
oneOf:
|
|
7767
|
+
- $ref: "#/components/schemas/PortablePublicationUrlHttps"
|
|
7768
|
+
- type: "null"
|
|
7632
7769
|
capacity:
|
|
7633
7770
|
$ref: "#/components/schemas/NewsletterCapacity"
|
|
7634
7771
|
emailContent:
|
|
@@ -7666,6 +7803,10 @@ components:
|
|
|
7666
7803
|
oneOf:
|
|
7667
7804
|
- $ref: "#/components/schemas/PortablePublicationUrlHttps"
|
|
7668
7805
|
- type: "null"
|
|
7806
|
+
welcome:
|
|
7807
|
+
oneOf:
|
|
7808
|
+
- $ref: "#/components/schemas/NewsletterWelcome"
|
|
7809
|
+
- type: "null"
|
|
7669
7810
|
required:
|
|
7670
7811
|
- mode
|
|
7671
7812
|
- url
|
|
@@ -7729,11 +7870,12 @@ components:
|
|
|
7729
7870
|
- confirmedAt
|
|
7730
7871
|
type: object
|
|
7731
7872
|
NewsletterSubscriberState:
|
|
7732
|
-
description: "SCHEMA-3.23.0: `pending` (asked, not yet confirmed), `confirmed`, or `unsubscribed` (the address is kept only as a suppression digest, so its row has no `email`)."
|
|
7873
|
+
description: "SCHEMA-3.23.0: `pending` (asked, not yet confirmed), `confirmed`, or `unsubscribed` (the address is kept only as a suppression digest, so its row has no `email`). SCHEMA-3.32.0: `suppressed` is an address mail to which bounced or drew a spam complaint; it receives nothing further and cannot be re-imported or re-subscribed by the owner."
|
|
7733
7874
|
enum:
|
|
7734
7875
|
- pending
|
|
7735
7876
|
- confirmed
|
|
7736
7877
|
- unsubscribed
|
|
7878
|
+
- suppressed
|
|
7737
7879
|
type: string
|
|
7738
7880
|
NewsletterSubscription:
|
|
7739
7881
|
additionalProperties: false
|
|
@@ -7758,6 +7900,25 @@ components:
|
|
|
7758
7900
|
- subscribed
|
|
7759
7901
|
- unsubscribed
|
|
7760
7902
|
type: string
|
|
7903
|
+
NewsletterWelcome:
|
|
7904
|
+
additionalProperties: false
|
|
7905
|
+
description: "SCHEMA-3.32.0: the welcome email mailed once to a new subscriber after they confirm: a one-line subject of 1 to 120 graphemes and a plain-text body of 1 to 2000 graphemes."
|
|
7906
|
+
properties:
|
|
7907
|
+
body:
|
|
7908
|
+
$ref: "#/components/schemas/PortablePublicationPlainText"
|
|
7909
|
+
x-gala-graphemeLength:
|
|
7910
|
+
maximum: 2000
|
|
7911
|
+
minimum: 1
|
|
7912
|
+
subject:
|
|
7913
|
+
$ref: "#/components/schemas/PortablePublicationPlainText"
|
|
7914
|
+
pattern: ^[^\r\n\u2028\u2029]+$
|
|
7915
|
+
x-gala-graphemeLength:
|
|
7916
|
+
maximum: 120
|
|
7917
|
+
minimum: 1
|
|
7918
|
+
required:
|
|
7919
|
+
- subject
|
|
7920
|
+
- body
|
|
7921
|
+
type: object
|
|
7761
7922
|
NotificationCadence:
|
|
7762
7923
|
description: "SCHEMA-3.23.0: how often a category is emailed. `instant` sends one email per notification, `daily` one digest per day, `off` none. The inbox row exists whatever the cadence."
|
|
7763
7924
|
enum:
|
|
@@ -15689,6 +15850,10 @@ components:
|
|
|
15689
15850
|
type: boolean
|
|
15690
15851
|
enabled:
|
|
15691
15852
|
type: boolean
|
|
15853
|
+
likes:
|
|
15854
|
+
default: false
|
|
15855
|
+
description: "SCHEMA-3.32.0: when true, signed-in readers can like a comment. An absent member means false, so every 3.31 configuration still validates."
|
|
15856
|
+
type: boolean
|
|
15692
15857
|
maxDepth:
|
|
15693
15858
|
maximum: 4
|
|
15694
15859
|
minimum: 1
|
|
@@ -16280,6 +16445,14 @@ components:
|
|
|
16280
16445
|
$ref: "#/components/schemas/PortablePublicationPublicationPolicies"
|
|
16281
16446
|
profile:
|
|
16282
16447
|
$ref: "#/components/schemas/PortablePublicationPublicationProfile"
|
|
16448
|
+
recommendations:
|
|
16449
|
+
description: "SCHEMA-3.32.0: the sites the author recommends, shown to readers after they subscribe and published as `/.well-known/recommendations.json`. At most 24; `url` is unique within the array. JSON Schema cannot express uniqueness by one member, so consumers enforce it. An absent member means no recommendations."
|
|
16450
|
+
items:
|
|
16451
|
+
$ref: "#/components/schemas/PortablePublicationRecommendation"
|
|
16452
|
+
maxItems: 24
|
|
16453
|
+
minItems: 0
|
|
16454
|
+
type: array
|
|
16455
|
+
uniqueItems: true
|
|
16283
16456
|
schemaId:
|
|
16284
16457
|
pattern: ^urn:gala:schema:publication:2\.0\.0$
|
|
16285
16458
|
type: string
|
|
@@ -16399,6 +16572,9 @@ components:
|
|
|
16399
16572
|
- additionalProperties: false
|
|
16400
16573
|
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."
|
|
16401
16574
|
properties:
|
|
16575
|
+
afterSignupUrl:
|
|
16576
|
+
$ref: "#/components/schemas/PortablePublicationUrlHttps"
|
|
16577
|
+
description: "SCHEMA-3.32.0: where the subscriber is sent after they confirm. It must be an https URL; the API applies its own open-redirect rules. An absent member shows the Galascribe confirmation page."
|
|
16402
16578
|
emailContent:
|
|
16403
16579
|
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."
|
|
16404
16580
|
enum:
|
|
@@ -16418,6 +16594,25 @@ components:
|
|
|
16418
16594
|
minimum: 1
|
|
16419
16595
|
title:
|
|
16420
16596
|
$ref: "#/components/schemas/PortablePublicationPlainLabel"
|
|
16597
|
+
welcome:
|
|
16598
|
+
additionalProperties: false
|
|
16599
|
+
description: "SCHEMA-3.32.0: the welcome email mailed once to a new subscriber after they confirm. `subject` is one line (no line break) of 1 to 120 graphemes; `body` is plain text of 1 to 2000 graphemes. An absent `welcome` member means no welcome email."
|
|
16600
|
+
properties:
|
|
16601
|
+
body:
|
|
16602
|
+
$ref: "#/components/schemas/PortablePublicationPlainText"
|
|
16603
|
+
x-gala-graphemeLength:
|
|
16604
|
+
maximum: 2000
|
|
16605
|
+
minimum: 1
|
|
16606
|
+
subject:
|
|
16607
|
+
$ref: "#/components/schemas/PortablePublicationPlainText"
|
|
16608
|
+
pattern: ^[^\r\n\u2028\u2029]+$
|
|
16609
|
+
x-gala-graphemeLength:
|
|
16610
|
+
maximum: 120
|
|
16611
|
+
minimum: 1
|
|
16612
|
+
required:
|
|
16613
|
+
- subject
|
|
16614
|
+
- body
|
|
16615
|
+
type: object
|
|
16421
16616
|
required:
|
|
16422
16617
|
- mode
|
|
16423
16618
|
- title
|
|
@@ -16493,6 +16688,26 @@ components:
|
|
|
16493
16688
|
- route
|
|
16494
16689
|
- body
|
|
16495
16690
|
type: object
|
|
16691
|
+
PortablePublicationRecommendation:
|
|
16692
|
+
additionalProperties: false
|
|
16693
|
+
description: "SCHEMA-3.32.0: one site the author recommends to readers."
|
|
16694
|
+
properties:
|
|
16695
|
+
addedOn:
|
|
16696
|
+
description: The day the recommendation was added, YYYY-MM-DD (UTC). It feeds the `created_at` and `updated_at` members of the site's `/.well-known/recommendations.json` entry.
|
|
16697
|
+
pattern: ^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$
|
|
16698
|
+
type: string
|
|
16699
|
+
description:
|
|
16700
|
+
$ref: "#/components/schemas/PortablePublicationPlainText"
|
|
16701
|
+
x-gala-graphemeLength:
|
|
16702
|
+
maximum: 300
|
|
16703
|
+
title:
|
|
16704
|
+
$ref: "#/components/schemas/PortablePublicationPlainLabel"
|
|
16705
|
+
url:
|
|
16706
|
+
$ref: "#/components/schemas/PortablePublicationUrlHttps"
|
|
16707
|
+
required:
|
|
16708
|
+
- url
|
|
16709
|
+
- title
|
|
16710
|
+
type: object
|
|
16496
16711
|
PortablePublicationRepoRelativePath:
|
|
16497
16712
|
description: NFC UTF-8 repository-relative path using slash separators, with no leading slash, dot segment, NUL, backslash, or percent-decoded traversal.
|
|
16498
16713
|
format: gala-repository-relative-path
|
|
@@ -16849,6 +17064,28 @@ components:
|
|
|
16849
17064
|
- organizations
|
|
16850
17065
|
- capabilities
|
|
16851
17066
|
type: object
|
|
17067
|
+
PostCallbacksBrevoRequest:
|
|
17068
|
+
description: Raw Brevo webhook JSON authenticated by the X-Gala-Webhook-Token header. Brevo posts one event per call; an object or an array of objects is accepted and every member is opaque to the contract.
|
|
17069
|
+
oneOf:
|
|
17070
|
+
- additionalProperties: true
|
|
17071
|
+
type: object
|
|
17072
|
+
- items:
|
|
17073
|
+
additionalProperties: true
|
|
17074
|
+
type: object
|
|
17075
|
+
maxItems: 1000
|
|
17076
|
+
type: array
|
|
17077
|
+
PostCallbacksBrevoResponse:
|
|
17078
|
+
additionalProperties: false
|
|
17079
|
+
properties:
|
|
17080
|
+
accepted:
|
|
17081
|
+
not:
|
|
17082
|
+
enum:
|
|
17083
|
+
- false
|
|
17084
|
+
type: boolean
|
|
17085
|
+
x-gala-const: true
|
|
17086
|
+
required:
|
|
17087
|
+
- accepted
|
|
17088
|
+
type: object
|
|
16852
17089
|
PostCallbacksGithubAppRequest:
|
|
16853
17090
|
additionalProperties: true
|
|
16854
17091
|
description: Raw GitHub webhook JSON authenticated over the exact received bytes; event and delivery identities are carried in required GitHub headers.
|
|
@@ -17537,6 +17774,31 @@ components:
|
|
|
17537
17774
|
- expectedHead
|
|
17538
17775
|
- diffDigest
|
|
17539
17776
|
type: object
|
|
17777
|
+
PostOrganizationsByOrganizationIdPublicationsByPublicationIdContentLinkPreviewRequest:
|
|
17778
|
+
additionalProperties: false
|
|
17779
|
+
description: "SCHEMA-3.32.0: the page to preview. Only https addresses are fetched."
|
|
17780
|
+
properties:
|
|
17781
|
+
url:
|
|
17782
|
+
$ref: "#/components/schemas/PortablePublicationUrlHttps"
|
|
17783
|
+
required:
|
|
17784
|
+
- url
|
|
17785
|
+
type: object
|
|
17786
|
+
PostOrganizationsByOrganizationIdPublicationsByPublicationIdContentLinkPreviewResponse:
|
|
17787
|
+
additionalProperties: false
|
|
17788
|
+
description: "SCHEMA-3.32.0: what the page says about itself. Every member is omitted when the page does not give one; there is no image."
|
|
17789
|
+
properties:
|
|
17790
|
+
canonicalUrl:
|
|
17791
|
+
$ref: "#/components/schemas/PortablePublicationUrlHttps"
|
|
17792
|
+
description:
|
|
17793
|
+
maxLength: 500
|
|
17794
|
+
type: string
|
|
17795
|
+
siteName:
|
|
17796
|
+
maxLength: 200
|
|
17797
|
+
type: string
|
|
17798
|
+
title:
|
|
17799
|
+
maxLength: 300
|
|
17800
|
+
type: string
|
|
17801
|
+
type: object
|
|
17540
17802
|
PostOrganizationsByOrganizationIdPublicationsByPublicationIdDeploymentsByGenerationIdReconcileRequest:
|
|
17541
17803
|
additionalProperties: false
|
|
17542
17804
|
properties:
|
|
@@ -17726,6 +17988,55 @@ components:
|
|
|
17726
17988
|
type: object
|
|
17727
17989
|
PostOrganizationsByOrganizationIdPublicationsByPublicationIdModerationCommentsByCommentIdDecideResponse:
|
|
17728
17990
|
$ref: "#/components/schemas/ModerationQueueItem"
|
|
17991
|
+
PostOrganizationsByOrganizationIdPublicationsByPublicationIdNewsletterSubscribersImportRequest:
|
|
17992
|
+
additionalProperties: false
|
|
17993
|
+
description: "SCHEMA-3.32.0: the addresses to invite, already parsed from the owner's file. `attestation` must be true: the owner states that every address agreed to hear from them. Each new address becomes a `pending` subscriber and is sent the confirmation email; nobody is subscribed without confirming."
|
|
17994
|
+
properties:
|
|
17995
|
+
addresses:
|
|
17996
|
+
items:
|
|
17997
|
+
format: email
|
|
17998
|
+
maxLength: 320
|
|
17999
|
+
minLength: 3
|
|
18000
|
+
type: string
|
|
18001
|
+
maxItems: 5000
|
|
18002
|
+
minItems: 1
|
|
18003
|
+
type: array
|
|
18004
|
+
attestation:
|
|
18005
|
+
not:
|
|
18006
|
+
enum:
|
|
18007
|
+
- false
|
|
18008
|
+
type: boolean
|
|
18009
|
+
x-gala-const: true
|
|
18010
|
+
required:
|
|
18011
|
+
- addresses
|
|
18012
|
+
- attestation
|
|
18013
|
+
type: object
|
|
18014
|
+
PostOrganizationsByOrganizationIdPublicationsByPublicationIdNewsletterSubscribersImportResponse:
|
|
18015
|
+
additionalProperties: false
|
|
18016
|
+
description: "SCHEMA-3.32.0: what the import did. `queued` addresses were new and had a confirmation email queued; `skippedKnown` were already pending, confirmed, unsubscribed or suppressed; `invalid` were not usable addresses; `overCapacity` were left out because the organization's subscriber allowance was reached."
|
|
18017
|
+
properties:
|
|
18018
|
+
invalid:
|
|
18019
|
+
format: int64
|
|
18020
|
+
minimum: 0
|
|
18021
|
+
type: integer
|
|
18022
|
+
overCapacity:
|
|
18023
|
+
format: int64
|
|
18024
|
+
minimum: 0
|
|
18025
|
+
type: integer
|
|
18026
|
+
queued:
|
|
18027
|
+
format: int64
|
|
18028
|
+
minimum: 0
|
|
18029
|
+
type: integer
|
|
18030
|
+
skippedKnown:
|
|
18031
|
+
format: int64
|
|
18032
|
+
minimum: 0
|
|
18033
|
+
type: integer
|
|
18034
|
+
required:
|
|
18035
|
+
- queued
|
|
18036
|
+
- skippedKnown
|
|
18037
|
+
- invalid
|
|
18038
|
+
- overCapacity
|
|
18039
|
+
type: object
|
|
17729
18040
|
PostOrganizationsByOrganizationIdPublicationsByPublicationIdOverviewRefreshResponse:
|
|
17730
18041
|
$ref: "#/components/schemas/PublicationOverview"
|
|
17731
18042
|
PostOrganizationsByOrganizationIdPublicationsByPublicationIdPreviewRetirementResponse:
|
|
@@ -20853,8 +21164,12 @@ components:
|
|
|
20853
21164
|
- text
|
|
20854
21165
|
- emailContent
|
|
20855
21166
|
- replyToOwner
|
|
20856
|
-
description: "Members by mode: `off` takes none besides `mode`; `link` takes `url`, `title` and `text` (all required); `galascribe` takes `title`, `text`, `emailContent` and `replyToOwner` (all required). A member that does not belong to the chosen mode is `422 VALIDATION_FAILED` pointed at that member."
|
|
21167
|
+
description: "Members by mode: `off` takes none besides `mode`; `link` takes `url`, `title` and `text` (all required); `galascribe` takes `title`, `text`, `emailContent` and `replyToOwner` (all required). A member that does not belong to the chosen mode is `422 VALIDATION_FAILED` pointed at that member. SCHEMA-3.32.0: `welcome` and `afterSignupUrl` are optional in `galascribe` mode (an absent member leaves the stored value as it is and null removes it)."
|
|
20857
21168
|
properties:
|
|
21169
|
+
afterSignupUrl:
|
|
21170
|
+
oneOf:
|
|
21171
|
+
- $ref: "#/components/schemas/PortablePublicationUrlHttps"
|
|
21172
|
+
- type: "null"
|
|
20858
21173
|
emailContent:
|
|
20859
21174
|
$ref: "#/components/schemas/NewsletterEmailContent"
|
|
20860
21175
|
mode:
|
|
@@ -20870,6 +21185,10 @@ components:
|
|
|
20870
21185
|
$ref: "#/components/schemas/PortablePublicationPlainLabel"
|
|
20871
21186
|
url:
|
|
20872
21187
|
$ref: "#/components/schemas/PortablePublicationUrlHttps"
|
|
21188
|
+
welcome:
|
|
21189
|
+
oneOf:
|
|
21190
|
+
- $ref: "#/components/schemas/NewsletterWelcome"
|
|
21191
|
+
- type: "null"
|
|
20873
21192
|
required:
|
|
20874
21193
|
- mode
|
|
20875
21194
|
type: object
|
|
@@ -21792,6 +22111,25 @@ components:
|
|
|
21792
22111
|
required:
|
|
21793
22112
|
- origin
|
|
21794
22113
|
type: object
|
|
22114
|
+
Recommendation:
|
|
22115
|
+
additionalProperties: false
|
|
22116
|
+
description: "SCHEMA-3.32.0: one site the author recommends to readers. `addedOn` is the day it was added (YYYY-MM-DD, UTC) and feeds the `created_at` and `updated_at` of the site's `/.well-known/recommendations.json` entry."
|
|
22117
|
+
properties:
|
|
22118
|
+
addedOn:
|
|
22119
|
+
pattern: ^[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12][0-9]|3[01])$
|
|
22120
|
+
type: string
|
|
22121
|
+
description:
|
|
22122
|
+
$ref: "#/components/schemas/PortablePublicationPlainText"
|
|
22123
|
+
x-gala-graphemeLength:
|
|
22124
|
+
maximum: 300
|
|
22125
|
+
title:
|
|
22126
|
+
$ref: "#/components/schemas/PortablePublicationPlainLabel"
|
|
22127
|
+
url:
|
|
22128
|
+
$ref: "#/components/schemas/PortablePublicationUrlHttps"
|
|
22129
|
+
required:
|
|
22130
|
+
- url
|
|
22131
|
+
- title
|
|
22132
|
+
type: object
|
|
21795
22133
|
RecoveryCodeStatus:
|
|
21796
22134
|
additionalProperties: false
|
|
21797
22135
|
description: How many codes of the current recovery code set are still unused.
|
|
@@ -22816,6 +23154,10 @@ components:
|
|
|
22816
23154
|
description: Scoped credential an operator creates; acts as that operator within its scopes. Refused for every operation without `x-gala-api-key-scope`.
|
|
22817
23155
|
scheme: bearer
|
|
22818
23156
|
type: http
|
|
23157
|
+
brevoWebhookToken:
|
|
23158
|
+
in: header
|
|
23159
|
+
name: X-Gala-Webhook-Token
|
|
23160
|
+
type: apiKey
|
|
22819
23161
|
browserSession:
|
|
22820
23162
|
in: cookie
|
|
22821
23163
|
name: __Host-gala-session
|
|
@@ -23490,6 +23832,103 @@ paths:
|
|
|
23490
23832
|
- NONE
|
|
23491
23833
|
x-gala-success-category: protocol
|
|
23492
23834
|
x-gala-tenant-scope: NONE
|
|
23835
|
+
/v2/callbacks/brevo:
|
|
23836
|
+
post:
|
|
23837
|
+
description: |
|
|
23838
|
+
Brevo transactional-email event webhook (delivered, opened, clicked, bounced, complaint and similar). Brevo posts one event per call; the body is an opaque JSON object or an array of such objects and the contract does not describe Brevo's own fields. The call is authenticated by the shared token in the `X-Gala-Webhook-Token` header, which the deployment configures in Brevo's webhook headers. `202` means the body was admitted for asynchronous processing, including an event the API ignores or has already seen. `400` is a malformed body, `401` is a missing or wrong token.
|
|
23839
|
+
operationId: postCallbacksBrevo
|
|
23840
|
+
parameters:
|
|
23841
|
+
- $ref: "#/components/parameters/XCorrelationId"
|
|
23842
|
+
- example: wh_0000000000000000000000000000000000000000
|
|
23843
|
+
in: header
|
|
23844
|
+
name: X-Gala-Webhook-Token
|
|
23845
|
+
required: true
|
|
23846
|
+
schema:
|
|
23847
|
+
maxLength: 1024
|
|
23848
|
+
minLength: 1
|
|
23849
|
+
type: string
|
|
23850
|
+
requestBody:
|
|
23851
|
+
content:
|
|
23852
|
+
application/json:
|
|
23853
|
+
examples:
|
|
23854
|
+
nominal:
|
|
23855
|
+
summary: Nominal valid request
|
|
23856
|
+
value: {}
|
|
23857
|
+
schema:
|
|
23858
|
+
$ref: "#/components/schemas/PostCallbacksBrevoRequest"
|
|
23859
|
+
required: true
|
|
23860
|
+
responses:
|
|
23861
|
+
"202":
|
|
23862
|
+
content:
|
|
23863
|
+
application/json:
|
|
23864
|
+
examples:
|
|
23865
|
+
nominal:
|
|
23866
|
+
summary: Nominal successful response
|
|
23867
|
+
value:
|
|
23868
|
+
accepted: true
|
|
23869
|
+
schema:
|
|
23870
|
+
$ref: "#/components/schemas/PostCallbacksBrevoResponse"
|
|
23871
|
+
description: admit an authenticated Brevo email event succeeded
|
|
23872
|
+
headers:
|
|
23873
|
+
Cache-Control:
|
|
23874
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
23875
|
+
X-Correlation-Id:
|
|
23876
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
23877
|
+
"400":
|
|
23878
|
+
$ref: "#/components/responses/ValidationFailed"
|
|
23879
|
+
"401":
|
|
23880
|
+
content:
|
|
23881
|
+
application/problem+json:
|
|
23882
|
+
examples:
|
|
23883
|
+
AUTHENTICATION_REQUIRED:
|
|
23884
|
+
summary: AUTHENTICATION_REQUIRED
|
|
23885
|
+
value:
|
|
23886
|
+
code: AUTHENTICATION_REQUIRED
|
|
23887
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
23888
|
+
detail: See the operation contract.
|
|
23889
|
+
errors: []
|
|
23890
|
+
retryable: false
|
|
23891
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
23892
|
+
schemaVersion: 2.0.0
|
|
23893
|
+
status: 401
|
|
23894
|
+
title: AUTHENTICATION_REQUIRED
|
|
23895
|
+
type: urn:gala:problem:authentication-required
|
|
23896
|
+
schema:
|
|
23897
|
+
$ref: "#/components/schemas/Problem"
|
|
23898
|
+
description: AUTHENTICATION_REQUIRED
|
|
23899
|
+
headers:
|
|
23900
|
+
Cache-Control:
|
|
23901
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
23902
|
+
X-Correlation-Id:
|
|
23903
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
23904
|
+
x-gala-problem-codes:
|
|
23905
|
+
- AUTHENTICATION_REQUIRED
|
|
23906
|
+
"413":
|
|
23907
|
+
$ref: "#/components/responses/RequestTooLarge"
|
|
23908
|
+
"415":
|
|
23909
|
+
$ref: "#/components/responses/UnsupportedMediaType"
|
|
23910
|
+
security:
|
|
23911
|
+
- brevoWebhookToken: []
|
|
23912
|
+
summary: admit an authenticated Brevo email event
|
|
23913
|
+
tags:
|
|
23914
|
+
- callbacks
|
|
23915
|
+
x-gala-activation-gate: MVP
|
|
23916
|
+
x-gala-activation-guards:
|
|
23917
|
+
- NONE
|
|
23918
|
+
x-gala-capability-key: null
|
|
23919
|
+
x-gala-concurrency: provider-event-idempotency-and-event-time-ordering
|
|
23920
|
+
x-gala-conditional-capabilities: []
|
|
23921
|
+
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
23922
|
+
x-gala-nullability: required-and-nullable-are-explicit
|
|
23923
|
+
x-gala-purpose: admit an authenticated Brevo email event
|
|
23924
|
+
x-gala-reachable-problems:
|
|
23925
|
+
- AUTHENTICATION_REQUIRED
|
|
23926
|
+
- VALIDATION_FAILED
|
|
23927
|
+
x-gala-replay-identity: brevo-message-id-and-event-time
|
|
23928
|
+
x-gala-state-guards:
|
|
23929
|
+
- NONE
|
|
23930
|
+
x-gala-success-category: provider-callback
|
|
23931
|
+
x-gala-tenant-scope: NONE
|
|
23493
23932
|
/v2/callbacks/cloudflare/oauth:
|
|
23494
23933
|
get:
|
|
23495
23934
|
description: |
|
|
@@ -40058,6 +40497,534 @@ paths:
|
|
|
40058
40497
|
- NONE
|
|
40059
40498
|
x-gala-success-category: query
|
|
40060
40499
|
x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
|
|
40500
|
+
/v2/organizations/{organizationId}/publications/{publicationId}/content/documents/history:
|
|
40501
|
+
get:
|
|
40502
|
+
description: |
|
|
40503
|
+
Needs `publication.view`. Lists the commits on the linked repository's
|
|
40504
|
+
main branch that changed `path`, newest first, at most 50. Each entry
|
|
40505
|
+
carries the `revision` (the commit to pass as `revision` to `GET
|
|
40506
|
+
.../content/documents`), when it was committed, the committer's GitHub
|
|
40507
|
+
login when GitHub names one, the first line of the commit message and
|
|
40508
|
+
`source`: `draft` (saved from the editor), `publish` (a publish of the
|
|
40509
|
+
site), `import` (an import) or `unknown` (a commit Galascribe did not
|
|
40510
|
+
make). A path with no commit on main, or an unknown path, is `404
|
|
40511
|
+
RESOURCE_NOT_FOUND`.
|
|
40512
|
+
operationId: getOrganizationsByOrganizationIdPublicationsByPublicationIdContentDocumentsHistory
|
|
40513
|
+
parameters:
|
|
40514
|
+
- $ref: "#/components/parameters/XCorrelationId"
|
|
40515
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
40516
|
+
in: path
|
|
40517
|
+
name: organizationId
|
|
40518
|
+
required: true
|
|
40519
|
+
schema:
|
|
40520
|
+
format: uuid
|
|
40521
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
40522
|
+
type: string
|
|
40523
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
40524
|
+
in: path
|
|
40525
|
+
name: publicationId
|
|
40526
|
+
required: true
|
|
40527
|
+
schema:
|
|
40528
|
+
format: uuid
|
|
40529
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
40530
|
+
type: string
|
|
40531
|
+
- example: content/articles/example.md
|
|
40532
|
+
in: query
|
|
40533
|
+
name: path
|
|
40534
|
+
required: true
|
|
40535
|
+
schema:
|
|
40536
|
+
maxLength: 512
|
|
40537
|
+
minLength: 1
|
|
40538
|
+
pattern: ^(?!/)(?!.*(?:^|/)\.)(?!gala\.lock\.json$)(?:gala/theme-pages/[^\x00-\x1f\x7f\\/]+|(?!gala(?:/|$))[^\x00-\x1f\x7f\\]+)$
|
|
40539
|
+
type: string
|
|
40540
|
+
responses:
|
|
40541
|
+
"200":
|
|
40542
|
+
content:
|
|
40543
|
+
application/json:
|
|
40544
|
+
examples:
|
|
40545
|
+
nominal:
|
|
40546
|
+
summary: Nominal successful response
|
|
40547
|
+
value:
|
|
40548
|
+
entries:
|
|
40549
|
+
- authorLogin: octocat
|
|
40550
|
+
committedAt: "2026-11-03T09:30:00.000Z"
|
|
40551
|
+
message: Update example
|
|
40552
|
+
revision: sha1:0000000000000000000000000000000000000000
|
|
40553
|
+
source: draft
|
|
40554
|
+
schema:
|
|
40555
|
+
$ref: "#/components/schemas/GetOrganizationsByOrganizationIdPublicationsByPublicationIdContentDocumentsHistoryResponse"
|
|
40556
|
+
description: list the history of one content document succeeded
|
|
40557
|
+
headers:
|
|
40558
|
+
Cache-Control:
|
|
40559
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
40560
|
+
X-Correlation-Id:
|
|
40561
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
40562
|
+
"400":
|
|
40563
|
+
content:
|
|
40564
|
+
application/problem+json:
|
|
40565
|
+
examples:
|
|
40566
|
+
VALIDATION_FAILED:
|
|
40567
|
+
summary: VALIDATION_FAILED
|
|
40568
|
+
value:
|
|
40569
|
+
code: VALIDATION_FAILED
|
|
40570
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
40571
|
+
detail: See the operation contract.
|
|
40572
|
+
errors: []
|
|
40573
|
+
retryable: false
|
|
40574
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
40575
|
+
schemaVersion: 2.0.0
|
|
40576
|
+
status: 400
|
|
40577
|
+
title: VALIDATION_FAILED
|
|
40578
|
+
type: urn:gala:problem:validation-failed
|
|
40579
|
+
schema:
|
|
40580
|
+
$ref: "#/components/schemas/Problem"
|
|
40581
|
+
description: VALIDATION_FAILED
|
|
40582
|
+
headers:
|
|
40583
|
+
Cache-Control:
|
|
40584
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
40585
|
+
X-Correlation-Id:
|
|
40586
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
40587
|
+
x-gala-problem-codes:
|
|
40588
|
+
- VALIDATION_FAILED
|
|
40589
|
+
"401":
|
|
40590
|
+
content:
|
|
40591
|
+
application/problem+json:
|
|
40592
|
+
examples:
|
|
40593
|
+
AUTHENTICATION_REQUIRED:
|
|
40594
|
+
summary: AUTHENTICATION_REQUIRED
|
|
40595
|
+
value:
|
|
40596
|
+
code: AUTHENTICATION_REQUIRED
|
|
40597
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
40598
|
+
detail: See the operation contract.
|
|
40599
|
+
errors: []
|
|
40600
|
+
retryable: false
|
|
40601
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
40602
|
+
schemaVersion: 2.0.0
|
|
40603
|
+
status: 401
|
|
40604
|
+
title: AUTHENTICATION_REQUIRED
|
|
40605
|
+
type: urn:gala:problem:authentication-required
|
|
40606
|
+
schema:
|
|
40607
|
+
$ref: "#/components/schemas/Problem"
|
|
40608
|
+
description: AUTHENTICATION_REQUIRED
|
|
40609
|
+
headers:
|
|
40610
|
+
Cache-Control:
|
|
40611
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
40612
|
+
X-Correlation-Id:
|
|
40613
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
40614
|
+
x-gala-problem-codes:
|
|
40615
|
+
- AUTHENTICATION_REQUIRED
|
|
40616
|
+
"403":
|
|
40617
|
+
content:
|
|
40618
|
+
application/problem+json:
|
|
40619
|
+
examples:
|
|
40620
|
+
AUTHORIZATION_DENIED:
|
|
40621
|
+
summary: AUTHORIZATION_DENIED
|
|
40622
|
+
value:
|
|
40623
|
+
code: AUTHORIZATION_DENIED
|
|
40624
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
40625
|
+
detail: See the operation contract.
|
|
40626
|
+
errors: []
|
|
40627
|
+
retryable: false
|
|
40628
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
40629
|
+
schemaVersion: 2.0.0
|
|
40630
|
+
status: 403
|
|
40631
|
+
title: AUTHORIZATION_DENIED
|
|
40632
|
+
type: urn:gala:problem:authorization-denied
|
|
40633
|
+
schema:
|
|
40634
|
+
$ref: "#/components/schemas/Problem"
|
|
40635
|
+
description: AUTHORIZATION_DENIED
|
|
40636
|
+
headers:
|
|
40637
|
+
Cache-Control:
|
|
40638
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
40639
|
+
X-Correlation-Id:
|
|
40640
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
40641
|
+
x-gala-problem-codes:
|
|
40642
|
+
- AUTHORIZATION_DENIED
|
|
40643
|
+
"404":
|
|
40644
|
+
content:
|
|
40645
|
+
application/problem+json:
|
|
40646
|
+
examples:
|
|
40647
|
+
RESOURCE_NOT_FOUND:
|
|
40648
|
+
summary: RESOURCE_NOT_FOUND
|
|
40649
|
+
value:
|
|
40650
|
+
code: RESOURCE_NOT_FOUND
|
|
40651
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
40652
|
+
detail: See the operation contract.
|
|
40653
|
+
errors: []
|
|
40654
|
+
retryable: false
|
|
40655
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
40656
|
+
schemaVersion: 2.0.0
|
|
40657
|
+
status: 404
|
|
40658
|
+
title: RESOURCE_NOT_FOUND
|
|
40659
|
+
type: urn:gala:problem:resource-not-found
|
|
40660
|
+
schema:
|
|
40661
|
+
$ref: "#/components/schemas/Problem"
|
|
40662
|
+
description: RESOURCE_NOT_FOUND
|
|
40663
|
+
headers:
|
|
40664
|
+
Cache-Control:
|
|
40665
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
40666
|
+
X-Correlation-Id:
|
|
40667
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
40668
|
+
x-gala-problem-codes:
|
|
40669
|
+
- RESOURCE_NOT_FOUND
|
|
40670
|
+
"429":
|
|
40671
|
+
content:
|
|
40672
|
+
application/problem+json:
|
|
40673
|
+
examples:
|
|
40674
|
+
RATE_LIMITED:
|
|
40675
|
+
summary: RATE_LIMITED
|
|
40676
|
+
value:
|
|
40677
|
+
code: RATE_LIMITED
|
|
40678
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
40679
|
+
detail: See the operation contract.
|
|
40680
|
+
errors: []
|
|
40681
|
+
retryable: true
|
|
40682
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
40683
|
+
schemaVersion: 2.0.0
|
|
40684
|
+
status: 429
|
|
40685
|
+
title: RATE_LIMITED
|
|
40686
|
+
type: urn:gala:problem:rate-limited
|
|
40687
|
+
schema:
|
|
40688
|
+
$ref: "#/components/schemas/Problem"
|
|
40689
|
+
description: RATE_LIMITED
|
|
40690
|
+
headers:
|
|
40691
|
+
Cache-Control:
|
|
40692
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
40693
|
+
Retry-After:
|
|
40694
|
+
$ref: "#/components/headers/RetryAfter"
|
|
40695
|
+
X-Correlation-Id:
|
|
40696
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
40697
|
+
x-gala-problem-codes:
|
|
40698
|
+
- RATE_LIMITED
|
|
40699
|
+
"503":
|
|
40700
|
+
content:
|
|
40701
|
+
application/problem+json:
|
|
40702
|
+
examples:
|
|
40703
|
+
CAPABILITY_UNAVAILABLE:
|
|
40704
|
+
summary: CAPABILITY_UNAVAILABLE
|
|
40705
|
+
value:
|
|
40706
|
+
code: CAPABILITY_UNAVAILABLE
|
|
40707
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
40708
|
+
detail: See the operation contract.
|
|
40709
|
+
errors: []
|
|
40710
|
+
retryable: false
|
|
40711
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
40712
|
+
schemaVersion: 2.0.0
|
|
40713
|
+
status: 503
|
|
40714
|
+
title: CAPABILITY_UNAVAILABLE
|
|
40715
|
+
type: urn:gala:problem:capability-unavailable
|
|
40716
|
+
DEPENDENCY_UNAVAILABLE:
|
|
40717
|
+
summary: DEPENDENCY_UNAVAILABLE
|
|
40718
|
+
value:
|
|
40719
|
+
code: DEPENDENCY_UNAVAILABLE
|
|
40720
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
40721
|
+
detail: See the operation contract.
|
|
40722
|
+
errors: []
|
|
40723
|
+
retryable: true
|
|
40724
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
40725
|
+
schemaVersion: 2.0.0
|
|
40726
|
+
status: 503
|
|
40727
|
+
title: DEPENDENCY_UNAVAILABLE
|
|
40728
|
+
type: urn:gala:problem:dependency-unavailable
|
|
40729
|
+
schema:
|
|
40730
|
+
$ref: "#/components/schemas/Problem"
|
|
40731
|
+
description: CAPABILITY_UNAVAILABLE, DEPENDENCY_UNAVAILABLE
|
|
40732
|
+
headers:
|
|
40733
|
+
Cache-Control:
|
|
40734
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
40735
|
+
X-Correlation-Id:
|
|
40736
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
40737
|
+
x-gala-problem-codes:
|
|
40738
|
+
- CAPABILITY_UNAVAILABLE
|
|
40739
|
+
- DEPENDENCY_UNAVAILABLE
|
|
40740
|
+
security:
|
|
40741
|
+
- browserSession: []
|
|
40742
|
+
summary: list the history of one content document
|
|
40743
|
+
tags:
|
|
40744
|
+
- organizations
|
|
40745
|
+
x-gala-activation-gate: MVP
|
|
40746
|
+
x-gala-activation-guards:
|
|
40747
|
+
- Active repository binding and configured GitHub App identity capability
|
|
40748
|
+
x-gala-capability-key: publication.view
|
|
40749
|
+
x-gala-concurrency: binding-epoch
|
|
40750
|
+
x-gala-conditional-capabilities: []
|
|
40751
|
+
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
40752
|
+
x-gala-nullability: required-and-nullable-are-explicit
|
|
40753
|
+
x-gala-purpose: list the history of one content document
|
|
40754
|
+
x-gala-reachable-problems:
|
|
40755
|
+
- AUTHENTICATION_REQUIRED
|
|
40756
|
+
- AUTHORIZATION_DENIED
|
|
40757
|
+
- CAPABILITY_UNAVAILABLE
|
|
40758
|
+
- DEPENDENCY_UNAVAILABLE
|
|
40759
|
+
- RATE_LIMITED
|
|
40760
|
+
- RESOURCE_NOT_FOUND
|
|
40761
|
+
- VALIDATION_FAILED
|
|
40762
|
+
x-gala-replay-identity: safe-query
|
|
40763
|
+
x-gala-state-guards:
|
|
40764
|
+
- NONE
|
|
40765
|
+
x-gala-success-category: query
|
|
40766
|
+
x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
|
|
40767
|
+
/v2/organizations/{organizationId}/publications/{publicationId}/content/link-preview:
|
|
40768
|
+
post:
|
|
40769
|
+
description: |
|
|
40770
|
+
Needs `publication.source.write`. The server fetches `url` (https only; never an address on a private or internal network, and at most a few redirects, each re-checked) and returns what the page says about itself, for the editor's bookmark card: `title`, `description`, `siteName` and `canonicalUrl`, from Open Graph or standard metadata. Each member is omitted when the page does not give one. No image is returned or fetched. A page that cannot be reached, is not HTML or is too large is `422 VALIDATION_FAILED` pointed at `/url`. Calls are rate-limited per caller (`429 RATE_LIMITED`).
|
|
40771
|
+
operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdContentLinkPreview
|
|
40772
|
+
parameters:
|
|
40773
|
+
- $ref: "#/components/parameters/XCorrelationId"
|
|
40774
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
40775
|
+
in: path
|
|
40776
|
+
name: organizationId
|
|
40777
|
+
required: true
|
|
40778
|
+
schema:
|
|
40779
|
+
format: uuid
|
|
40780
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
40781
|
+
type: string
|
|
40782
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
40783
|
+
in: path
|
|
40784
|
+
name: publicationId
|
|
40785
|
+
required: true
|
|
40786
|
+
schema:
|
|
40787
|
+
format: uuid
|
|
40788
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
40789
|
+
type: string
|
|
40790
|
+
- $ref: "#/components/parameters/XCsrfToken"
|
|
40791
|
+
requestBody:
|
|
40792
|
+
content:
|
|
40793
|
+
application/json:
|
|
40794
|
+
examples:
|
|
40795
|
+
nominal:
|
|
40796
|
+
summary: Nominal valid request
|
|
40797
|
+
value:
|
|
40798
|
+
url: https://example.com/article
|
|
40799
|
+
schema:
|
|
40800
|
+
$ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdContentLinkPreviewRequest"
|
|
40801
|
+
required: true
|
|
40802
|
+
responses:
|
|
40803
|
+
"200":
|
|
40804
|
+
content:
|
|
40805
|
+
application/json:
|
|
40806
|
+
examples:
|
|
40807
|
+
nominal:
|
|
40808
|
+
summary: Nominal successful response
|
|
40809
|
+
value:
|
|
40810
|
+
canonicalUrl: https://example.com/article
|
|
40811
|
+
description: A short description of the page.
|
|
40812
|
+
siteName: Example
|
|
40813
|
+
title: Example article
|
|
40814
|
+
schema:
|
|
40815
|
+
$ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdContentLinkPreviewResponse"
|
|
40816
|
+
description: preview one linked page succeeded
|
|
40817
|
+
headers:
|
|
40818
|
+
Cache-Control:
|
|
40819
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
40820
|
+
X-Correlation-Id:
|
|
40821
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
40822
|
+
"400":
|
|
40823
|
+
content:
|
|
40824
|
+
application/problem+json:
|
|
40825
|
+
examples:
|
|
40826
|
+
REQUEST_FIELD_UNKNOWN:
|
|
40827
|
+
summary: REQUEST_FIELD_UNKNOWN
|
|
40828
|
+
value:
|
|
40829
|
+
code: REQUEST_FIELD_UNKNOWN
|
|
40830
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
40831
|
+
detail: See the operation contract.
|
|
40832
|
+
errors: []
|
|
40833
|
+
retryable: false
|
|
40834
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
40835
|
+
schemaVersion: 2.0.0
|
|
40836
|
+
status: 400
|
|
40837
|
+
title: REQUEST_FIELD_UNKNOWN
|
|
40838
|
+
type: urn:gala:problem:request-field-unknown
|
|
40839
|
+
VALIDATION_FAILED:
|
|
40840
|
+
summary: VALIDATION_FAILED
|
|
40841
|
+
value:
|
|
40842
|
+
code: VALIDATION_FAILED
|
|
40843
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
40844
|
+
detail: See the operation contract.
|
|
40845
|
+
errors: []
|
|
40846
|
+
retryable: false
|
|
40847
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
40848
|
+
schemaVersion: 2.0.0
|
|
40849
|
+
status: 400
|
|
40850
|
+
title: VALIDATION_FAILED
|
|
40851
|
+
type: urn:gala:problem:validation-failed
|
|
40852
|
+
schema:
|
|
40853
|
+
$ref: "#/components/schemas/Problem"
|
|
40854
|
+
description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
|
|
40855
|
+
headers:
|
|
40856
|
+
Cache-Control:
|
|
40857
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
40858
|
+
X-Correlation-Id:
|
|
40859
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
40860
|
+
x-gala-problem-codes:
|
|
40861
|
+
- REQUEST_FIELD_UNKNOWN
|
|
40862
|
+
- VALIDATION_FAILED
|
|
40863
|
+
"401":
|
|
40864
|
+
content:
|
|
40865
|
+
application/problem+json:
|
|
40866
|
+
examples:
|
|
40867
|
+
AUTHENTICATION_REQUIRED:
|
|
40868
|
+
summary: AUTHENTICATION_REQUIRED
|
|
40869
|
+
value:
|
|
40870
|
+
code: AUTHENTICATION_REQUIRED
|
|
40871
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
40872
|
+
detail: See the operation contract.
|
|
40873
|
+
errors: []
|
|
40874
|
+
retryable: false
|
|
40875
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
40876
|
+
schemaVersion: 2.0.0
|
|
40877
|
+
status: 401
|
|
40878
|
+
title: AUTHENTICATION_REQUIRED
|
|
40879
|
+
type: urn:gala:problem:authentication-required
|
|
40880
|
+
schema:
|
|
40881
|
+
$ref: "#/components/schemas/Problem"
|
|
40882
|
+
description: AUTHENTICATION_REQUIRED
|
|
40883
|
+
headers:
|
|
40884
|
+
Cache-Control:
|
|
40885
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
40886
|
+
X-Correlation-Id:
|
|
40887
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
40888
|
+
x-gala-problem-codes:
|
|
40889
|
+
- AUTHENTICATION_REQUIRED
|
|
40890
|
+
"403":
|
|
40891
|
+
content:
|
|
40892
|
+
application/problem+json:
|
|
40893
|
+
examples:
|
|
40894
|
+
AUTHORIZATION_DENIED:
|
|
40895
|
+
summary: AUTHORIZATION_DENIED
|
|
40896
|
+
value:
|
|
40897
|
+
code: AUTHORIZATION_DENIED
|
|
40898
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
40899
|
+
detail: See the operation contract.
|
|
40900
|
+
errors: []
|
|
40901
|
+
retryable: false
|
|
40902
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
40903
|
+
schemaVersion: 2.0.0
|
|
40904
|
+
status: 403
|
|
40905
|
+
title: AUTHORIZATION_DENIED
|
|
40906
|
+
type: urn:gala:problem:authorization-denied
|
|
40907
|
+
schema:
|
|
40908
|
+
$ref: "#/components/schemas/Problem"
|
|
40909
|
+
description: AUTHORIZATION_DENIED
|
|
40910
|
+
headers:
|
|
40911
|
+
Cache-Control:
|
|
40912
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
40913
|
+
X-Correlation-Id:
|
|
40914
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
40915
|
+
x-gala-problem-codes:
|
|
40916
|
+
- AUTHORIZATION_DENIED
|
|
40917
|
+
"404":
|
|
40918
|
+
content:
|
|
40919
|
+
application/problem+json:
|
|
40920
|
+
examples:
|
|
40921
|
+
RESOURCE_NOT_FOUND:
|
|
40922
|
+
summary: RESOURCE_NOT_FOUND
|
|
40923
|
+
value:
|
|
40924
|
+
code: RESOURCE_NOT_FOUND
|
|
40925
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
40926
|
+
detail: See the operation contract.
|
|
40927
|
+
errors: []
|
|
40928
|
+
retryable: false
|
|
40929
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
40930
|
+
schemaVersion: 2.0.0
|
|
40931
|
+
status: 404
|
|
40932
|
+
title: RESOURCE_NOT_FOUND
|
|
40933
|
+
type: urn:gala:problem:resource-not-found
|
|
40934
|
+
schema:
|
|
40935
|
+
$ref: "#/components/schemas/Problem"
|
|
40936
|
+
description: RESOURCE_NOT_FOUND
|
|
40937
|
+
headers:
|
|
40938
|
+
Cache-Control:
|
|
40939
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
40940
|
+
X-Correlation-Id:
|
|
40941
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
40942
|
+
x-gala-problem-codes:
|
|
40943
|
+
- RESOURCE_NOT_FOUND
|
|
40944
|
+
"422":
|
|
40945
|
+
content:
|
|
40946
|
+
application/problem+json:
|
|
40947
|
+
examples:
|
|
40948
|
+
VALIDATION_FAILED:
|
|
40949
|
+
summary: VALIDATION_FAILED
|
|
40950
|
+
value:
|
|
40951
|
+
code: VALIDATION_FAILED
|
|
40952
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
40953
|
+
detail: The page could not be reached, is not an HTML page or is too large. See the operation contract.
|
|
40954
|
+
errors:
|
|
40955
|
+
- code: VALIDATION_FAILED
|
|
40956
|
+
pointer: /url
|
|
40957
|
+
retryable: false
|
|
40958
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
40959
|
+
schemaVersion: 2.0.0
|
|
40960
|
+
status: 422
|
|
40961
|
+
title: VALIDATION_FAILED
|
|
40962
|
+
type: urn:gala:problem:validation-failed
|
|
40963
|
+
schema:
|
|
40964
|
+
$ref: "#/components/schemas/Problem"
|
|
40965
|
+
description: VALIDATION_FAILED
|
|
40966
|
+
headers:
|
|
40967
|
+
Cache-Control:
|
|
40968
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
40969
|
+
X-Correlation-Id:
|
|
40970
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
40971
|
+
x-gala-problem-codes:
|
|
40972
|
+
- VALIDATION_FAILED
|
|
40973
|
+
"429":
|
|
40974
|
+
content:
|
|
40975
|
+
application/problem+json:
|
|
40976
|
+
examples:
|
|
40977
|
+
RATE_LIMITED:
|
|
40978
|
+
summary: RATE_LIMITED
|
|
40979
|
+
value:
|
|
40980
|
+
code: RATE_LIMITED
|
|
40981
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
40982
|
+
detail: See the operation contract.
|
|
40983
|
+
errors: []
|
|
40984
|
+
retryable: true
|
|
40985
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
40986
|
+
schemaVersion: 2.0.0
|
|
40987
|
+
status: 429
|
|
40988
|
+
title: RATE_LIMITED
|
|
40989
|
+
type: urn:gala:problem:rate-limited
|
|
40990
|
+
schema:
|
|
40991
|
+
$ref: "#/components/schemas/Problem"
|
|
40992
|
+
description: RATE_LIMITED
|
|
40993
|
+
headers:
|
|
40994
|
+
Cache-Control:
|
|
40995
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
40996
|
+
Retry-After:
|
|
40997
|
+
$ref: "#/components/headers/RetryAfter"
|
|
40998
|
+
X-Correlation-Id:
|
|
40999
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
41000
|
+
x-gala-problem-codes:
|
|
41001
|
+
- RATE_LIMITED
|
|
41002
|
+
security:
|
|
41003
|
+
- browserSession: []
|
|
41004
|
+
summary: preview one linked page
|
|
41005
|
+
tags:
|
|
41006
|
+
- organizations
|
|
41007
|
+
x-gala-activation-gate: MVP
|
|
41008
|
+
x-gala-activation-guards:
|
|
41009
|
+
- NONE
|
|
41010
|
+
x-gala-capability-key: publication.source.write
|
|
41011
|
+
x-gala-concurrency: authorization-and-publication-epochs
|
|
41012
|
+
x-gala-conditional-capabilities: []
|
|
41013
|
+
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
41014
|
+
x-gala-nullability: required-and-nullable-are-explicit
|
|
41015
|
+
x-gala-purpose: preview one linked page
|
|
41016
|
+
x-gala-reachable-problems:
|
|
41017
|
+
- AUTHENTICATION_REQUIRED
|
|
41018
|
+
- AUTHORIZATION_DENIED
|
|
41019
|
+
- RATE_LIMITED
|
|
41020
|
+
- REQUEST_FIELD_UNKNOWN
|
|
41021
|
+
- RESOURCE_NOT_FOUND
|
|
41022
|
+
- VALIDATION_FAILED
|
|
41023
|
+
x-gala-replay-identity: natural-idempotent-state
|
|
41024
|
+
x-gala-state-guards:
|
|
41025
|
+
- NONE
|
|
41026
|
+
x-gala-success-category: query
|
|
41027
|
+
x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
|
|
40061
41028
|
/v2/organizations/{organizationId}/publications/{publicationId}/content/preview-context:
|
|
40062
41029
|
get:
|
|
40063
41030
|
description: |
|
|
@@ -48728,6 +49695,11 @@ paths:
|
|
|
48728
49695
|
removed and settles the appeal `DENIED` (`note` optional, at most 1000
|
|
48729
49696
|
characters). `DENY_APPEAL` without a pending appeal is `409
|
|
48730
49697
|
INVALID_DECISION`. Only a person decides an appeal.
|
|
49698
|
+
SCHEMA-3.32.0: `PIN` pins a visible root comment to the top of its
|
|
49699
|
+
article's comments (at most one pinned comment per article; pinning
|
|
49700
|
+
another moves the pin) and `UNPIN` releases it; on any other comment, or
|
|
49701
|
+
when the comment is already in the asked state, they are `409
|
|
49702
|
+
INVALID_DECISION`.
|
|
48731
49703
|
operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdModerationCommentsByCommentIdDecide
|
|
48732
49704
|
parameters:
|
|
48733
49705
|
- $ref: "#/components/parameters/XCorrelationId"
|
|
@@ -50061,6 +51033,164 @@ paths:
|
|
|
50061
51033
|
- NONE
|
|
50062
51034
|
x-gala-success-category: protocol
|
|
50063
51035
|
x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
|
|
51036
|
+
/v2/organizations/{organizationId}/publications/{publicationId}/newsletter-subscribers:import:
|
|
51037
|
+
post:
|
|
51038
|
+
description: |
|
|
51039
|
+
Needs `publication.audience.manage`. The body is the addresses the owner's file held, already parsed by the App (at most 5000 per call), with `attestation: true`: the owner states that every address agreed to hear from them. Each address that is new becomes a `pending` subscriber and is sent the same confirmation email a reader who signs up receives; nobody is subscribed until they confirm. An address that is already known (`pending`, `confirmed`, `unsubscribed` or `suppressed`) is skipped and counted in `skippedKnown`, so repeating a call is harmless. `invalid` counts entries that are not usable addresses and `overCapacity` those left out because the organization's subscriber allowance was reached. A call without `attestation: true` is `400 VALIDATION_FAILED`.
|
|
51040
|
+
operationId: postOrganizationsByOrganizationIdPublicationsByPublicationIdNewsletterSubscribersImport
|
|
51041
|
+
parameters:
|
|
51042
|
+
- $ref: "#/components/parameters/XCorrelationId"
|
|
51043
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
51044
|
+
in: path
|
|
51045
|
+
name: organizationId
|
|
51046
|
+
required: true
|
|
51047
|
+
schema:
|
|
51048
|
+
format: uuid
|
|
51049
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
51050
|
+
type: string
|
|
51051
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
51052
|
+
in: path
|
|
51053
|
+
name: publicationId
|
|
51054
|
+
required: true
|
|
51055
|
+
schema:
|
|
51056
|
+
format: uuid
|
|
51057
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
51058
|
+
type: string
|
|
51059
|
+
- $ref: "#/components/parameters/XCsrfToken"
|
|
51060
|
+
requestBody:
|
|
51061
|
+
content:
|
|
51062
|
+
application/json:
|
|
51063
|
+
examples:
|
|
51064
|
+
nominal:
|
|
51065
|
+
summary: Nominal valid request
|
|
51066
|
+
value:
|
|
51067
|
+
addresses:
|
|
51068
|
+
- reader@example.com
|
|
51069
|
+
attestation: true
|
|
51070
|
+
schema:
|
|
51071
|
+
$ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdNewsletterSubscribersImportRequest"
|
|
51072
|
+
required: true
|
|
51073
|
+
responses:
|
|
51074
|
+
"202":
|
|
51075
|
+
content:
|
|
51076
|
+
application/json:
|
|
51077
|
+
examples:
|
|
51078
|
+
nominal:
|
|
51079
|
+
summary: Nominal successful response
|
|
51080
|
+
value:
|
|
51081
|
+
invalid: 0
|
|
51082
|
+
overCapacity: 0
|
|
51083
|
+
queued: 1
|
|
51084
|
+
skippedKnown: 0
|
|
51085
|
+
schema:
|
|
51086
|
+
$ref: "#/components/schemas/PostOrganizationsByOrganizationIdPublicationsByPublicationIdNewsletterSubscribersImportResponse"
|
|
51087
|
+
description: import a site's newsletter subscribers succeeded
|
|
51088
|
+
headers:
|
|
51089
|
+
Cache-Control:
|
|
51090
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
51091
|
+
X-Correlation-Id:
|
|
51092
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
51093
|
+
"400":
|
|
51094
|
+
content:
|
|
51095
|
+
application/problem+json:
|
|
51096
|
+
examples:
|
|
51097
|
+
REQUEST_FIELD_UNKNOWN:
|
|
51098
|
+
summary: REQUEST_FIELD_UNKNOWN
|
|
51099
|
+
value:
|
|
51100
|
+
code: REQUEST_FIELD_UNKNOWN
|
|
51101
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
51102
|
+
detail: See the operation contract.
|
|
51103
|
+
errors: []
|
|
51104
|
+
retryable: false
|
|
51105
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
51106
|
+
schemaVersion: 2.0.0
|
|
51107
|
+
status: 400
|
|
51108
|
+
title: REQUEST_FIELD_UNKNOWN
|
|
51109
|
+
type: urn:gala:problem:request-field-unknown
|
|
51110
|
+
VALIDATION_FAILED:
|
|
51111
|
+
summary: VALIDATION_FAILED
|
|
51112
|
+
value:
|
|
51113
|
+
code: VALIDATION_FAILED
|
|
51114
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
51115
|
+
detail: See the operation contract.
|
|
51116
|
+
errors: []
|
|
51117
|
+
retryable: false
|
|
51118
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
51119
|
+
schemaVersion: 2.0.0
|
|
51120
|
+
status: 400
|
|
51121
|
+
title: VALIDATION_FAILED
|
|
51122
|
+
type: urn:gala:problem:validation-failed
|
|
51123
|
+
schema:
|
|
51124
|
+
$ref: "#/components/schemas/Problem"
|
|
51125
|
+
description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
|
|
51126
|
+
headers:
|
|
51127
|
+
Cache-Control:
|
|
51128
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
51129
|
+
X-Correlation-Id:
|
|
51130
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
51131
|
+
x-gala-problem-codes:
|
|
51132
|
+
- REQUEST_FIELD_UNKNOWN
|
|
51133
|
+
- VALIDATION_FAILED
|
|
51134
|
+
"401":
|
|
51135
|
+
content:
|
|
51136
|
+
application/problem+json:
|
|
51137
|
+
examples:
|
|
51138
|
+
AUTHENTICATION_REQUIRED:
|
|
51139
|
+
summary: AUTHENTICATION_REQUIRED
|
|
51140
|
+
value:
|
|
51141
|
+
code: AUTHENTICATION_REQUIRED
|
|
51142
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
51143
|
+
detail: See the operation contract.
|
|
51144
|
+
errors: []
|
|
51145
|
+
retryable: false
|
|
51146
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
51147
|
+
schemaVersion: 2.0.0
|
|
51148
|
+
status: 401
|
|
51149
|
+
title: AUTHENTICATION_REQUIRED
|
|
51150
|
+
type: urn:gala:problem:authentication-required
|
|
51151
|
+
schema:
|
|
51152
|
+
$ref: "#/components/schemas/Problem"
|
|
51153
|
+
description: AUTHENTICATION_REQUIRED
|
|
51154
|
+
headers:
|
|
51155
|
+
Cache-Control:
|
|
51156
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
51157
|
+
X-Correlation-Id:
|
|
51158
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
51159
|
+
x-gala-problem-codes:
|
|
51160
|
+
- AUTHENTICATION_REQUIRED
|
|
51161
|
+
"403":
|
|
51162
|
+
$ref: "#/components/responses/AuthorizationDenied"
|
|
51163
|
+
"404":
|
|
51164
|
+
$ref: "#/components/responses/ResourceNotFound"
|
|
51165
|
+
"413":
|
|
51166
|
+
$ref: "#/components/responses/RequestTooLarge"
|
|
51167
|
+
"415":
|
|
51168
|
+
$ref: "#/components/responses/UnsupportedMediaType"
|
|
51169
|
+
security:
|
|
51170
|
+
- browserSession: []
|
|
51171
|
+
summary: import a site's newsletter subscribers
|
|
51172
|
+
tags:
|
|
51173
|
+
- audience
|
|
51174
|
+
x-gala-activation-gate: MVP
|
|
51175
|
+
x-gala-activation-guards:
|
|
51176
|
+
- NONE
|
|
51177
|
+
x-gala-capability-key: publication.audience.manage
|
|
51178
|
+
x-gala-concurrency: authorization-and-publication-epochs
|
|
51179
|
+
x-gala-conditional-capabilities: []
|
|
51180
|
+
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
51181
|
+
x-gala-nullability: required-and-nullable-are-explicit
|
|
51182
|
+
x-gala-purpose: import a site's newsletter subscribers
|
|
51183
|
+
x-gala-reachable-problems:
|
|
51184
|
+
- AUTHENTICATION_REQUIRED
|
|
51185
|
+
- AUTHORIZATION_DENIED
|
|
51186
|
+
- REQUEST_FIELD_UNKNOWN
|
|
51187
|
+
- RESOURCE_NOT_FOUND
|
|
51188
|
+
- VALIDATION_FAILED
|
|
51189
|
+
x-gala-replay-identity: natural-idempotent-state
|
|
51190
|
+
x-gala-state-guards:
|
|
51191
|
+
- NONE
|
|
51192
|
+
x-gala-success-category: async
|
|
51193
|
+
x-gala-tenant-scope: ORGANIZATION_AND_PUBLICATION_PATH
|
|
50064
51194
|
/v2/organizations/{organizationId}/publications/{publicationId}/overview:
|
|
50065
51195
|
get:
|
|
50066
51196
|
description: |
|
|
@@ -66400,10 +67530,550 @@ paths:
|
|
|
66400
67530
|
content:
|
|
66401
67531
|
application/problem+json:
|
|
66402
67532
|
examples:
|
|
66403
|
-
NOT_COMMENT_AUTHOR:
|
|
66404
|
-
summary: NOT_COMMENT_AUTHOR
|
|
67533
|
+
NOT_COMMENT_AUTHOR:
|
|
67534
|
+
summary: NOT_COMMENT_AUTHOR
|
|
67535
|
+
value:
|
|
67536
|
+
code: NOT_COMMENT_AUTHOR
|
|
67537
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
67538
|
+
detail: See the operation contract.
|
|
67539
|
+
errors: []
|
|
67540
|
+
retryable: false
|
|
67541
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
67542
|
+
schemaVersion: 2.0.0
|
|
67543
|
+
status: 403
|
|
67544
|
+
title: NOT_COMMENT_AUTHOR
|
|
67545
|
+
type: urn:gala:problem:not-comment-author
|
|
67546
|
+
READER_TOKEN_SCOPE:
|
|
67547
|
+
summary: READER_TOKEN_SCOPE
|
|
67548
|
+
value:
|
|
67549
|
+
code: READER_TOKEN_SCOPE
|
|
67550
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
67551
|
+
detail: See the operation contract.
|
|
67552
|
+
errors: []
|
|
67553
|
+
retryable: false
|
|
67554
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
67555
|
+
schemaVersion: 2.0.0
|
|
67556
|
+
status: 403
|
|
67557
|
+
title: READER_TOKEN_SCOPE
|
|
67558
|
+
type: urn:gala:problem:reader-token-scope
|
|
67559
|
+
schema:
|
|
67560
|
+
$ref: "#/components/schemas/Problem"
|
|
67561
|
+
description: NOT_COMMENT_AUTHOR, READER_TOKEN_SCOPE
|
|
67562
|
+
headers:
|
|
67563
|
+
Cache-Control:
|
|
67564
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
67565
|
+
X-Correlation-Id:
|
|
67566
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
67567
|
+
x-gala-problem-codes:
|
|
67568
|
+
- NOT_COMMENT_AUTHOR
|
|
67569
|
+
- READER_TOKEN_SCOPE
|
|
67570
|
+
"404":
|
|
67571
|
+
content:
|
|
67572
|
+
application/problem+json:
|
|
67573
|
+
examples:
|
|
67574
|
+
COMMENT_NOT_FOUND:
|
|
67575
|
+
summary: COMMENT_NOT_FOUND
|
|
67576
|
+
value:
|
|
67577
|
+
code: COMMENT_NOT_FOUND
|
|
67578
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
67579
|
+
detail: See the operation contract.
|
|
67580
|
+
errors: []
|
|
67581
|
+
retryable: false
|
|
67582
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
67583
|
+
schemaVersion: 2.0.0
|
|
67584
|
+
status: 404
|
|
67585
|
+
title: COMMENT_NOT_FOUND
|
|
67586
|
+
type: urn:gala:problem:comment-not-found
|
|
67587
|
+
schema:
|
|
67588
|
+
$ref: "#/components/schemas/Problem"
|
|
67589
|
+
description: COMMENT_NOT_FOUND
|
|
67590
|
+
headers:
|
|
67591
|
+
Cache-Control:
|
|
67592
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
67593
|
+
X-Correlation-Id:
|
|
67594
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
67595
|
+
x-gala-problem-codes:
|
|
67596
|
+
- COMMENT_NOT_FOUND
|
|
67597
|
+
security:
|
|
67598
|
+
- readerBearer: []
|
|
67599
|
+
summary: delete the reader's own comment
|
|
67600
|
+
tags:
|
|
67601
|
+
- public-interactions
|
|
67602
|
+
x-gala-activation-gate: MVP
|
|
67603
|
+
x-gala-activation-guards:
|
|
67604
|
+
- NONE
|
|
67605
|
+
x-gala-capability-key: null
|
|
67606
|
+
x-gala-concurrency: none
|
|
67607
|
+
x-gala-conditional-capabilities: []
|
|
67608
|
+
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
67609
|
+
x-gala-nullability: required-and-nullable-are-explicit
|
|
67610
|
+
x-gala-purpose: delete the reader's own comment
|
|
67611
|
+
x-gala-reachable-problems:
|
|
67612
|
+
- COMMENT_NOT_FOUND
|
|
67613
|
+
- NOT_COMMENT_AUTHOR
|
|
67614
|
+
- READER_AUTHENTICATION_REQUIRED
|
|
67615
|
+
- READER_TOKEN_SCOPE
|
|
67616
|
+
- VALIDATION_FAILED
|
|
67617
|
+
x-gala-replay-identity: natural-idempotent-state
|
|
67618
|
+
x-gala-state-guards:
|
|
67619
|
+
- NONE
|
|
67620
|
+
x-gala-success-category: delete
|
|
67621
|
+
x-gala-tenant-scope: NONE
|
|
67622
|
+
/v2/public/comments/{commentId}/appeals:
|
|
67623
|
+
post:
|
|
67624
|
+
description: |
|
|
67625
|
+
The comment's author asks the moderators to look again at a removal or
|
|
67626
|
+
hold. One appeal per removal: `409 APPEAL_EXISTS` when one was already
|
|
67627
|
+
made against the current removal; `409 APPEAL_NOT_ALLOWED` when the
|
|
67628
|
+
comment is not removed or held, or the reader is not its author. At most
|
|
67629
|
+
5 appeals a day per reader (`429 RATE_LIMITED`). A human decides; the
|
|
67630
|
+
answer shows under the comment.
|
|
67631
|
+
operationId: postPublicCommentsByCommentIdAppeals
|
|
67632
|
+
parameters:
|
|
67633
|
+
- $ref: "#/components/parameters/XCorrelationId"
|
|
67634
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
67635
|
+
in: path
|
|
67636
|
+
name: commentId
|
|
67637
|
+
required: true
|
|
67638
|
+
schema:
|
|
67639
|
+
format: uuid
|
|
67640
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
67641
|
+
type: string
|
|
67642
|
+
requestBody:
|
|
67643
|
+
content:
|
|
67644
|
+
application/json:
|
|
67645
|
+
examples:
|
|
67646
|
+
nominal:
|
|
67647
|
+
summary: Nominal valid request
|
|
67648
|
+
value:
|
|
67649
|
+
note: The link was to my own project page, not spam.
|
|
67650
|
+
schema:
|
|
67651
|
+
$ref: "#/components/schemas/PostPublicCommentsByCommentIdAppealsRequest"
|
|
67652
|
+
required: true
|
|
67653
|
+
responses:
|
|
67654
|
+
"202":
|
|
67655
|
+
content:
|
|
67656
|
+
application/json:
|
|
67657
|
+
examples:
|
|
67658
|
+
nominal:
|
|
67659
|
+
summary: Nominal successful response
|
|
67660
|
+
value:
|
|
67661
|
+
status: RECEIVED
|
|
67662
|
+
schema:
|
|
67663
|
+
$ref: "#/components/schemas/PostPublicCommentsByCommentIdAppealsResponse"
|
|
67664
|
+
description: appeal the removal of my comment succeeded
|
|
67665
|
+
headers:
|
|
67666
|
+
Cache-Control:
|
|
67667
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
67668
|
+
X-Correlation-Id:
|
|
67669
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
67670
|
+
"400":
|
|
67671
|
+
content:
|
|
67672
|
+
application/problem+json:
|
|
67673
|
+
examples:
|
|
67674
|
+
REQUEST_FIELD_UNKNOWN:
|
|
67675
|
+
summary: REQUEST_FIELD_UNKNOWN
|
|
67676
|
+
value:
|
|
67677
|
+
code: REQUEST_FIELD_UNKNOWN
|
|
67678
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
67679
|
+
detail: See the operation contract.
|
|
67680
|
+
errors: []
|
|
67681
|
+
retryable: false
|
|
67682
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
67683
|
+
schemaVersion: 2.0.0
|
|
67684
|
+
status: 400
|
|
67685
|
+
title: REQUEST_FIELD_UNKNOWN
|
|
67686
|
+
type: urn:gala:problem:request-field-unknown
|
|
67687
|
+
VALIDATION_FAILED:
|
|
67688
|
+
summary: VALIDATION_FAILED
|
|
67689
|
+
value:
|
|
67690
|
+
code: VALIDATION_FAILED
|
|
67691
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
67692
|
+
detail: See the operation contract.
|
|
67693
|
+
errors: []
|
|
67694
|
+
retryable: false
|
|
67695
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
67696
|
+
schemaVersion: 2.0.0
|
|
67697
|
+
status: 400
|
|
67698
|
+
title: VALIDATION_FAILED
|
|
67699
|
+
type: urn:gala:problem:validation-failed
|
|
67700
|
+
schema:
|
|
67701
|
+
$ref: "#/components/schemas/Problem"
|
|
67702
|
+
description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
|
|
67703
|
+
headers:
|
|
67704
|
+
Cache-Control:
|
|
67705
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
67706
|
+
X-Correlation-Id:
|
|
67707
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
67708
|
+
x-gala-problem-codes:
|
|
67709
|
+
- REQUEST_FIELD_UNKNOWN
|
|
67710
|
+
- VALIDATION_FAILED
|
|
67711
|
+
"401":
|
|
67712
|
+
content:
|
|
67713
|
+
application/problem+json:
|
|
67714
|
+
examples:
|
|
67715
|
+
READER_AUTHENTICATION_REQUIRED:
|
|
67716
|
+
summary: READER_AUTHENTICATION_REQUIRED
|
|
67717
|
+
value:
|
|
67718
|
+
code: READER_AUTHENTICATION_REQUIRED
|
|
67719
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
67720
|
+
detail: See the operation contract.
|
|
67721
|
+
errors: []
|
|
67722
|
+
retryable: false
|
|
67723
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
67724
|
+
schemaVersion: 2.0.0
|
|
67725
|
+
status: 401
|
|
67726
|
+
title: READER_AUTHENTICATION_REQUIRED
|
|
67727
|
+
type: urn:gala:problem:reader-authentication-required
|
|
67728
|
+
schema:
|
|
67729
|
+
$ref: "#/components/schemas/Problem"
|
|
67730
|
+
description: READER_AUTHENTICATION_REQUIRED
|
|
67731
|
+
headers:
|
|
67732
|
+
Cache-Control:
|
|
67733
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
67734
|
+
X-Correlation-Id:
|
|
67735
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
67736
|
+
x-gala-problem-codes:
|
|
67737
|
+
- READER_AUTHENTICATION_REQUIRED
|
|
67738
|
+
"403":
|
|
67739
|
+
content:
|
|
67740
|
+
application/problem+json:
|
|
67741
|
+
examples:
|
|
67742
|
+
READER_TOKEN_SCOPE:
|
|
67743
|
+
summary: READER_TOKEN_SCOPE
|
|
67744
|
+
value:
|
|
67745
|
+
code: READER_TOKEN_SCOPE
|
|
67746
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
67747
|
+
detail: See the operation contract.
|
|
67748
|
+
errors: []
|
|
67749
|
+
retryable: false
|
|
67750
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
67751
|
+
schemaVersion: 2.0.0
|
|
67752
|
+
status: 403
|
|
67753
|
+
title: READER_TOKEN_SCOPE
|
|
67754
|
+
type: urn:gala:problem:reader-token-scope
|
|
67755
|
+
schema:
|
|
67756
|
+
$ref: "#/components/schemas/Problem"
|
|
67757
|
+
description: READER_TOKEN_SCOPE
|
|
67758
|
+
headers:
|
|
67759
|
+
Cache-Control:
|
|
67760
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
67761
|
+
X-Correlation-Id:
|
|
67762
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
67763
|
+
x-gala-problem-codes:
|
|
67764
|
+
- READER_TOKEN_SCOPE
|
|
67765
|
+
"404":
|
|
67766
|
+
content:
|
|
67767
|
+
application/problem+json:
|
|
67768
|
+
examples:
|
|
67769
|
+
COMMENT_NOT_FOUND:
|
|
67770
|
+
summary: COMMENT_NOT_FOUND
|
|
67771
|
+
value:
|
|
67772
|
+
code: COMMENT_NOT_FOUND
|
|
67773
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
67774
|
+
detail: See the operation contract.
|
|
67775
|
+
errors: []
|
|
67776
|
+
retryable: false
|
|
67777
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
67778
|
+
schemaVersion: 2.0.0
|
|
67779
|
+
status: 404
|
|
67780
|
+
title: COMMENT_NOT_FOUND
|
|
67781
|
+
type: urn:gala:problem:comment-not-found
|
|
67782
|
+
schema:
|
|
67783
|
+
$ref: "#/components/schemas/Problem"
|
|
67784
|
+
description: COMMENT_NOT_FOUND
|
|
67785
|
+
headers:
|
|
67786
|
+
Cache-Control:
|
|
67787
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
67788
|
+
X-Correlation-Id:
|
|
67789
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
67790
|
+
x-gala-problem-codes:
|
|
67791
|
+
- COMMENT_NOT_FOUND
|
|
67792
|
+
"409":
|
|
67793
|
+
content:
|
|
67794
|
+
application/problem+json:
|
|
67795
|
+
examples:
|
|
67796
|
+
APPEAL_EXISTS:
|
|
67797
|
+
summary: APPEAL_EXISTS
|
|
67798
|
+
value:
|
|
67799
|
+
code: APPEAL_EXISTS
|
|
67800
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
67801
|
+
detail: See the operation contract.
|
|
67802
|
+
errors: []
|
|
67803
|
+
retryable: false
|
|
67804
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
67805
|
+
schemaVersion: 2.0.0
|
|
67806
|
+
status: 409
|
|
67807
|
+
title: APPEAL_EXISTS
|
|
67808
|
+
type: urn:gala:problem:appeal-exists
|
|
67809
|
+
APPEAL_NOT_ALLOWED:
|
|
67810
|
+
summary: APPEAL_NOT_ALLOWED
|
|
67811
|
+
value:
|
|
67812
|
+
code: APPEAL_NOT_ALLOWED
|
|
67813
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
67814
|
+
detail: See the operation contract.
|
|
67815
|
+
errors: []
|
|
67816
|
+
retryable: false
|
|
67817
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
67818
|
+
schemaVersion: 2.0.0
|
|
67819
|
+
status: 409
|
|
67820
|
+
title: APPEAL_NOT_ALLOWED
|
|
67821
|
+
type: urn:gala:problem:appeal-not-allowed
|
|
67822
|
+
schema:
|
|
67823
|
+
$ref: "#/components/schemas/Problem"
|
|
67824
|
+
description: APPEAL_EXISTS, APPEAL_NOT_ALLOWED
|
|
67825
|
+
headers:
|
|
67826
|
+
Cache-Control:
|
|
67827
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
67828
|
+
X-Correlation-Id:
|
|
67829
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
67830
|
+
x-gala-problem-codes:
|
|
67831
|
+
- APPEAL_EXISTS
|
|
67832
|
+
- APPEAL_NOT_ALLOWED
|
|
67833
|
+
"429":
|
|
67834
|
+
content:
|
|
67835
|
+
application/problem+json:
|
|
67836
|
+
examples:
|
|
67837
|
+
RATE_LIMITED:
|
|
67838
|
+
summary: RATE_LIMITED
|
|
67839
|
+
value:
|
|
67840
|
+
code: RATE_LIMITED
|
|
67841
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
67842
|
+
detail: See the operation contract.
|
|
67843
|
+
errors: []
|
|
67844
|
+
retryable: true
|
|
67845
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
67846
|
+
schemaVersion: 2.0.0
|
|
67847
|
+
status: 429
|
|
67848
|
+
title: RATE_LIMITED
|
|
67849
|
+
type: urn:gala:problem:rate-limited
|
|
67850
|
+
schema:
|
|
67851
|
+
$ref: "#/components/schemas/Problem"
|
|
67852
|
+
description: RATE_LIMITED
|
|
67853
|
+
headers:
|
|
67854
|
+
Cache-Control:
|
|
67855
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
67856
|
+
Retry-After:
|
|
67857
|
+
$ref: "#/components/headers/RetryAfter"
|
|
67858
|
+
X-Correlation-Id:
|
|
67859
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
67860
|
+
x-gala-problem-codes:
|
|
67861
|
+
- RATE_LIMITED
|
|
67862
|
+
security:
|
|
67863
|
+
- readerBearer: []
|
|
67864
|
+
summary: appeal the removal of my comment
|
|
67865
|
+
tags:
|
|
67866
|
+
- public-interactions
|
|
67867
|
+
x-gala-activation-gate: MVP
|
|
67868
|
+
x-gala-activation-guards:
|
|
67869
|
+
- NONE
|
|
67870
|
+
x-gala-capability-key: null
|
|
67871
|
+
x-gala-concurrency: none
|
|
67872
|
+
x-gala-conditional-capabilities: []
|
|
67873
|
+
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
67874
|
+
x-gala-nullability: required-and-nullable-are-explicit
|
|
67875
|
+
x-gala-purpose: appeal the removal of my comment
|
|
67876
|
+
x-gala-reachable-problems:
|
|
67877
|
+
- APPEAL_EXISTS
|
|
67878
|
+
- APPEAL_NOT_ALLOWED
|
|
67879
|
+
- COMMENT_NOT_FOUND
|
|
67880
|
+
- RATE_LIMITED
|
|
67881
|
+
- READER_AUTHENTICATION_REQUIRED
|
|
67882
|
+
- READER_TOKEN_SCOPE
|
|
67883
|
+
- REQUEST_FIELD_UNKNOWN
|
|
67884
|
+
- VALIDATION_FAILED
|
|
67885
|
+
x-gala-replay-identity: one-appeal-per-removal
|
|
67886
|
+
x-gala-state-guards:
|
|
67887
|
+
- NONE
|
|
67888
|
+
x-gala-success-category: async
|
|
67889
|
+
x-gala-tenant-scope: NONE
|
|
67890
|
+
/v2/public/comments/{commentId}/like:
|
|
67891
|
+
delete:
|
|
67892
|
+
description: "SCHEMA-3.32.0: the signed-in reader withdraws their like. Always allowed, even when likes have since been turned off, and harmless when there is no like (`204` both times)."
|
|
67893
|
+
operationId: deletePublicCommentsByCommentIdLike
|
|
67894
|
+
parameters:
|
|
67895
|
+
- $ref: "#/components/parameters/XCorrelationId"
|
|
67896
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
67897
|
+
in: path
|
|
67898
|
+
name: commentId
|
|
67899
|
+
required: true
|
|
67900
|
+
schema:
|
|
67901
|
+
format: uuid
|
|
67902
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
67903
|
+
type: string
|
|
67904
|
+
responses:
|
|
67905
|
+
"204":
|
|
67906
|
+
description: withdraw the signed-in reader's like on one comment succeeded
|
|
67907
|
+
headers:
|
|
67908
|
+
Cache-Control:
|
|
67909
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
67910
|
+
X-Correlation-Id:
|
|
67911
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
67912
|
+
"400":
|
|
67913
|
+
$ref: "#/components/responses/ValidationFailed"
|
|
67914
|
+
"401":
|
|
67915
|
+
content:
|
|
67916
|
+
application/problem+json:
|
|
67917
|
+
examples:
|
|
67918
|
+
READER_AUTHENTICATION_REQUIRED:
|
|
67919
|
+
summary: READER_AUTHENTICATION_REQUIRED
|
|
67920
|
+
value:
|
|
67921
|
+
code: READER_AUTHENTICATION_REQUIRED
|
|
67922
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
67923
|
+
detail: See the operation contract.
|
|
67924
|
+
errors: []
|
|
67925
|
+
retryable: false
|
|
67926
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
67927
|
+
schemaVersion: 2.0.0
|
|
67928
|
+
status: 401
|
|
67929
|
+
title: READER_AUTHENTICATION_REQUIRED
|
|
67930
|
+
type: urn:gala:problem:reader-authentication-required
|
|
67931
|
+
schema:
|
|
67932
|
+
$ref: "#/components/schemas/Problem"
|
|
67933
|
+
description: READER_AUTHENTICATION_REQUIRED
|
|
67934
|
+
headers:
|
|
67935
|
+
Cache-Control:
|
|
67936
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
67937
|
+
X-Correlation-Id:
|
|
67938
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
67939
|
+
x-gala-problem-codes:
|
|
67940
|
+
- READER_AUTHENTICATION_REQUIRED
|
|
67941
|
+
"403":
|
|
67942
|
+
content:
|
|
67943
|
+
application/problem+json:
|
|
67944
|
+
examples:
|
|
67945
|
+
READER_TOKEN_SCOPE:
|
|
67946
|
+
summary: READER_TOKEN_SCOPE
|
|
67947
|
+
value:
|
|
67948
|
+
code: READER_TOKEN_SCOPE
|
|
67949
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
67950
|
+
detail: See the operation contract.
|
|
67951
|
+
errors: []
|
|
67952
|
+
retryable: false
|
|
67953
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
67954
|
+
schemaVersion: 2.0.0
|
|
67955
|
+
status: 403
|
|
67956
|
+
title: READER_TOKEN_SCOPE
|
|
67957
|
+
type: urn:gala:problem:reader-token-scope
|
|
67958
|
+
schema:
|
|
67959
|
+
$ref: "#/components/schemas/Problem"
|
|
67960
|
+
description: READER_TOKEN_SCOPE
|
|
67961
|
+
headers:
|
|
67962
|
+
Cache-Control:
|
|
67963
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
67964
|
+
X-Correlation-Id:
|
|
67965
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
67966
|
+
x-gala-problem-codes:
|
|
67967
|
+
- READER_TOKEN_SCOPE
|
|
67968
|
+
"404":
|
|
67969
|
+
content:
|
|
67970
|
+
application/problem+json:
|
|
67971
|
+
examples:
|
|
67972
|
+
COMMENT_NOT_FOUND:
|
|
67973
|
+
summary: COMMENT_NOT_FOUND
|
|
67974
|
+
value:
|
|
67975
|
+
code: COMMENT_NOT_FOUND
|
|
67976
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
67977
|
+
detail: See the operation contract.
|
|
67978
|
+
errors: []
|
|
67979
|
+
retryable: false
|
|
67980
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
67981
|
+
schemaVersion: 2.0.0
|
|
67982
|
+
status: 404
|
|
67983
|
+
title: COMMENT_NOT_FOUND
|
|
67984
|
+
type: urn:gala:problem:comment-not-found
|
|
67985
|
+
schema:
|
|
67986
|
+
$ref: "#/components/schemas/Problem"
|
|
67987
|
+
description: COMMENT_NOT_FOUND
|
|
67988
|
+
headers:
|
|
67989
|
+
Cache-Control:
|
|
67990
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
67991
|
+
X-Correlation-Id:
|
|
67992
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
67993
|
+
x-gala-problem-codes:
|
|
67994
|
+
- COMMENT_NOT_FOUND
|
|
67995
|
+
security:
|
|
67996
|
+
- readerBearer: []
|
|
67997
|
+
summary: withdraw the signed-in reader's like on one comment
|
|
67998
|
+
tags:
|
|
67999
|
+
- public-interactions
|
|
68000
|
+
x-gala-activation-gate: MVP
|
|
68001
|
+
x-gala-activation-guards:
|
|
68002
|
+
- NONE
|
|
68003
|
+
x-gala-capability-key: null
|
|
68004
|
+
x-gala-concurrency: none
|
|
68005
|
+
x-gala-conditional-capabilities: []
|
|
68006
|
+
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
68007
|
+
x-gala-nullability: required-and-nullable-are-explicit
|
|
68008
|
+
x-gala-purpose: withdraw the signed-in reader's like on one comment
|
|
68009
|
+
x-gala-reachable-problems:
|
|
68010
|
+
- COMMENT_NOT_FOUND
|
|
68011
|
+
- READER_AUTHENTICATION_REQUIRED
|
|
68012
|
+
- READER_TOKEN_SCOPE
|
|
68013
|
+
- VALIDATION_FAILED
|
|
68014
|
+
x-gala-replay-identity: natural-idempotent-state
|
|
68015
|
+
x-gala-state-guards:
|
|
68016
|
+
- NONE
|
|
68017
|
+
x-gala-success-category: delete
|
|
68018
|
+
x-gala-tenant-scope: NONE
|
|
68019
|
+
put:
|
|
68020
|
+
description: "SCHEMA-3.32.0: the signed-in reader likes the comment. Liking again is harmless (`204` both times). Needs `comments.likes` on in the site's interactions configuration, otherwise `404 INTERACTIONS_DISABLED`. A removed, held or deleted comment cannot be liked (`404 COMMENT_NOT_FOUND`)."
|
|
68021
|
+
operationId: putPublicCommentsByCommentIdLike
|
|
68022
|
+
parameters:
|
|
68023
|
+
- $ref: "#/components/parameters/XCorrelationId"
|
|
68024
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
68025
|
+
in: path
|
|
68026
|
+
name: commentId
|
|
68027
|
+
required: true
|
|
68028
|
+
schema:
|
|
68029
|
+
format: uuid
|
|
68030
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
68031
|
+
type: string
|
|
68032
|
+
responses:
|
|
68033
|
+
"204":
|
|
68034
|
+
description: like one comment as the signed-in reader succeeded
|
|
68035
|
+
headers:
|
|
68036
|
+
Cache-Control:
|
|
68037
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
68038
|
+
X-Correlation-Id:
|
|
68039
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
68040
|
+
"400":
|
|
68041
|
+
$ref: "#/components/responses/ValidationFailed"
|
|
68042
|
+
"401":
|
|
68043
|
+
content:
|
|
68044
|
+
application/problem+json:
|
|
68045
|
+
examples:
|
|
68046
|
+
READER_AUTHENTICATION_REQUIRED:
|
|
68047
|
+
summary: READER_AUTHENTICATION_REQUIRED
|
|
68048
|
+
value:
|
|
68049
|
+
code: READER_AUTHENTICATION_REQUIRED
|
|
68050
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
68051
|
+
detail: See the operation contract.
|
|
68052
|
+
errors: []
|
|
68053
|
+
retryable: false
|
|
68054
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
68055
|
+
schemaVersion: 2.0.0
|
|
68056
|
+
status: 401
|
|
68057
|
+
title: READER_AUTHENTICATION_REQUIRED
|
|
68058
|
+
type: urn:gala:problem:reader-authentication-required
|
|
68059
|
+
schema:
|
|
68060
|
+
$ref: "#/components/schemas/Problem"
|
|
68061
|
+
description: READER_AUTHENTICATION_REQUIRED
|
|
68062
|
+
headers:
|
|
68063
|
+
Cache-Control:
|
|
68064
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
68065
|
+
X-Correlation-Id:
|
|
68066
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
68067
|
+
x-gala-problem-codes:
|
|
68068
|
+
- READER_AUTHENTICATION_REQUIRED
|
|
68069
|
+
"403":
|
|
68070
|
+
content:
|
|
68071
|
+
application/problem+json:
|
|
68072
|
+
examples:
|
|
68073
|
+
READER_RESTRICTED:
|
|
68074
|
+
summary: READER_RESTRICTED
|
|
66405
68075
|
value:
|
|
66406
|
-
code:
|
|
68076
|
+
code: READER_RESTRICTED
|
|
66407
68077
|
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
66408
68078
|
detail: See the operation contract.
|
|
66409
68079
|
errors: []
|
|
@@ -66411,8 +68081,8 @@ paths:
|
|
|
66411
68081
|
schemaId: urn:gala:schema:problem:2.0.0
|
|
66412
68082
|
schemaVersion: 2.0.0
|
|
66413
68083
|
status: 403
|
|
66414
|
-
title:
|
|
66415
|
-
type: urn:gala:problem:
|
|
68084
|
+
title: READER_RESTRICTED
|
|
68085
|
+
type: urn:gala:problem:reader-restricted
|
|
66416
68086
|
READER_TOKEN_SCOPE:
|
|
66417
68087
|
summary: READER_TOKEN_SCOPE
|
|
66418
68088
|
value:
|
|
@@ -66428,14 +68098,14 @@ paths:
|
|
|
66428
68098
|
type: urn:gala:problem:reader-token-scope
|
|
66429
68099
|
schema:
|
|
66430
68100
|
$ref: "#/components/schemas/Problem"
|
|
66431
|
-
description:
|
|
68101
|
+
description: READER_RESTRICTED, READER_TOKEN_SCOPE
|
|
66432
68102
|
headers:
|
|
66433
68103
|
Cache-Control:
|
|
66434
68104
|
$ref: "#/components/headers/CacheControlNoStore"
|
|
66435
68105
|
X-Correlation-Id:
|
|
66436
68106
|
$ref: "#/components/headers/XCorrelationId"
|
|
66437
68107
|
x-gala-problem-codes:
|
|
66438
|
-
-
|
|
68108
|
+
- READER_RESTRICTED
|
|
66439
68109
|
- READER_TOKEN_SCOPE
|
|
66440
68110
|
"404":
|
|
66441
68111
|
content:
|
|
@@ -66454,192 +68124,10 @@ paths:
|
|
|
66454
68124
|
status: 404
|
|
66455
68125
|
title: COMMENT_NOT_FOUND
|
|
66456
68126
|
type: urn:gala:problem:comment-not-found
|
|
66457
|
-
|
|
66458
|
-
|
|
66459
|
-
description: COMMENT_NOT_FOUND
|
|
66460
|
-
headers:
|
|
66461
|
-
Cache-Control:
|
|
66462
|
-
$ref: "#/components/headers/CacheControlNoStore"
|
|
66463
|
-
X-Correlation-Id:
|
|
66464
|
-
$ref: "#/components/headers/XCorrelationId"
|
|
66465
|
-
x-gala-problem-codes:
|
|
66466
|
-
- COMMENT_NOT_FOUND
|
|
66467
|
-
security:
|
|
66468
|
-
- readerBearer: []
|
|
66469
|
-
summary: delete the reader's own comment
|
|
66470
|
-
tags:
|
|
66471
|
-
- public-interactions
|
|
66472
|
-
x-gala-activation-gate: MVP
|
|
66473
|
-
x-gala-activation-guards:
|
|
66474
|
-
- NONE
|
|
66475
|
-
x-gala-capability-key: null
|
|
66476
|
-
x-gala-concurrency: none
|
|
66477
|
-
x-gala-conditional-capabilities: []
|
|
66478
|
-
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
66479
|
-
x-gala-nullability: required-and-nullable-are-explicit
|
|
66480
|
-
x-gala-purpose: delete the reader's own comment
|
|
66481
|
-
x-gala-reachable-problems:
|
|
66482
|
-
- COMMENT_NOT_FOUND
|
|
66483
|
-
- NOT_COMMENT_AUTHOR
|
|
66484
|
-
- READER_AUTHENTICATION_REQUIRED
|
|
66485
|
-
- READER_TOKEN_SCOPE
|
|
66486
|
-
- VALIDATION_FAILED
|
|
66487
|
-
x-gala-replay-identity: natural-idempotent-state
|
|
66488
|
-
x-gala-state-guards:
|
|
66489
|
-
- NONE
|
|
66490
|
-
x-gala-success-category: delete
|
|
66491
|
-
x-gala-tenant-scope: NONE
|
|
66492
|
-
/v2/public/comments/{commentId}/appeals:
|
|
66493
|
-
post:
|
|
66494
|
-
description: |
|
|
66495
|
-
The comment's author asks the moderators to look again at a removal or
|
|
66496
|
-
hold. One appeal per removal: `409 APPEAL_EXISTS` when one was already
|
|
66497
|
-
made against the current removal; `409 APPEAL_NOT_ALLOWED` when the
|
|
66498
|
-
comment is not removed or held, or the reader is not its author. At most
|
|
66499
|
-
5 appeals a day per reader (`429 RATE_LIMITED`). A human decides; the
|
|
66500
|
-
answer shows under the comment.
|
|
66501
|
-
operationId: postPublicCommentsByCommentIdAppeals
|
|
66502
|
-
parameters:
|
|
66503
|
-
- $ref: "#/components/parameters/XCorrelationId"
|
|
66504
|
-
- example: 018f0000-0000-7000-8000-000000000001
|
|
66505
|
-
in: path
|
|
66506
|
-
name: commentId
|
|
66507
|
-
required: true
|
|
66508
|
-
schema:
|
|
66509
|
-
format: uuid
|
|
66510
|
-
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
66511
|
-
type: string
|
|
66512
|
-
requestBody:
|
|
66513
|
-
content:
|
|
66514
|
-
application/json:
|
|
66515
|
-
examples:
|
|
66516
|
-
nominal:
|
|
66517
|
-
summary: Nominal valid request
|
|
66518
|
-
value:
|
|
66519
|
-
note: The link was to my own project page, not spam.
|
|
66520
|
-
schema:
|
|
66521
|
-
$ref: "#/components/schemas/PostPublicCommentsByCommentIdAppealsRequest"
|
|
66522
|
-
required: true
|
|
66523
|
-
responses:
|
|
66524
|
-
"202":
|
|
66525
|
-
content:
|
|
66526
|
-
application/json:
|
|
66527
|
-
examples:
|
|
66528
|
-
nominal:
|
|
66529
|
-
summary: Nominal successful response
|
|
66530
|
-
value:
|
|
66531
|
-
status: RECEIVED
|
|
66532
|
-
schema:
|
|
66533
|
-
$ref: "#/components/schemas/PostPublicCommentsByCommentIdAppealsResponse"
|
|
66534
|
-
description: appeal the removal of my comment succeeded
|
|
66535
|
-
headers:
|
|
66536
|
-
Cache-Control:
|
|
66537
|
-
$ref: "#/components/headers/CacheControlNoStore"
|
|
66538
|
-
X-Correlation-Id:
|
|
66539
|
-
$ref: "#/components/headers/XCorrelationId"
|
|
66540
|
-
"400":
|
|
66541
|
-
content:
|
|
66542
|
-
application/problem+json:
|
|
66543
|
-
examples:
|
|
66544
|
-
REQUEST_FIELD_UNKNOWN:
|
|
66545
|
-
summary: REQUEST_FIELD_UNKNOWN
|
|
66546
|
-
value:
|
|
66547
|
-
code: REQUEST_FIELD_UNKNOWN
|
|
66548
|
-
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
66549
|
-
detail: See the operation contract.
|
|
66550
|
-
errors: []
|
|
66551
|
-
retryable: false
|
|
66552
|
-
schemaId: urn:gala:schema:problem:2.0.0
|
|
66553
|
-
schemaVersion: 2.0.0
|
|
66554
|
-
status: 400
|
|
66555
|
-
title: REQUEST_FIELD_UNKNOWN
|
|
66556
|
-
type: urn:gala:problem:request-field-unknown
|
|
66557
|
-
VALIDATION_FAILED:
|
|
66558
|
-
summary: VALIDATION_FAILED
|
|
66559
|
-
value:
|
|
66560
|
-
code: VALIDATION_FAILED
|
|
66561
|
-
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
66562
|
-
detail: See the operation contract.
|
|
66563
|
-
errors: []
|
|
66564
|
-
retryable: false
|
|
66565
|
-
schemaId: urn:gala:schema:problem:2.0.0
|
|
66566
|
-
schemaVersion: 2.0.0
|
|
66567
|
-
status: 400
|
|
66568
|
-
title: VALIDATION_FAILED
|
|
66569
|
-
type: urn:gala:problem:validation-failed
|
|
66570
|
-
schema:
|
|
66571
|
-
$ref: "#/components/schemas/Problem"
|
|
66572
|
-
description: REQUEST_FIELD_UNKNOWN, VALIDATION_FAILED
|
|
66573
|
-
headers:
|
|
66574
|
-
Cache-Control:
|
|
66575
|
-
$ref: "#/components/headers/CacheControlNoStore"
|
|
66576
|
-
X-Correlation-Id:
|
|
66577
|
-
$ref: "#/components/headers/XCorrelationId"
|
|
66578
|
-
x-gala-problem-codes:
|
|
66579
|
-
- REQUEST_FIELD_UNKNOWN
|
|
66580
|
-
- VALIDATION_FAILED
|
|
66581
|
-
"401":
|
|
66582
|
-
content:
|
|
66583
|
-
application/problem+json:
|
|
66584
|
-
examples:
|
|
66585
|
-
READER_AUTHENTICATION_REQUIRED:
|
|
66586
|
-
summary: READER_AUTHENTICATION_REQUIRED
|
|
66587
|
-
value:
|
|
66588
|
-
code: READER_AUTHENTICATION_REQUIRED
|
|
66589
|
-
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
66590
|
-
detail: See the operation contract.
|
|
66591
|
-
errors: []
|
|
66592
|
-
retryable: false
|
|
66593
|
-
schemaId: urn:gala:schema:problem:2.0.0
|
|
66594
|
-
schemaVersion: 2.0.0
|
|
66595
|
-
status: 401
|
|
66596
|
-
title: READER_AUTHENTICATION_REQUIRED
|
|
66597
|
-
type: urn:gala:problem:reader-authentication-required
|
|
66598
|
-
schema:
|
|
66599
|
-
$ref: "#/components/schemas/Problem"
|
|
66600
|
-
description: READER_AUTHENTICATION_REQUIRED
|
|
66601
|
-
headers:
|
|
66602
|
-
Cache-Control:
|
|
66603
|
-
$ref: "#/components/headers/CacheControlNoStore"
|
|
66604
|
-
X-Correlation-Id:
|
|
66605
|
-
$ref: "#/components/headers/XCorrelationId"
|
|
66606
|
-
x-gala-problem-codes:
|
|
66607
|
-
- READER_AUTHENTICATION_REQUIRED
|
|
66608
|
-
"403":
|
|
66609
|
-
content:
|
|
66610
|
-
application/problem+json:
|
|
66611
|
-
examples:
|
|
66612
|
-
READER_TOKEN_SCOPE:
|
|
66613
|
-
summary: READER_TOKEN_SCOPE
|
|
66614
|
-
value:
|
|
66615
|
-
code: READER_TOKEN_SCOPE
|
|
66616
|
-
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
66617
|
-
detail: See the operation contract.
|
|
66618
|
-
errors: []
|
|
66619
|
-
retryable: false
|
|
66620
|
-
schemaId: urn:gala:schema:problem:2.0.0
|
|
66621
|
-
schemaVersion: 2.0.0
|
|
66622
|
-
status: 403
|
|
66623
|
-
title: READER_TOKEN_SCOPE
|
|
66624
|
-
type: urn:gala:problem:reader-token-scope
|
|
66625
|
-
schema:
|
|
66626
|
-
$ref: "#/components/schemas/Problem"
|
|
66627
|
-
description: READER_TOKEN_SCOPE
|
|
66628
|
-
headers:
|
|
66629
|
-
Cache-Control:
|
|
66630
|
-
$ref: "#/components/headers/CacheControlNoStore"
|
|
66631
|
-
X-Correlation-Id:
|
|
66632
|
-
$ref: "#/components/headers/XCorrelationId"
|
|
66633
|
-
x-gala-problem-codes:
|
|
66634
|
-
- READER_TOKEN_SCOPE
|
|
66635
|
-
"404":
|
|
66636
|
-
content:
|
|
66637
|
-
application/problem+json:
|
|
66638
|
-
examples:
|
|
66639
|
-
COMMENT_NOT_FOUND:
|
|
66640
|
-
summary: COMMENT_NOT_FOUND
|
|
68127
|
+
INTERACTIONS_DISABLED:
|
|
68128
|
+
summary: INTERACTIONS_DISABLED
|
|
66641
68129
|
value:
|
|
66642
|
-
code:
|
|
68130
|
+
code: INTERACTIONS_DISABLED
|
|
66643
68131
|
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
66644
68132
|
detail: See the operation contract.
|
|
66645
68133
|
errors: []
|
|
@@ -66647,11 +68135,11 @@ paths:
|
|
|
66647
68135
|
schemaId: urn:gala:schema:problem:2.0.0
|
|
66648
68136
|
schemaVersion: 2.0.0
|
|
66649
68137
|
status: 404
|
|
66650
|
-
title:
|
|
66651
|
-
type: urn:gala:problem:
|
|
68138
|
+
title: INTERACTIONS_DISABLED
|
|
68139
|
+
type: urn:gala:problem:interactions-disabled
|
|
66652
68140
|
schema:
|
|
66653
68141
|
$ref: "#/components/schemas/Problem"
|
|
66654
|
-
description: COMMENT_NOT_FOUND
|
|
68142
|
+
description: COMMENT_NOT_FOUND, INTERACTIONS_DISABLED
|
|
66655
68143
|
headers:
|
|
66656
68144
|
Cache-Control:
|
|
66657
68145
|
$ref: "#/components/headers/CacheControlNoStore"
|
|
@@ -66659,47 +68147,7 @@ paths:
|
|
|
66659
68147
|
$ref: "#/components/headers/XCorrelationId"
|
|
66660
68148
|
x-gala-problem-codes:
|
|
66661
68149
|
- COMMENT_NOT_FOUND
|
|
66662
|
-
|
|
66663
|
-
content:
|
|
66664
|
-
application/problem+json:
|
|
66665
|
-
examples:
|
|
66666
|
-
APPEAL_EXISTS:
|
|
66667
|
-
summary: APPEAL_EXISTS
|
|
66668
|
-
value:
|
|
66669
|
-
code: APPEAL_EXISTS
|
|
66670
|
-
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
66671
|
-
detail: See the operation contract.
|
|
66672
|
-
errors: []
|
|
66673
|
-
retryable: false
|
|
66674
|
-
schemaId: urn:gala:schema:problem:2.0.0
|
|
66675
|
-
schemaVersion: 2.0.0
|
|
66676
|
-
status: 409
|
|
66677
|
-
title: APPEAL_EXISTS
|
|
66678
|
-
type: urn:gala:problem:appeal-exists
|
|
66679
|
-
APPEAL_NOT_ALLOWED:
|
|
66680
|
-
summary: APPEAL_NOT_ALLOWED
|
|
66681
|
-
value:
|
|
66682
|
-
code: APPEAL_NOT_ALLOWED
|
|
66683
|
-
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
66684
|
-
detail: See the operation contract.
|
|
66685
|
-
errors: []
|
|
66686
|
-
retryable: false
|
|
66687
|
-
schemaId: urn:gala:schema:problem:2.0.0
|
|
66688
|
-
schemaVersion: 2.0.0
|
|
66689
|
-
status: 409
|
|
66690
|
-
title: APPEAL_NOT_ALLOWED
|
|
66691
|
-
type: urn:gala:problem:appeal-not-allowed
|
|
66692
|
-
schema:
|
|
66693
|
-
$ref: "#/components/schemas/Problem"
|
|
66694
|
-
description: APPEAL_EXISTS, APPEAL_NOT_ALLOWED
|
|
66695
|
-
headers:
|
|
66696
|
-
Cache-Control:
|
|
66697
|
-
$ref: "#/components/headers/CacheControlNoStore"
|
|
66698
|
-
X-Correlation-Id:
|
|
66699
|
-
$ref: "#/components/headers/XCorrelationId"
|
|
66700
|
-
x-gala-problem-codes:
|
|
66701
|
-
- APPEAL_EXISTS
|
|
66702
|
-
- APPEAL_NOT_ALLOWED
|
|
68150
|
+
- INTERACTIONS_DISABLED
|
|
66703
68151
|
"429":
|
|
66704
68152
|
content:
|
|
66705
68153
|
application/problem+json:
|
|
@@ -66731,7 +68179,7 @@ paths:
|
|
|
66731
68179
|
- RATE_LIMITED
|
|
66732
68180
|
security:
|
|
66733
68181
|
- readerBearer: []
|
|
66734
|
-
summary:
|
|
68182
|
+
summary: like one comment as the signed-in reader
|
|
66735
68183
|
tags:
|
|
66736
68184
|
- public-interactions
|
|
66737
68185
|
x-gala-activation-gate: MVP
|
|
@@ -66742,20 +68190,19 @@ paths:
|
|
|
66742
68190
|
x-gala-conditional-capabilities: []
|
|
66743
68191
|
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
66744
68192
|
x-gala-nullability: required-and-nullable-are-explicit
|
|
66745
|
-
x-gala-purpose:
|
|
68193
|
+
x-gala-purpose: like one comment as the signed-in reader
|
|
66746
68194
|
x-gala-reachable-problems:
|
|
66747
|
-
- APPEAL_EXISTS
|
|
66748
|
-
- APPEAL_NOT_ALLOWED
|
|
66749
68195
|
- COMMENT_NOT_FOUND
|
|
68196
|
+
- INTERACTIONS_DISABLED
|
|
66750
68197
|
- RATE_LIMITED
|
|
66751
68198
|
- READER_AUTHENTICATION_REQUIRED
|
|
68199
|
+
- READER_RESTRICTED
|
|
66752
68200
|
- READER_TOKEN_SCOPE
|
|
66753
|
-
- REQUEST_FIELD_UNKNOWN
|
|
66754
68201
|
- VALIDATION_FAILED
|
|
66755
|
-
x-gala-replay-identity:
|
|
68202
|
+
x-gala-replay-identity: natural-idempotent-state
|
|
66756
68203
|
x-gala-state-guards:
|
|
66757
68204
|
- NONE
|
|
66758
|
-
x-gala-success-category:
|
|
68205
|
+
x-gala-success-category: delete
|
|
66759
68206
|
x-gala-tenant-scope: NONE
|
|
66760
68207
|
/v2/public/comments/{commentId}/reports:
|
|
66761
68208
|
post:
|
|
@@ -68619,7 +70066,7 @@ paths:
|
|
|
68619
70066
|
x-gala-tenant-scope: NONE
|
|
68620
70067
|
/v2/public/publications/{publicationId}/contents/{contentId}/comments:
|
|
68621
70068
|
get:
|
|
68622
|
-
description: "Without `parentId`: 20 roots per page, newest first, each with its descendants inline oldest first (at most 50 per root; `moreReplies` is true beyond that). With `parentId`: the children of that comment, oldest first, 50 per page. Removed and deleted comments appear as tombstones only when they have visible descendants."
|
|
70069
|
+
description: "Without `parentId`: 20 roots per page, newest first, each with its descendants inline oldest first (at most 50 per root; `moreReplies` is true beyond that). With `parentId`: the children of that comment, oldest first, 50 per page. Removed and deleted comments appear as tombstones only when they have visible descendants. SCHEMA-3.32.0: `sort` orders the roots, `newest` (the default) or `oldest`; replies stay oldest first. On the first page of a `newest` or `oldest` list, the one pinned root comment, if any, comes first, whatever the sort. A `cursor` is valid only with the `sort` it was issued for."
|
|
68623
70070
|
operationId: getPublicPublicationsByPublicationIdContentsByContentIdComments
|
|
68624
70071
|
parameters:
|
|
68625
70072
|
- $ref: "#/components/parameters/XCorrelationId"
|
|
@@ -68648,6 +70095,16 @@ paths:
|
|
|
68648
70095
|
format: uuid
|
|
68649
70096
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
68650
70097
|
type: string
|
|
70098
|
+
- example: newest
|
|
70099
|
+
in: query
|
|
70100
|
+
name: sort
|
|
70101
|
+
required: false
|
|
70102
|
+
schema:
|
|
70103
|
+
default: newest
|
|
70104
|
+
enum:
|
|
70105
|
+
- newest
|
|
70106
|
+
- oldest
|
|
70107
|
+
type: string
|
|
68651
70108
|
responses:
|
|
68652
70109
|
"200":
|
|
68653
70110
|
content:
|
|
@@ -68669,8 +70126,11 @@ paths:
|
|
|
68669
70126
|
depth: 0
|
|
68670
70127
|
editedAt: null
|
|
68671
70128
|
id: 018f0000-0000-7000-8000-000000000001
|
|
70129
|
+
likeCount: 3
|
|
70130
|
+
likedByMe: false
|
|
68672
70131
|
moreReplies: false
|
|
68673
70132
|
parentId: null
|
|
70133
|
+
pinned: false
|
|
68674
70134
|
replies: []
|
|
68675
70135
|
state: VISIBLE
|
|
68676
70136
|
viewer:
|