@rathnasgala2/schemas 3.9.0 → 3.11.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 +255 -9
- package/docs/catalogs/app-components.json +71 -1
- package/docs/catalogs/app-routes.json +27 -4
- package/docs/catalogs/schema-inventory.json +5 -5
- package/examples/valid/appearance/rules.json +105 -1
- package/examples/valid/build-input/rules.json +105 -1
- package/examples/valid/theme-contract/rules.json +276 -2
- package/fixtures/boundary/appearance/rules.json +105 -12
- package/fixtures/boundary/build-input/rules.json +105 -12
- package/fixtures/boundary/theme-contract/rules.json +386 -2
- package/fixtures/invalid/appearance/REQUEST_FIELD_UNKNOWN/cases.json +33 -0
- package/fixtures/invalid/appearance/SCHEMA_OBJECT_TOO_LARGE/cases.json +0 -13
- package/fixtures/invalid/appearance/SCHEMA_PATTERN_INVALID/cases.json +68 -0
- package/fixtures/invalid/appearance/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +66 -0
- package/fixtures/invalid/appearance/SCHEMA_TYPE_INVALID/cases.json +99 -0
- package/fixtures/invalid/build-input/REQUEST_FIELD_UNKNOWN/cases.json +33 -0
- package/fixtures/invalid/build-input/SCHEMA_PATTERN_INVALID/cases.json +66 -0
- package/fixtures/invalid/build-input/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +66 -0
- package/fixtures/invalid/build-input/SCHEMA_TYPE_INVALID/cases.json +99 -0
- package/fixtures/invalid/theme-contract/REQUEST_FIELD_UNKNOWN/cases.json +33 -0
- package/fixtures/invalid/theme-contract/SCHEMA_ARRAY_TOO_LONG/cases.json +165 -0
- package/fixtures/invalid/theme-contract/SCHEMA_CONSTANT_INVALID/cases.json +11 -11
- package/fixtures/invalid/theme-contract/SCHEMA_ENUM_INVALID/cases.json +88 -0
- package/fixtures/invalid/theme-contract/SCHEMA_REQUIRED_FIELD_MISSING/cases.json +93 -0
- package/fixtures/invalid/theme-contract/SCHEMA_TYPE_INVALID/cases.json +51 -0
- package/fixtures/manifest.json +1955 -35
- package/fixtures/unknown-field/appearance/rules.json +54 -1
- package/fixtures/unknown-field/build-input/rules.json +54 -1
- package/fixtures/unknown-field/theme-contract/rules.json +70 -1
- package/generated/browser/validator-core.mjs +3 -3
- package/generated/typescript/contracts/appearance.d.ts +14 -1
- package/generated/typescript/contracts/build-input.d.ts +14 -1
- package/generated/typescript/contracts/theme-contract.d.ts +51 -0
- package/openapi/http-catalog.json +38 -2
- package/openapi/openapi.yaml +598 -3
- package/package.json +10 -1
- package/parity/palette/golden-vectors.json +883 -0
- package/parity/palette/stress-corpus.json +521 -0
- package/parity/palette/theme-default.fixture.json +698 -0
- package/sbom.cdx.json +23 -23
- package/schemas/appearance.schema.json +30 -3
- package/schemas/build-input.schema.json +30 -3
- package/schemas/theme-contract.schema.json +185 -1
- package/src/palette.js +919 -0
- package/types/palette.d.ts +305 -0
- package/fixtures/invalid/build-input/SCHEMA_OBJECT_TOO_LARGE/cases.json +0 -15
package/openapi/openapi.yaml
CHANGED
|
@@ -1048,6 +1048,27 @@ components:
|
|
|
1048
1048
|
- detail
|
|
1049
1049
|
- reversible
|
|
1050
1050
|
type: object
|
|
1051
|
+
ContactEmail:
|
|
1052
|
+
additionalProperties: false
|
|
1053
|
+
description: The verified GitHub primary email the person agreed to receive account and security notices at. The full address never leaves the server; only a masked form is shown.
|
|
1054
|
+
properties:
|
|
1055
|
+
maskedAddress:
|
|
1056
|
+
description: Masked form such as `a…d@example.com`, never the full address. Null or absent unless `state` is `ON_FILE`.
|
|
1057
|
+
maxLength: 320
|
|
1058
|
+
type:
|
|
1059
|
+
- string
|
|
1060
|
+
- "null"
|
|
1061
|
+
state:
|
|
1062
|
+
enum:
|
|
1063
|
+
- NONE
|
|
1064
|
+
- ON_FILE
|
|
1065
|
+
- WITHDRAWN
|
|
1066
|
+
type: string
|
|
1067
|
+
updatedAt:
|
|
1068
|
+
$ref: "#/components/schemas/PortableProblemRfc3339"
|
|
1069
|
+
required:
|
|
1070
|
+
- state
|
|
1071
|
+
type: object
|
|
1051
1072
|
ContentChangeAppearanceEntry:
|
|
1052
1073
|
additionalProperties: false
|
|
1053
1074
|
description: |
|
|
@@ -1056,7 +1077,10 @@ components:
|
|
|
1056
1077
|
values to change only `attribution`. `attribution` (SCHEMA-3.3.0) is
|
|
1057
1078
|
optional: when present the server writes it as
|
|
1058
1079
|
`gala/appearance.json`'s `attribution`; when absent the file's
|
|
1059
|
-
`attribution` is preserved unchanged.
|
|
1080
|
+
`attribution` is preserved unchanged. `tokens` (SCHEMA-3.10.0) is
|
|
1081
|
+
optional: the author's publication palette, written as
|
|
1082
|
+
`gala/appearance.json`'s `tokens`; when absent the file's `tokens`
|
|
1083
|
+
are preserved unchanged, and `{}` resets to the theme's own colours.
|
|
1060
1084
|
properties:
|
|
1061
1085
|
attribution:
|
|
1062
1086
|
$ref: "#/components/schemas/PortableAppearanceAttribution"
|
|
@@ -1064,6 +1088,8 @@ components:
|
|
|
1064
1088
|
$ref: "#/components/schemas/AppearanceColorMode"
|
|
1065
1089
|
themeId:
|
|
1066
1090
|
$ref: "#/components/schemas/AppearanceThemeId"
|
|
1091
|
+
tokens:
|
|
1092
|
+
$ref: "#/components/schemas/PortableAppearanceSemanticTokens"
|
|
1067
1093
|
required:
|
|
1068
1094
|
- themeId
|
|
1069
1095
|
- colorModeDefault
|
|
@@ -4217,6 +4243,8 @@ components:
|
|
|
4217
4243
|
uniqueItems: true
|
|
4218
4244
|
closure:
|
|
4219
4245
|
$ref: "#/components/schemas/SessionClosure"
|
|
4246
|
+
contactEmail:
|
|
4247
|
+
$ref: "#/components/schemas/ContactEmail"
|
|
4220
4248
|
credentialEpoch:
|
|
4221
4249
|
format: int64
|
|
4222
4250
|
minimum: 0
|
|
@@ -6896,6 +6924,9 @@ components:
|
|
|
6896
6924
|
PlatformUser:
|
|
6897
6925
|
additionalProperties: false
|
|
6898
6926
|
properties:
|
|
6927
|
+
contactEmailOnFile:
|
|
6928
|
+
description: Whether a contact email the person agreed to is on file. The address itself is never returned.
|
|
6929
|
+
type: boolean
|
|
6899
6930
|
createdAt:
|
|
6900
6931
|
$ref: "#/components/schemas/PortableProblemRfc3339"
|
|
6901
6932
|
displayName:
|
|
@@ -6938,6 +6969,7 @@ components:
|
|
|
6938
6969
|
- lastSignInAt
|
|
6939
6970
|
- publicationCount
|
|
6940
6971
|
- planTiers
|
|
6972
|
+
- contactEmailOnFile
|
|
6941
6973
|
type: object
|
|
6942
6974
|
PlatformWebhookEvent:
|
|
6943
6975
|
additionalProperties: false
|
|
@@ -7038,6 +7070,51 @@ components:
|
|
|
7038
7070
|
minLength: 3
|
|
7039
7071
|
pattern: ^(?:@[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?/[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?|[a-z0-9](?:[a-z0-9._-]*[a-z0-9])?)@(?:\S+|\S+ \S+)$
|
|
7040
7072
|
type: string
|
|
7073
|
+
PortableAppearanceSemanticTokens:
|
|
7074
|
+
additionalProperties: false
|
|
7075
|
+
description: "SCHEMA-3.10.0: the author's publication palette. Each role (accent, canvas, text) is optional; when present it carries both light and dark as opaque lowercase #rrggbb. An absent role uses the theme's default; `{}` selects the theme's default palette entirely."
|
|
7076
|
+
properties:
|
|
7077
|
+
accent:
|
|
7078
|
+
additionalProperties: false
|
|
7079
|
+
properties:
|
|
7080
|
+
dark:
|
|
7081
|
+
pattern: ^#[0-9a-f]{6}$
|
|
7082
|
+
type: string
|
|
7083
|
+
light:
|
|
7084
|
+
pattern: ^#[0-9a-f]{6}$
|
|
7085
|
+
type: string
|
|
7086
|
+
required:
|
|
7087
|
+
- light
|
|
7088
|
+
- dark
|
|
7089
|
+
type: object
|
|
7090
|
+
canvas:
|
|
7091
|
+
additionalProperties: false
|
|
7092
|
+
properties:
|
|
7093
|
+
dark:
|
|
7094
|
+
pattern: ^#[0-9a-f]{6}$
|
|
7095
|
+
type: string
|
|
7096
|
+
light:
|
|
7097
|
+
pattern: ^#[0-9a-f]{6}$
|
|
7098
|
+
type: string
|
|
7099
|
+
required:
|
|
7100
|
+
- light
|
|
7101
|
+
- dark
|
|
7102
|
+
type: object
|
|
7103
|
+
text:
|
|
7104
|
+
additionalProperties: false
|
|
7105
|
+
properties:
|
|
7106
|
+
dark:
|
|
7107
|
+
pattern: ^#[0-9a-f]{6}$
|
|
7108
|
+
type: string
|
|
7109
|
+
light:
|
|
7110
|
+
pattern: ^#[0-9a-f]{6}$
|
|
7111
|
+
type: string
|
|
7112
|
+
required:
|
|
7113
|
+
- light
|
|
7114
|
+
- dark
|
|
7115
|
+
type: object
|
|
7116
|
+
required: []
|
|
7117
|
+
type: object
|
|
7041
7118
|
PortableAuthorPlainText:
|
|
7042
7119
|
description: NFC Unicode text without disallowed C0/C1 controls or bidi override/isolate controls.
|
|
7043
7120
|
format: gala-plain-text
|
|
@@ -14819,6 +14896,46 @@ components:
|
|
|
14819
14896
|
required:
|
|
14820
14897
|
- client
|
|
14821
14898
|
type: object
|
|
14899
|
+
PostPlatformUsersByPersonIdContactRequest:
|
|
14900
|
+
additionalProperties: false
|
|
14901
|
+
properties:
|
|
14902
|
+
body:
|
|
14903
|
+
maxLength: 5000
|
|
14904
|
+
minLength: 1
|
|
14905
|
+
type: string
|
|
14906
|
+
category:
|
|
14907
|
+
enum:
|
|
14908
|
+
- ACCOUNT
|
|
14909
|
+
- SECURITY
|
|
14910
|
+
- SERVICE
|
|
14911
|
+
type: string
|
|
14912
|
+
reason:
|
|
14913
|
+
$ref: "#/components/schemas/PlatformOperatorReasonCode"
|
|
14914
|
+
subject:
|
|
14915
|
+
maxLength: 200
|
|
14916
|
+
minLength: 1
|
|
14917
|
+
type: string
|
|
14918
|
+
required:
|
|
14919
|
+
- category
|
|
14920
|
+
- subject
|
|
14921
|
+
- body
|
|
14922
|
+
- reason
|
|
14923
|
+
type: object
|
|
14924
|
+
PostPlatformUsersByPersonIdContactResponse:
|
|
14925
|
+
additionalProperties: false
|
|
14926
|
+
properties:
|
|
14927
|
+
messageId:
|
|
14928
|
+
format: uuid
|
|
14929
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
14930
|
+
type: string
|
|
14931
|
+
state:
|
|
14932
|
+
enum:
|
|
14933
|
+
- QUEUED
|
|
14934
|
+
type: string
|
|
14935
|
+
required:
|
|
14936
|
+
- messageId
|
|
14937
|
+
- state
|
|
14938
|
+
type: object
|
|
14822
14939
|
PostPublicCommentsByCommentIdAppealsRequest:
|
|
14823
14940
|
additionalProperties: false
|
|
14824
14941
|
properties:
|
|
@@ -15069,6 +15186,22 @@ components:
|
|
|
15069
15186
|
- state
|
|
15070
15187
|
- fenceAt
|
|
15071
15188
|
type: object
|
|
15189
|
+
PostSelfContactEmailGrantResponse:
|
|
15190
|
+
additionalProperties: false
|
|
15191
|
+
properties:
|
|
15192
|
+
contactEmail:
|
|
15193
|
+
$ref: "#/components/schemas/ContactEmail"
|
|
15194
|
+
required:
|
|
15195
|
+
- contactEmail
|
|
15196
|
+
type: object
|
|
15197
|
+
PostSelfContactEmailWithdrawResponse:
|
|
15198
|
+
additionalProperties: false
|
|
15199
|
+
properties:
|
|
15200
|
+
contactEmail:
|
|
15201
|
+
$ref: "#/components/schemas/ContactEmail"
|
|
15202
|
+
required:
|
|
15203
|
+
- contactEmail
|
|
15204
|
+
type: object
|
|
15072
15205
|
PostSelfExportsByExportIdDownloadResponse:
|
|
15073
15206
|
additionalProperties: false
|
|
15074
15207
|
properties:
|
|
@@ -15677,7 +15810,9 @@ components:
|
|
|
15677
15810
|
`themePackage` is not in the catalog. `themePackage` is the file's
|
|
15678
15811
|
`theme` value, a package with its version range. `attribution`
|
|
15679
15812
|
(SCHEMA-3.3.0, optional) is the file's footer attribution switch;
|
|
15680
|
-
absent means the file has none, which renders as shown.
|
|
15813
|
+
absent means the file has none, which renders as shown. `tokens`
|
|
15814
|
+
(SCHEMA-3.10.0, optional) is the file's publication palette as read;
|
|
15815
|
+
absent or `{}` means the theme's own colours.
|
|
15681
15816
|
properties:
|
|
15682
15817
|
attribution:
|
|
15683
15818
|
$ref: "#/components/schemas/PortableAppearanceAttribution"
|
|
@@ -15689,6 +15824,8 @@ components:
|
|
|
15689
15824
|
- type: "null"
|
|
15690
15825
|
themePackage:
|
|
15691
15826
|
$ref: "#/components/schemas/PortableAppearancePackageRange"
|
|
15827
|
+
tokens:
|
|
15828
|
+
$ref: "#/components/schemas/PortableAppearanceSemanticTokens"
|
|
15692
15829
|
required:
|
|
15693
15830
|
- themeId
|
|
15694
15831
|
- themePackage
|
|
@@ -48547,7 +48684,8 @@ paths:
|
|
|
48547
48684
|
value:
|
|
48548
48685
|
hasMore: false
|
|
48549
48686
|
items:
|
|
48550
|
-
-
|
|
48687
|
+
- contactEmailOnFile: true
|
|
48688
|
+
createdAt: "2026-09-01T12:00:00.000Z"
|
|
48551
48689
|
displayName: Ada Reader
|
|
48552
48690
|
lastSignInAt: "2026-10-10T11:30:00.000Z"
|
|
48553
48691
|
login: ada-reader
|
|
@@ -48596,6 +48734,140 @@ paths:
|
|
|
48596
48734
|
- NONE
|
|
48597
48735
|
x-gala-success-category: query
|
|
48598
48736
|
x-gala-tenant-scope: NONE
|
|
48737
|
+
/v2/platform/users/{personId}:contact:
|
|
48738
|
+
post:
|
|
48739
|
+
description: |
|
|
48740
|
+
Operators only, with recent authentication. Queues one message to the
|
|
48741
|
+
person's contact email, which they agreed to at sign-in. The address is
|
|
48742
|
+
never returned; the message carries the fixed Galascribe wrapper and
|
|
48743
|
+
the operator's text. `category` is `ACCOUNT`, `SECURITY` or `SERVICE`.
|
|
48744
|
+
`reason` is a non-sensitive operator reason code recorded in the audit
|
|
48745
|
+
event. `Idempotency-Key` is the queued-message identity. `202` means the
|
|
48746
|
+
message is queued, not delivered. `404 RESOURCE_NOT_FOUND` for an
|
|
48747
|
+
unknown person; `409 CONTACT_EMAIL_ABSENT` when no contact email is on
|
|
48748
|
+
file or it was withdrawn.
|
|
48749
|
+
operationId: postPlatformUsersByPersonIdContact
|
|
48750
|
+
parameters:
|
|
48751
|
+
- $ref: "#/components/parameters/XCorrelationId"
|
|
48752
|
+
- example: 018f0000-0000-7000-8000-000000000001
|
|
48753
|
+
in: path
|
|
48754
|
+
name: personId
|
|
48755
|
+
required: true
|
|
48756
|
+
schema:
|
|
48757
|
+
format: uuid
|
|
48758
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
48759
|
+
type: string
|
|
48760
|
+
- $ref: "#/components/parameters/IdempotencyKey"
|
|
48761
|
+
- $ref: "#/components/parameters/XCsrfToken"
|
|
48762
|
+
requestBody:
|
|
48763
|
+
content:
|
|
48764
|
+
application/json:
|
|
48765
|
+
examples:
|
|
48766
|
+
nominal:
|
|
48767
|
+
summary: Nominal valid request
|
|
48768
|
+
value:
|
|
48769
|
+
body: Your site repository needs attention before we can publish.
|
|
48770
|
+
category: SERVICE
|
|
48771
|
+
reason: OPERATOR_REQUESTED
|
|
48772
|
+
subject: Action needed on your Galascribe site
|
|
48773
|
+
schema:
|
|
48774
|
+
$ref: "#/components/schemas/PostPlatformUsersByPersonIdContactRequest"
|
|
48775
|
+
required: true
|
|
48776
|
+
responses:
|
|
48777
|
+
"202":
|
|
48778
|
+
content:
|
|
48779
|
+
application/json:
|
|
48780
|
+
examples:
|
|
48781
|
+
nominal:
|
|
48782
|
+
summary: Nominal successful response
|
|
48783
|
+
value:
|
|
48784
|
+
messageId: 018f0000-0000-7000-8000-000000000003
|
|
48785
|
+
state: QUEUED
|
|
48786
|
+
schema:
|
|
48787
|
+
$ref: "#/components/schemas/PostPlatformUsersByPersonIdContactResponse"
|
|
48788
|
+
description: contact platform user accepted
|
|
48789
|
+
headers:
|
|
48790
|
+
Cache-Control:
|
|
48791
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
48792
|
+
X-Correlation-Id:
|
|
48793
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
48794
|
+
"400":
|
|
48795
|
+
$ref: "#/components/responses/RequestInvalid"
|
|
48796
|
+
"401":
|
|
48797
|
+
$ref: "#/components/responses/PlatformAuthenticationRequired"
|
|
48798
|
+
"403":
|
|
48799
|
+
$ref: "#/components/responses/AuthorizationDenied"
|
|
48800
|
+
"404":
|
|
48801
|
+
$ref: "#/components/responses/ResourceNotFound"
|
|
48802
|
+
"409":
|
|
48803
|
+
content:
|
|
48804
|
+
application/problem+json:
|
|
48805
|
+
examples:
|
|
48806
|
+
COMMAND_REPLAY_CONFLICT:
|
|
48807
|
+
summary: COMMAND_REPLAY_CONFLICT
|
|
48808
|
+
value:
|
|
48809
|
+
code: COMMAND_REPLAY_CONFLICT
|
|
48810
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
48811
|
+
detail: See the operation contract.
|
|
48812
|
+
errors: []
|
|
48813
|
+
retryable: false
|
|
48814
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
48815
|
+
schemaVersion: 2.0.0
|
|
48816
|
+
status: 409
|
|
48817
|
+
title: COMMAND_REPLAY_CONFLICT
|
|
48818
|
+
type: urn:gala:problem:command-replay-conflict
|
|
48819
|
+
CONTACT_EMAIL_ABSENT:
|
|
48820
|
+
summary: CONTACT_EMAIL_ABSENT
|
|
48821
|
+
value:
|
|
48822
|
+
code: CONTACT_EMAIL_ABSENT
|
|
48823
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
48824
|
+
detail: See the operation contract.
|
|
48825
|
+
errors: []
|
|
48826
|
+
retryable: false
|
|
48827
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
48828
|
+
schemaVersion: 2.0.0
|
|
48829
|
+
status: 409
|
|
48830
|
+
title: CONTACT_EMAIL_ABSENT
|
|
48831
|
+
type: urn:gala:problem:contact-email-absent
|
|
48832
|
+
schema:
|
|
48833
|
+
$ref: "#/components/schemas/Problem"
|
|
48834
|
+
description: COMMAND_REPLAY_CONFLICT, CONTACT_EMAIL_ABSENT
|
|
48835
|
+
headers:
|
|
48836
|
+
Cache-Control:
|
|
48837
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
48838
|
+
X-Correlation-Id:
|
|
48839
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
48840
|
+
x-gala-problem-codes:
|
|
48841
|
+
- COMMAND_REPLAY_CONFLICT
|
|
48842
|
+
- CONTACT_EMAIL_ABSENT
|
|
48843
|
+
security:
|
|
48844
|
+
- browserSession: []
|
|
48845
|
+
summary: contact platform user
|
|
48846
|
+
tags:
|
|
48847
|
+
- platform
|
|
48848
|
+
x-gala-activation-gate: MVP
|
|
48849
|
+
x-gala-activation-guards:
|
|
48850
|
+
- NONE
|
|
48851
|
+
x-gala-capability-key: platform.users.contact
|
|
48852
|
+
x-gala-concurrency: none
|
|
48853
|
+
x-gala-conditional-capabilities: []
|
|
48854
|
+
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
48855
|
+
x-gala-nullability: required-and-nullable-are-explicit
|
|
48856
|
+
x-gala-purpose: contact platform user
|
|
48857
|
+
x-gala-reachable-problems:
|
|
48858
|
+
- AUTHENTICATION_REQUIRED
|
|
48859
|
+
- AUTHORIZATION_DENIED
|
|
48860
|
+
- COMMAND_REPLAY_CONFLICT
|
|
48861
|
+
- CONTACT_EMAIL_ABSENT
|
|
48862
|
+
- REAUTH_REQUIRED
|
|
48863
|
+
- REQUEST_FIELD_UNKNOWN
|
|
48864
|
+
- RESOURCE_NOT_FOUND
|
|
48865
|
+
- VALIDATION_FAILED
|
|
48866
|
+
x-gala-replay-identity: idempotency-key
|
|
48867
|
+
x-gala-state-guards:
|
|
48868
|
+
- NONE
|
|
48869
|
+
x-gala-success-category: async
|
|
48870
|
+
x-gala-tenant-scope: NONE
|
|
48599
48871
|
/v2/platform/webhook-events:
|
|
48600
48872
|
get:
|
|
48601
48873
|
description: |
|
|
@@ -51721,6 +51993,329 @@ paths:
|
|
|
51721
51993
|
- NONE
|
|
51722
51994
|
x-gala-success-category: protocol
|
|
51723
51995
|
x-gala-tenant-scope: NONE
|
|
51996
|
+
/v2/self/contact-email:grant:
|
|
51997
|
+
post:
|
|
51998
|
+
description: |
|
|
51999
|
+
Records the person's agreement to receive account and security notices
|
|
52000
|
+
at their verified GitHub primary email. The server reads the address from
|
|
52001
|
+
GitHub with the stored sign-in token, seals it, and answers with the
|
|
52002
|
+
masked form only; the full address never leaves the server. Needs
|
|
52003
|
+
recent authentication: a stale session gets `401 REAUTH_REQUIRED`.
|
|
52004
|
+
`409 CONTACT_EMAIL_UNAVAILABLE` when GitHub reports no verified primary
|
|
52005
|
+
email (`errors[].code` `NO_VERIFIED_PRIMARY_EMAIL`) or the sign-in did
|
|
52006
|
+
not grant the email scope (`SCOPE_NOT_GRANTED`), both at pointer
|
|
52007
|
+
`/contactEmail`; the person signs in again to grant the scope.
|
|
52008
|
+
operationId: postSelfContactEmailGrant
|
|
52009
|
+
parameters:
|
|
52010
|
+
- $ref: "#/components/parameters/XCorrelationId"
|
|
52011
|
+
- $ref: "#/components/parameters/IdempotencyKey"
|
|
52012
|
+
- $ref: "#/components/parameters/XCsrfToken"
|
|
52013
|
+
responses:
|
|
52014
|
+
"200":
|
|
52015
|
+
content:
|
|
52016
|
+
application/json:
|
|
52017
|
+
examples:
|
|
52018
|
+
nominal:
|
|
52019
|
+
summary: Nominal successful response
|
|
52020
|
+
value:
|
|
52021
|
+
contactEmail:
|
|
52022
|
+
maskedAddress: a…d@example.com
|
|
52023
|
+
state: ON_FILE
|
|
52024
|
+
updatedAt: "2026-10-13T12:00:00.000Z"
|
|
52025
|
+
schema:
|
|
52026
|
+
$ref: "#/components/schemas/PostSelfContactEmailGrantResponse"
|
|
52027
|
+
description: grant contact email succeeded
|
|
52028
|
+
headers:
|
|
52029
|
+
Cache-Control:
|
|
52030
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
52031
|
+
X-Correlation-Id:
|
|
52032
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
52033
|
+
"400":
|
|
52034
|
+
content:
|
|
52035
|
+
application/problem+json:
|
|
52036
|
+
examples:
|
|
52037
|
+
VALIDATION_FAILED:
|
|
52038
|
+
summary: VALIDATION_FAILED
|
|
52039
|
+
value:
|
|
52040
|
+
code: VALIDATION_FAILED
|
|
52041
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
52042
|
+
detail: See the operation contract.
|
|
52043
|
+
errors: []
|
|
52044
|
+
retryable: false
|
|
52045
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
52046
|
+
schemaVersion: 2.0.0
|
|
52047
|
+
status: 400
|
|
52048
|
+
title: VALIDATION_FAILED
|
|
52049
|
+
type: urn:gala:problem:validation-failed
|
|
52050
|
+
schema:
|
|
52051
|
+
$ref: "#/components/schemas/Problem"
|
|
52052
|
+
description: VALIDATION_FAILED
|
|
52053
|
+
headers:
|
|
52054
|
+
Cache-Control:
|
|
52055
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
52056
|
+
X-Correlation-Id:
|
|
52057
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
52058
|
+
x-gala-problem-codes:
|
|
52059
|
+
- VALIDATION_FAILED
|
|
52060
|
+
"401":
|
|
52061
|
+
content:
|
|
52062
|
+
application/problem+json:
|
|
52063
|
+
examples:
|
|
52064
|
+
AUTHENTICATION_REQUIRED:
|
|
52065
|
+
summary: AUTHENTICATION_REQUIRED
|
|
52066
|
+
value:
|
|
52067
|
+
code: AUTHENTICATION_REQUIRED
|
|
52068
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
52069
|
+
detail: See the operation contract.
|
|
52070
|
+
errors: []
|
|
52071
|
+
retryable: false
|
|
52072
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
52073
|
+
schemaVersion: 2.0.0
|
|
52074
|
+
status: 401
|
|
52075
|
+
title: AUTHENTICATION_REQUIRED
|
|
52076
|
+
type: urn:gala:problem:authentication-required
|
|
52077
|
+
REAUTH_REQUIRED:
|
|
52078
|
+
summary: REAUTH_REQUIRED
|
|
52079
|
+
value:
|
|
52080
|
+
code: REAUTH_REQUIRED
|
|
52081
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
52082
|
+
detail: See the operation contract.
|
|
52083
|
+
errors: []
|
|
52084
|
+
retryable: false
|
|
52085
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
52086
|
+
schemaVersion: 2.0.0
|
|
52087
|
+
status: 401
|
|
52088
|
+
title: REAUTH_REQUIRED
|
|
52089
|
+
type: urn:gala:problem:reauth-required
|
|
52090
|
+
schema:
|
|
52091
|
+
$ref: "#/components/schemas/Problem"
|
|
52092
|
+
description: AUTHENTICATION_REQUIRED, REAUTH_REQUIRED
|
|
52093
|
+
headers:
|
|
52094
|
+
Cache-Control:
|
|
52095
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
52096
|
+
X-Correlation-Id:
|
|
52097
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
52098
|
+
x-gala-problem-codes:
|
|
52099
|
+
- AUTHENTICATION_REQUIRED
|
|
52100
|
+
- REAUTH_REQUIRED
|
|
52101
|
+
"409":
|
|
52102
|
+
content:
|
|
52103
|
+
application/problem+json:
|
|
52104
|
+
examples:
|
|
52105
|
+
COMMAND_REPLAY_CONFLICT:
|
|
52106
|
+
summary: COMMAND_REPLAY_CONFLICT
|
|
52107
|
+
value:
|
|
52108
|
+
code: COMMAND_REPLAY_CONFLICT
|
|
52109
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
52110
|
+
detail: See the operation contract.
|
|
52111
|
+
errors: []
|
|
52112
|
+
retryable: false
|
|
52113
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
52114
|
+
schemaVersion: 2.0.0
|
|
52115
|
+
status: 409
|
|
52116
|
+
title: COMMAND_REPLAY_CONFLICT
|
|
52117
|
+
type: urn:gala:problem:command-replay-conflict
|
|
52118
|
+
CONTACT_EMAIL_UNAVAILABLE:
|
|
52119
|
+
summary: CONTACT_EMAIL_UNAVAILABLE
|
|
52120
|
+
value:
|
|
52121
|
+
code: CONTACT_EMAIL_UNAVAILABLE
|
|
52122
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
52123
|
+
detail: See the operation contract.
|
|
52124
|
+
errors:
|
|
52125
|
+
- code: NO_VERIFIED_PRIMARY_EMAIL
|
|
52126
|
+
pointer: /contactEmail
|
|
52127
|
+
retryable: false
|
|
52128
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
52129
|
+
schemaVersion: 2.0.0
|
|
52130
|
+
status: 409
|
|
52131
|
+
title: CONTACT_EMAIL_UNAVAILABLE
|
|
52132
|
+
type: urn:gala:problem:contact-email-unavailable
|
|
52133
|
+
schema:
|
|
52134
|
+
$ref: "#/components/schemas/Problem"
|
|
52135
|
+
description: COMMAND_REPLAY_CONFLICT, CONTACT_EMAIL_UNAVAILABLE
|
|
52136
|
+
headers:
|
|
52137
|
+
Cache-Control:
|
|
52138
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
52139
|
+
X-Correlation-Id:
|
|
52140
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
52141
|
+
x-gala-problem-codes:
|
|
52142
|
+
- COMMAND_REPLAY_CONFLICT
|
|
52143
|
+
- CONTACT_EMAIL_UNAVAILABLE
|
|
52144
|
+
security:
|
|
52145
|
+
- browserSession: []
|
|
52146
|
+
summary: grant contact email
|
|
52147
|
+
tags:
|
|
52148
|
+
- self
|
|
52149
|
+
x-gala-activation-gate: MVP
|
|
52150
|
+
x-gala-activation-guards:
|
|
52151
|
+
- NONE
|
|
52152
|
+
x-gala-capability-key: null
|
|
52153
|
+
x-gala-concurrency: principal-epoch
|
|
52154
|
+
x-gala-conditional-capabilities: []
|
|
52155
|
+
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
52156
|
+
x-gala-nullability: required-and-nullable-are-explicit
|
|
52157
|
+
x-gala-purpose: grant contact email
|
|
52158
|
+
x-gala-reachable-problems:
|
|
52159
|
+
- AUTHENTICATION_REQUIRED
|
|
52160
|
+
- COMMAND_REPLAY_CONFLICT
|
|
52161
|
+
- CONTACT_EMAIL_UNAVAILABLE
|
|
52162
|
+
- REAUTH_REQUIRED
|
|
52163
|
+
- VALIDATION_FAILED
|
|
52164
|
+
x-gala-replay-identity: idempotency-key
|
|
52165
|
+
x-gala-state-guards:
|
|
52166
|
+
- NONE
|
|
52167
|
+
x-gala-success-category: protocol
|
|
52168
|
+
x-gala-tenant-scope: NONE
|
|
52169
|
+
/v2/self/contact-email:withdraw:
|
|
52170
|
+
post:
|
|
52171
|
+
description: |
|
|
52172
|
+
Withdraws the agreement to receive notices by email. The sealed address
|
|
52173
|
+
is deleted, the state reads `WITHDRAWN`, and the person is not asked
|
|
52174
|
+
again. Safe to repeat. Needs recent authentication: a stale session
|
|
52175
|
+
gets `401 REAUTH_REQUIRED`.
|
|
52176
|
+
operationId: postSelfContactEmailWithdraw
|
|
52177
|
+
parameters:
|
|
52178
|
+
- $ref: "#/components/parameters/XCorrelationId"
|
|
52179
|
+
- $ref: "#/components/parameters/IdempotencyKey"
|
|
52180
|
+
- $ref: "#/components/parameters/XCsrfToken"
|
|
52181
|
+
responses:
|
|
52182
|
+
"200":
|
|
52183
|
+
content:
|
|
52184
|
+
application/json:
|
|
52185
|
+
examples:
|
|
52186
|
+
nominal:
|
|
52187
|
+
summary: Nominal successful response
|
|
52188
|
+
value:
|
|
52189
|
+
contactEmail:
|
|
52190
|
+
state: WITHDRAWN
|
|
52191
|
+
updatedAt: "2026-10-13T12:00:00.000Z"
|
|
52192
|
+
schema:
|
|
52193
|
+
$ref: "#/components/schemas/PostSelfContactEmailWithdrawResponse"
|
|
52194
|
+
description: withdraw contact email succeeded
|
|
52195
|
+
headers:
|
|
52196
|
+
Cache-Control:
|
|
52197
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
52198
|
+
X-Correlation-Id:
|
|
52199
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
52200
|
+
"400":
|
|
52201
|
+
content:
|
|
52202
|
+
application/problem+json:
|
|
52203
|
+
examples:
|
|
52204
|
+
VALIDATION_FAILED:
|
|
52205
|
+
summary: VALIDATION_FAILED
|
|
52206
|
+
value:
|
|
52207
|
+
code: VALIDATION_FAILED
|
|
52208
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
52209
|
+
detail: See the operation contract.
|
|
52210
|
+
errors: []
|
|
52211
|
+
retryable: false
|
|
52212
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
52213
|
+
schemaVersion: 2.0.0
|
|
52214
|
+
status: 400
|
|
52215
|
+
title: VALIDATION_FAILED
|
|
52216
|
+
type: urn:gala:problem:validation-failed
|
|
52217
|
+
schema:
|
|
52218
|
+
$ref: "#/components/schemas/Problem"
|
|
52219
|
+
description: VALIDATION_FAILED
|
|
52220
|
+
headers:
|
|
52221
|
+
Cache-Control:
|
|
52222
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
52223
|
+
X-Correlation-Id:
|
|
52224
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
52225
|
+
x-gala-problem-codes:
|
|
52226
|
+
- VALIDATION_FAILED
|
|
52227
|
+
"401":
|
|
52228
|
+
content:
|
|
52229
|
+
application/problem+json:
|
|
52230
|
+
examples:
|
|
52231
|
+
AUTHENTICATION_REQUIRED:
|
|
52232
|
+
summary: AUTHENTICATION_REQUIRED
|
|
52233
|
+
value:
|
|
52234
|
+
code: AUTHENTICATION_REQUIRED
|
|
52235
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
52236
|
+
detail: See the operation contract.
|
|
52237
|
+
errors: []
|
|
52238
|
+
retryable: false
|
|
52239
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
52240
|
+
schemaVersion: 2.0.0
|
|
52241
|
+
status: 401
|
|
52242
|
+
title: AUTHENTICATION_REQUIRED
|
|
52243
|
+
type: urn:gala:problem:authentication-required
|
|
52244
|
+
REAUTH_REQUIRED:
|
|
52245
|
+
summary: REAUTH_REQUIRED
|
|
52246
|
+
value:
|
|
52247
|
+
code: REAUTH_REQUIRED
|
|
52248
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
52249
|
+
detail: See the operation contract.
|
|
52250
|
+
errors: []
|
|
52251
|
+
retryable: false
|
|
52252
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
52253
|
+
schemaVersion: 2.0.0
|
|
52254
|
+
status: 401
|
|
52255
|
+
title: REAUTH_REQUIRED
|
|
52256
|
+
type: urn:gala:problem:reauth-required
|
|
52257
|
+
schema:
|
|
52258
|
+
$ref: "#/components/schemas/Problem"
|
|
52259
|
+
description: AUTHENTICATION_REQUIRED, REAUTH_REQUIRED
|
|
52260
|
+
headers:
|
|
52261
|
+
Cache-Control:
|
|
52262
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
52263
|
+
X-Correlation-Id:
|
|
52264
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
52265
|
+
x-gala-problem-codes:
|
|
52266
|
+
- AUTHENTICATION_REQUIRED
|
|
52267
|
+
- REAUTH_REQUIRED
|
|
52268
|
+
"409":
|
|
52269
|
+
content:
|
|
52270
|
+
application/problem+json:
|
|
52271
|
+
examples:
|
|
52272
|
+
COMMAND_REPLAY_CONFLICT:
|
|
52273
|
+
summary: COMMAND_REPLAY_CONFLICT
|
|
52274
|
+
value:
|
|
52275
|
+
code: COMMAND_REPLAY_CONFLICT
|
|
52276
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
52277
|
+
detail: See the operation contract.
|
|
52278
|
+
errors: []
|
|
52279
|
+
retryable: false
|
|
52280
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
52281
|
+
schemaVersion: 2.0.0
|
|
52282
|
+
status: 409
|
|
52283
|
+
title: COMMAND_REPLAY_CONFLICT
|
|
52284
|
+
type: urn:gala:problem:command-replay-conflict
|
|
52285
|
+
schema:
|
|
52286
|
+
$ref: "#/components/schemas/Problem"
|
|
52287
|
+
description: COMMAND_REPLAY_CONFLICT
|
|
52288
|
+
headers:
|
|
52289
|
+
Cache-Control:
|
|
52290
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
52291
|
+
X-Correlation-Id:
|
|
52292
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
52293
|
+
x-gala-problem-codes:
|
|
52294
|
+
- COMMAND_REPLAY_CONFLICT
|
|
52295
|
+
security:
|
|
52296
|
+
- browserSession: []
|
|
52297
|
+
summary: withdraw contact email
|
|
52298
|
+
tags:
|
|
52299
|
+
- self
|
|
52300
|
+
x-gala-activation-gate: MVP
|
|
52301
|
+
x-gala-activation-guards:
|
|
52302
|
+
- NONE
|
|
52303
|
+
x-gala-capability-key: null
|
|
52304
|
+
x-gala-concurrency: principal-epoch
|
|
52305
|
+
x-gala-conditional-capabilities: []
|
|
52306
|
+
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
52307
|
+
x-gala-nullability: required-and-nullable-are-explicit
|
|
52308
|
+
x-gala-purpose: withdraw contact email
|
|
52309
|
+
x-gala-reachable-problems:
|
|
52310
|
+
- AUTHENTICATION_REQUIRED
|
|
52311
|
+
- COMMAND_REPLAY_CONFLICT
|
|
52312
|
+
- REAUTH_REQUIRED
|
|
52313
|
+
- VALIDATION_FAILED
|
|
52314
|
+
x-gala-replay-identity: idempotency-key
|
|
52315
|
+
x-gala-state-guards:
|
|
52316
|
+
- NONE
|
|
52317
|
+
x-gala-success-category: protocol
|
|
52318
|
+
x-gala-tenant-scope: NONE
|
|
51724
52319
|
/v2/self/exports:
|
|
51725
52320
|
get:
|
|
51726
52321
|
description: |
|