@rathnasgala2/schemas 3.3.0 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/THIRD_PARTY_LICENSES.json +1 -1
- package/docs/catalogs/app-components.json +113 -1
- package/docs/catalogs/app-routes.json +39 -1
- package/docs/catalogs/schema-inventory.json +2 -2
- package/openapi/http-catalog.json +14 -2
- package/openapi/openapi.yaml +236 -2
- package/package.json +1 -1
- package/sbom.cdx.json +23 -23
|
@@ -5294,6 +5294,118 @@
|
|
|
5294
5294
|
"placeholders": {},
|
|
5295
5295
|
"sensitivity": "PUBLIC"
|
|
5296
5296
|
},
|
|
5297
|
+
{
|
|
5298
|
+
"contentKey": "t.invitations.by-token-id.screen.capability_unavailable.recovery",
|
|
5299
|
+
"defaultMessage": "This isn't available yet. Check back later, or contact support if you need it now.",
|
|
5300
|
+
"description": "Default recovery guidance for the t.invitations.by-token-id screen in the CAPABILITY_UNAVAILABLE state.",
|
|
5301
|
+
"placeholders": {},
|
|
5302
|
+
"sensitivity": "AUTHENTICATED"
|
|
5303
|
+
},
|
|
5304
|
+
{
|
|
5305
|
+
"contentKey": "t.invitations.by-token-id.screen.capability_unavailable.status",
|
|
5306
|
+
"defaultMessage": "This capability is not available.",
|
|
5307
|
+
"description": "Closed default status text for the t.invitations.by-token-id screen in the CAPABILITY_UNAVAILABLE state.",
|
|
5308
|
+
"placeholders": {},
|
|
5309
|
+
"sensitivity": "AUTHENTICATED"
|
|
5310
|
+
},
|
|
5311
|
+
{
|
|
5312
|
+
"contentKey": "t.invitations.by-token-id.screen.forbidden.recovery",
|
|
5313
|
+
"defaultMessage": "Contact your administrator if you believe this is a mistake.",
|
|
5314
|
+
"description": "Default recovery guidance for the t.invitations.by-token-id screen in the FORBIDDEN state.",
|
|
5315
|
+
"placeholders": {},
|
|
5316
|
+
"sensitivity": "AUTHENTICATED"
|
|
5317
|
+
},
|
|
5318
|
+
{
|
|
5319
|
+
"contentKey": "t.invitations.by-token-id.screen.forbidden.status",
|
|
5320
|
+
"defaultMessage": "You do not have access to this resource.",
|
|
5321
|
+
"description": "Closed default status text for the t.invitations.by-token-id screen in the FORBIDDEN state.",
|
|
5322
|
+
"placeholders": {},
|
|
5323
|
+
"sensitivity": "AUTHENTICATED"
|
|
5324
|
+
},
|
|
5325
|
+
{
|
|
5326
|
+
"contentKey": "t.invitations.by-token-id.screen.loading.recovery",
|
|
5327
|
+
"defaultMessage": "This usually takes a moment.",
|
|
5328
|
+
"description": "Default recovery guidance for the t.invitations.by-token-id screen in the LOADING state.",
|
|
5329
|
+
"placeholders": {},
|
|
5330
|
+
"sensitivity": "AUTHENTICATED"
|
|
5331
|
+
},
|
|
5332
|
+
{
|
|
5333
|
+
"contentKey": "t.invitations.by-token-id.screen.loading.status",
|
|
5334
|
+
"defaultMessage": "Loading…",
|
|
5335
|
+
"description": "Closed default status text for the t.invitations.by-token-id screen in the LOADING state.",
|
|
5336
|
+
"placeholders": {},
|
|
5337
|
+
"sensitivity": "AUTHENTICATED"
|
|
5338
|
+
},
|
|
5339
|
+
{
|
|
5340
|
+
"contentKey": "t.invitations.by-token-id.screen.not_found.recovery",
|
|
5341
|
+
"defaultMessage": "Check the link, or return to the previous page.",
|
|
5342
|
+
"description": "Default recovery guidance for the t.invitations.by-token-id screen in the NOT_FOUND state.",
|
|
5343
|
+
"placeholders": {},
|
|
5344
|
+
"sensitivity": "AUTHENTICATED"
|
|
5345
|
+
},
|
|
5346
|
+
{
|
|
5347
|
+
"contentKey": "t.invitations.by-token-id.screen.not_found.status",
|
|
5348
|
+
"defaultMessage": "The resource was not found.",
|
|
5349
|
+
"description": "Closed default status text for the t.invitations.by-token-id screen in the NOT_FOUND state.",
|
|
5350
|
+
"placeholders": {},
|
|
5351
|
+
"sensitivity": "AUTHENTICATED"
|
|
5352
|
+
},
|
|
5353
|
+
{
|
|
5354
|
+
"contentKey": "t.invitations.by-token-id.screen.ready.recovery",
|
|
5355
|
+
"defaultMessage": "No further action is needed.",
|
|
5356
|
+
"description": "Default recovery guidance for the t.invitations.by-token-id screen in the READY state.",
|
|
5357
|
+
"placeholders": {},
|
|
5358
|
+
"sensitivity": "AUTHENTICATED"
|
|
5359
|
+
},
|
|
5360
|
+
{
|
|
5361
|
+
"contentKey": "t.invitations.by-token-id.screen.ready.status",
|
|
5362
|
+
"defaultMessage": "Ready.",
|
|
5363
|
+
"description": "Closed default status text for the t.invitations.by-token-id screen in the READY state.",
|
|
5364
|
+
"placeholders": {},
|
|
5365
|
+
"sensitivity": "AUTHENTICATED"
|
|
5366
|
+
},
|
|
5367
|
+
{
|
|
5368
|
+
"contentKey": "t.invitations.by-token-id.screen.ready.summary",
|
|
5369
|
+
"defaultMessage": "See which organization, role and site an invitation link offers and who sent it, then sign in to accept it.",
|
|
5370
|
+
"description": "Summary for the t.invitations.by-token-id screen, copied verbatim from document 14's Screen/job cell.",
|
|
5371
|
+
"placeholders": {},
|
|
5372
|
+
"sensitivity": "AUTHENTICATED"
|
|
5373
|
+
},
|
|
5374
|
+
{
|
|
5375
|
+
"contentKey": "t.invitations.by-token-id.screen.ready.title",
|
|
5376
|
+
"defaultMessage": "Invitation",
|
|
5377
|
+
"description": "Title for the t.invitations.by-token-id screen, copied verbatim from document 14's Screen/job cell.",
|
|
5378
|
+
"placeholders": {},
|
|
5379
|
+
"sensitivity": "AUTHENTICATED"
|
|
5380
|
+
},
|
|
5381
|
+
{
|
|
5382
|
+
"contentKey": "t.invitations.by-token-id.screen.reconciling.recovery",
|
|
5383
|
+
"defaultMessage": "Wait while this is verified; do not resubmit.",
|
|
5384
|
+
"description": "Default recovery guidance for the t.invitations.by-token-id screen in the RECONCILING state.",
|
|
5385
|
+
"placeholders": {},
|
|
5386
|
+
"sensitivity": "AUTHENTICATED"
|
|
5387
|
+
},
|
|
5388
|
+
{
|
|
5389
|
+
"contentKey": "t.invitations.by-token-id.screen.reconciling.status",
|
|
5390
|
+
"defaultMessage": "This operation is still reconciling.",
|
|
5391
|
+
"description": "Closed default status text for the t.invitations.by-token-id screen in the RECONCILING state.",
|
|
5392
|
+
"placeholders": {},
|
|
5393
|
+
"sensitivity": "AUTHENTICATED"
|
|
5394
|
+
},
|
|
5395
|
+
{
|
|
5396
|
+
"contentKey": "t.invitations.by-token-id.screen.terminal_failure.recovery",
|
|
5397
|
+
"defaultMessage": "Try again. If it keeps failing, contact support.",
|
|
5398
|
+
"description": "Default recovery guidance for the t.invitations.by-token-id screen in the TERMINAL_FAILURE state.",
|
|
5399
|
+
"placeholders": {},
|
|
5400
|
+
"sensitivity": "AUTHENTICATED"
|
|
5401
|
+
},
|
|
5402
|
+
{
|
|
5403
|
+
"contentKey": "t.invitations.by-token-id.screen.terminal_failure.status",
|
|
5404
|
+
"defaultMessage": "The operation failed.",
|
|
5405
|
+
"description": "Closed default status text for the t.invitations.by-token-id screen in the TERMINAL_FAILURE state.",
|
|
5406
|
+
"placeholders": {},
|
|
5407
|
+
"sensitivity": "AUTHENTICATED"
|
|
5408
|
+
},
|
|
5297
5409
|
{
|
|
5298
5410
|
"contentKey": "v1.sites.by-organization-id.by-publication-id.comments.screen.capability_unavailable.recovery",
|
|
5299
5411
|
"defaultMessage": "This isn't available yet. Check back later, or contact support if you need it now.",
|
|
@@ -6835,5 +6947,5 @@
|
|
|
6835
6947
|
"sensitivity": "AUTHENTICATED"
|
|
6836
6948
|
}
|
|
6837
6949
|
],
|
|
6838
|
-
"digest": "sha256:
|
|
6950
|
+
"digest": "sha256:565ff099762917032800c017cb494ffaded82268ba9ecc63378a10c53176e08c"
|
|
6839
6951
|
}
|
|
@@ -1921,6 +1921,44 @@
|
|
|
1921
1921
|
"SUCCESS"
|
|
1922
1922
|
]
|
|
1923
1923
|
},
|
|
1924
|
+
{
|
|
1925
|
+
"routeId": "t.invitations.by-token-id",
|
|
1926
|
+
"originClass": "TRANSACTIONAL_LINK",
|
|
1927
|
+
"pathTemplate": "/t/invitations/{token}",
|
|
1928
|
+
"screenId": "t.invitations.by-token-id.screen",
|
|
1929
|
+
"authenticationClass": "ACCOUNTLESS_CAPABILITY",
|
|
1930
|
+
"capabilityKeys": [],
|
|
1931
|
+
"apiOperationIds": ["getMembershipInvitationsByToken"],
|
|
1932
|
+
"componentIds": ["StatePanel"],
|
|
1933
|
+
"contentKeyIds": [
|
|
1934
|
+
"t.invitations.by-token-id.screen.capability_unavailable.recovery",
|
|
1935
|
+
"t.invitations.by-token-id.screen.capability_unavailable.status",
|
|
1936
|
+
"t.invitations.by-token-id.screen.forbidden.recovery",
|
|
1937
|
+
"t.invitations.by-token-id.screen.forbidden.status",
|
|
1938
|
+
"t.invitations.by-token-id.screen.loading.recovery",
|
|
1939
|
+
"t.invitations.by-token-id.screen.loading.status",
|
|
1940
|
+
"t.invitations.by-token-id.screen.not_found.recovery",
|
|
1941
|
+
"t.invitations.by-token-id.screen.not_found.status",
|
|
1942
|
+
"t.invitations.by-token-id.screen.ready.recovery",
|
|
1943
|
+
"t.invitations.by-token-id.screen.ready.status",
|
|
1944
|
+
"t.invitations.by-token-id.screen.ready.summary",
|
|
1945
|
+
"t.invitations.by-token-id.screen.ready.title",
|
|
1946
|
+
"t.invitations.by-token-id.screen.reconciling.recovery",
|
|
1947
|
+
"t.invitations.by-token-id.screen.reconciling.status",
|
|
1948
|
+
"t.invitations.by-token-id.screen.terminal_failure.recovery",
|
|
1949
|
+
"t.invitations.by-token-id.screen.terminal_failure.status"
|
|
1950
|
+
],
|
|
1951
|
+
"tokenBearing": true,
|
|
1952
|
+
"requiredStates": [
|
|
1953
|
+
"LOADING",
|
|
1954
|
+
"READY",
|
|
1955
|
+
"FORBIDDEN",
|
|
1956
|
+
"NOT_FOUND",
|
|
1957
|
+
"CAPABILITY_UNAVAILABLE",
|
|
1958
|
+
"RECONCILING",
|
|
1959
|
+
"TERMINAL_FAILURE"
|
|
1960
|
+
]
|
|
1961
|
+
},
|
|
1924
1962
|
{
|
|
1925
1963
|
"routeId": "v1.sites.by-organization-id.by-publication-id",
|
|
1926
1964
|
"originClass": "APP",
|
|
@@ -2541,5 +2579,5 @@
|
|
|
2541
2579
|
]
|
|
2542
2580
|
}
|
|
2543
2581
|
],
|
|
2544
|
-
"digest": "sha256:
|
|
2582
|
+
"digest": "sha256:af99418b0ed4cc060ac83f46e279f9b37d59501f02375a85aedf809eeb9da334"
|
|
2545
2583
|
}
|
|
@@ -219,9 +219,9 @@
|
|
|
219
219
|
"version": "2.0.0",
|
|
220
220
|
"path": "openapi/openapi.yaml",
|
|
221
221
|
"materialized": true,
|
|
222
|
-
"sourceDigest": "sha256:
|
|
222
|
+
"sourceDigest": "sha256:cecf9cd16c775f8368d5b37db7aae7bd0e72cafedb9c4829836bf66d9564165a",
|
|
223
223
|
"typescriptRootType": null
|
|
224
224
|
}
|
|
225
225
|
],
|
|
226
|
-
"digest": "sha256:
|
|
226
|
+
"digest": "sha256:61f3c1c4bdaa712f50404c23dd502585c1fa9c6d6869ae229883d7e8f35b128a"
|
|
227
227
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "2.0.0",
|
|
3
3
|
"sourceDesignRevision": "a53052955ceb6c1aa10c886289dc832eedfe6de0a00004df07d353ac19c4403a",
|
|
4
|
-
"openApiDigest": "sha256:
|
|
4
|
+
"openApiDigest": "sha256:cecf9cd16c775f8368d5b37db7aae7bd0e72cafedb9c4829836bf66d9564165a",
|
|
5
5
|
"operations": [
|
|
6
6
|
{
|
|
7
7
|
"operationId": "getInternalHealth",
|
|
@@ -135,6 +135,18 @@
|
|
|
135
135
|
"actionGrant": "none",
|
|
136
136
|
"sourceFragment": "github"
|
|
137
137
|
},
|
|
138
|
+
{
|
|
139
|
+
"operationId": "getMembershipInvitationsByToken",
|
|
140
|
+
"method": "GET",
|
|
141
|
+
"path": "/v2/membership-invitations/{token}",
|
|
142
|
+
"purpose": "read what an invitation link offers",
|
|
143
|
+
"capabilityKey": null,
|
|
144
|
+
"conditionalCapabilityKeys": [],
|
|
145
|
+
"activationGate": "MVP",
|
|
146
|
+
"assuranceClass": "SESSION",
|
|
147
|
+
"actionGrant": "none",
|
|
148
|
+
"sourceFragment": "membership-invitations"
|
|
149
|
+
},
|
|
138
150
|
{
|
|
139
151
|
"operationId": "postMembershipInvitationsByTokenAccept",
|
|
140
152
|
"method": "POST",
|
|
@@ -1881,5 +1893,5 @@
|
|
|
1881
1893
|
"sourceFragment": "workloads"
|
|
1882
1894
|
}
|
|
1883
1895
|
],
|
|
1884
|
-
"digest": "sha256:
|
|
1896
|
+
"digest": "sha256:d48e61b03e54e96b485e677a5d31a7a09ecf5eecc784fe5922ead60017f81a18"
|
|
1885
1897
|
}
|
package/openapi/openapi.yaml
CHANGED
|
@@ -1587,6 +1587,58 @@ components:
|
|
|
1587
1587
|
required:
|
|
1588
1588
|
- status
|
|
1589
1589
|
type: object
|
|
1590
|
+
GetMembershipInvitationsByTokenResponse:
|
|
1591
|
+
additionalProperties: false
|
|
1592
|
+
allOf:
|
|
1593
|
+
- else:
|
|
1594
|
+
not:
|
|
1595
|
+
required:
|
|
1596
|
+
- publicationName
|
|
1597
|
+
if:
|
|
1598
|
+
properties:
|
|
1599
|
+
scope:
|
|
1600
|
+
pattern: ^PUBLICATION$
|
|
1601
|
+
type: string
|
|
1602
|
+
x-gala-const: PUBLICATION
|
|
1603
|
+
required:
|
|
1604
|
+
- scope
|
|
1605
|
+
then:
|
|
1606
|
+
required:
|
|
1607
|
+
- publicationName
|
|
1608
|
+
properties:
|
|
1609
|
+
expiresAt:
|
|
1610
|
+
$ref: "#/components/schemas/PortableProblemRfc3339"
|
|
1611
|
+
invitedBy:
|
|
1612
|
+
$ref: "#/components/schemas/SiteActor"
|
|
1613
|
+
organizationName:
|
|
1614
|
+
maxLength: 80
|
|
1615
|
+
minLength: 1
|
|
1616
|
+
type: string
|
|
1617
|
+
publicationName:
|
|
1618
|
+
maxLength: 80
|
|
1619
|
+
minLength: 1
|
|
1620
|
+
type: string
|
|
1621
|
+
roleName:
|
|
1622
|
+
maxLength: 80
|
|
1623
|
+
minLength: 1
|
|
1624
|
+
type: string
|
|
1625
|
+
scope:
|
|
1626
|
+
enum:
|
|
1627
|
+
- ORGANIZATION
|
|
1628
|
+
- PUBLICATION
|
|
1629
|
+
type: string
|
|
1630
|
+
state:
|
|
1631
|
+
enum:
|
|
1632
|
+
- PENDING
|
|
1633
|
+
type: string
|
|
1634
|
+
required:
|
|
1635
|
+
- organizationName
|
|
1636
|
+
- roleName
|
|
1637
|
+
- scope
|
|
1638
|
+
- invitedBy
|
|
1639
|
+
- expiresAt
|
|
1640
|
+
- state
|
|
1641
|
+
type: object
|
|
1590
1642
|
GetOrganizationsByOrganizationIdCapabilitiesResponse:
|
|
1591
1643
|
additionalProperties: false
|
|
1592
1644
|
properties:
|
|
@@ -1601,6 +1653,7 @@ components:
|
|
|
1601
1653
|
type: object
|
|
1602
1654
|
GetOrganizationsByOrganizationIdMembershipInvitationsByInvitationIdResponse:
|
|
1603
1655
|
additionalProperties: false
|
|
1656
|
+
description: "One pending or settled invitation, in exactly the shape the single-invitation read returns, so a client renders a row and its detail view from the same fields. SCHEMA-3.4.0 adds what a People page needs to show a pending row: `recipient` (the inviter's own unverified label, absent for older invitations), the invited role (`roleKey`, `roleName`), its publication when the invitation is publication-scoped (`publicationId`, `publicationName`), and who sent it (`invitedBy`)."
|
|
1604
1657
|
properties:
|
|
1605
1658
|
expiresAt:
|
|
1606
1659
|
$ref: "#/components/schemas/PortableProblemRfc3339"
|
|
@@ -1608,10 +1661,34 @@ components:
|
|
|
1608
1661
|
format: uuid
|
|
1609
1662
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
1610
1663
|
type: string
|
|
1664
|
+
invitedBy:
|
|
1665
|
+
$ref: "#/components/schemas/SiteActor"
|
|
1666
|
+
publicationId:
|
|
1667
|
+
format: uuid
|
|
1668
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
1669
|
+
type: string
|
|
1670
|
+
publicationName:
|
|
1671
|
+
maxLength: 80
|
|
1672
|
+
minLength: 1
|
|
1673
|
+
type: string
|
|
1674
|
+
recipient:
|
|
1675
|
+
description: "The label the inviter typed when creating the invitation (an email address), shown so the inviter recognises the row. It is not a verified identity: acceptance is possession-based and this value is never matched against whoever accepts (LOCAL-34 G6). Absent for invitations created before the label was stored."
|
|
1676
|
+
maxLength: 320
|
|
1677
|
+
minLength: 1
|
|
1678
|
+
type: string
|
|
1611
1679
|
roleId:
|
|
1612
1680
|
format: uuid
|
|
1613
1681
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
1614
1682
|
type: string
|
|
1683
|
+
roleKey:
|
|
1684
|
+
maxLength: 80
|
|
1685
|
+
minLength: 1
|
|
1686
|
+
pattern: ^[a-z][a-z0-9_]*$
|
|
1687
|
+
type: string
|
|
1688
|
+
roleName:
|
|
1689
|
+
maxLength: 80
|
|
1690
|
+
minLength: 1
|
|
1691
|
+
type: string
|
|
1615
1692
|
state:
|
|
1616
1693
|
$ref: "#/components/schemas/MembershipInvitationState"
|
|
1617
1694
|
version:
|
|
@@ -1624,6 +1701,9 @@ components:
|
|
|
1624
1701
|
- state
|
|
1625
1702
|
- roleId
|
|
1626
1703
|
- expiresAt
|
|
1704
|
+
- roleKey
|
|
1705
|
+
- roleName
|
|
1706
|
+
- invitedBy
|
|
1627
1707
|
type: object
|
|
1628
1708
|
GetOrganizationsByOrganizationIdMembershipInvitationsResponse:
|
|
1629
1709
|
additionalProperties: false
|
|
@@ -4668,7 +4748,7 @@ components:
|
|
|
4668
4748
|
type: string
|
|
4669
4749
|
MembershipInvitationSummary:
|
|
4670
4750
|
additionalProperties: false
|
|
4671
|
-
description: One pending or settled invitation, in exactly the shape the single-invitation read returns, so a client renders a row and its detail view from the same fields. `recipient`
|
|
4751
|
+
description: "One pending or settled invitation, in exactly the shape the single-invitation read returns, so a client renders a row and its detail view from the same fields. SCHEMA-3.4.0 adds what a People page needs to show a pending row: `recipient` (the inviter's own unverified label, absent for older invitations), the invited role (`roleKey`, `roleName`), its publication when the invitation is publication-scoped (`publicationId`, `publicationName`), and who sent it (`invitedBy`)."
|
|
4672
4752
|
properties:
|
|
4673
4753
|
expiresAt:
|
|
4674
4754
|
$ref: "#/components/schemas/PortableProblemRfc3339"
|
|
@@ -4676,10 +4756,34 @@ components:
|
|
|
4676
4756
|
format: uuid
|
|
4677
4757
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
4678
4758
|
type: string
|
|
4759
|
+
invitedBy:
|
|
4760
|
+
$ref: "#/components/schemas/SiteActor"
|
|
4761
|
+
publicationId:
|
|
4762
|
+
format: uuid
|
|
4763
|
+
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
4764
|
+
type: string
|
|
4765
|
+
publicationName:
|
|
4766
|
+
maxLength: 80
|
|
4767
|
+
minLength: 1
|
|
4768
|
+
type: string
|
|
4769
|
+
recipient:
|
|
4770
|
+
description: "The label the inviter typed when creating the invitation (an email address), shown so the inviter recognises the row. It is not a verified identity: acceptance is possession-based and this value is never matched against whoever accepts (LOCAL-34 G6). Absent for invitations created before the label was stored."
|
|
4771
|
+
maxLength: 320
|
|
4772
|
+
minLength: 1
|
|
4773
|
+
type: string
|
|
4679
4774
|
roleId:
|
|
4680
4775
|
format: uuid
|
|
4681
4776
|
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
|
|
4682
4777
|
type: string
|
|
4778
|
+
roleKey:
|
|
4779
|
+
maxLength: 80
|
|
4780
|
+
minLength: 1
|
|
4781
|
+
pattern: ^[a-z][a-z0-9_]*$
|
|
4782
|
+
type: string
|
|
4783
|
+
roleName:
|
|
4784
|
+
maxLength: 80
|
|
4785
|
+
minLength: 1
|
|
4786
|
+
type: string
|
|
4683
4787
|
state:
|
|
4684
4788
|
$ref: "#/components/schemas/MembershipInvitationState"
|
|
4685
4789
|
version:
|
|
@@ -4692,6 +4796,9 @@ components:
|
|
|
4692
4796
|
- state
|
|
4693
4797
|
- roleId
|
|
4694
4798
|
- expiresAt
|
|
4799
|
+
- roleKey
|
|
4800
|
+
- roleName
|
|
4801
|
+
- invitedBy
|
|
4695
4802
|
type: object
|
|
4696
4803
|
MembershipState:
|
|
4697
4804
|
enum:
|
|
@@ -11834,7 +11941,7 @@ components:
|
|
|
11834
11941
|
- string
|
|
11835
11942
|
- "null"
|
|
11836
11943
|
recipient:
|
|
11837
|
-
description:
|
|
11944
|
+
description: An email address (at most 320 characters; anything else, a GitHub login included, is `400 VALIDATION_FAILED`). The server trims and lower-cases it. It records who the inviter meant to invite and is shown back on the invitation rows; acceptance is possession-based, so whoever presents the invitation token joins with the invited role and this value is never matched against the accepting principal's verified identity -- treat it as a note, not a binding (LOCAL-34 G6).
|
|
11838
11945
|
format: email
|
|
11839
11946
|
maxLength: 320
|
|
11840
11947
|
type: string
|
|
@@ -17782,6 +17889,126 @@ paths:
|
|
|
17782
17889
|
- GithubRepository:name unclaimed on the resolved account
|
|
17783
17890
|
x-gala-success-category: create
|
|
17784
17891
|
x-gala-tenant-scope: NONE
|
|
17892
|
+
/v2/membership-invitations/{token}:
|
|
17893
|
+
get:
|
|
17894
|
+
description: |
|
|
17895
|
+
Lets the page an invitation link opens show what it offers before the
|
|
17896
|
+
person signs in to accept it: the organization, the role, the
|
|
17897
|
+
publication for a publication-scoped invitation, who sent it and when it
|
|
17898
|
+
expires. No session is needed; the token is the capability. Any unknown,
|
|
17899
|
+
expired, accepted or revoked token answers `404 RESOURCE_NOT_FOUND`
|
|
17900
|
+
(non-enumerating). Accepting stays `POST
|
|
17901
|
+
/v2/membership-invitations/{token}:accept` after sign-in.
|
|
17902
|
+
operationId: getMembershipInvitationsByToken
|
|
17903
|
+
parameters:
|
|
17904
|
+
- $ref: "#/components/parameters/XCorrelationId"
|
|
17905
|
+
- example: examplexxxxxxxxxxxxxxxxxxxxxxxxx
|
|
17906
|
+
in: path
|
|
17907
|
+
name: token
|
|
17908
|
+
required: true
|
|
17909
|
+
schema:
|
|
17910
|
+
maxLength: 256
|
|
17911
|
+
minLength: 32
|
|
17912
|
+
type: string
|
|
17913
|
+
responses:
|
|
17914
|
+
"200":
|
|
17915
|
+
content:
|
|
17916
|
+
application/json:
|
|
17917
|
+
examples:
|
|
17918
|
+
nominal:
|
|
17919
|
+
summary: Nominal successful response
|
|
17920
|
+
value:
|
|
17921
|
+
expiresAt: "2026-10-16T12:00:00.000Z"
|
|
17922
|
+
invitedBy:
|
|
17923
|
+
displayName: Dev
|
|
17924
|
+
organizationName: Northwind Press
|
|
17925
|
+
publicationName: Maya's blog
|
|
17926
|
+
roleName: Editor
|
|
17927
|
+
scope: PUBLICATION
|
|
17928
|
+
state: PENDING
|
|
17929
|
+
schema:
|
|
17930
|
+
$ref: "#/components/schemas/GetMembershipInvitationsByTokenResponse"
|
|
17931
|
+
description: read what an invitation link offers succeeded
|
|
17932
|
+
headers:
|
|
17933
|
+
Cache-Control:
|
|
17934
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
17935
|
+
X-Correlation-Id:
|
|
17936
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
17937
|
+
"400":
|
|
17938
|
+
content:
|
|
17939
|
+
application/problem+json:
|
|
17940
|
+
examples:
|
|
17941
|
+
VALIDATION_FAILED:
|
|
17942
|
+
summary: VALIDATION_FAILED
|
|
17943
|
+
value:
|
|
17944
|
+
code: VALIDATION_FAILED
|
|
17945
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
17946
|
+
detail: See the operation contract.
|
|
17947
|
+
errors: []
|
|
17948
|
+
retryable: false
|
|
17949
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
17950
|
+
schemaVersion: 2.0.0
|
|
17951
|
+
status: 400
|
|
17952
|
+
title: VALIDATION_FAILED
|
|
17953
|
+
type: urn:gala:problem:validation-failed
|
|
17954
|
+
schema:
|
|
17955
|
+
$ref: "#/components/schemas/Problem"
|
|
17956
|
+
description: VALIDATION_FAILED
|
|
17957
|
+
headers:
|
|
17958
|
+
Cache-Control:
|
|
17959
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
17960
|
+
X-Correlation-Id:
|
|
17961
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
17962
|
+
x-gala-problem-codes:
|
|
17963
|
+
- VALIDATION_FAILED
|
|
17964
|
+
"404":
|
|
17965
|
+
content:
|
|
17966
|
+
application/problem+json:
|
|
17967
|
+
examples:
|
|
17968
|
+
RESOURCE_NOT_FOUND:
|
|
17969
|
+
summary: RESOURCE_NOT_FOUND
|
|
17970
|
+
value:
|
|
17971
|
+
code: RESOURCE_NOT_FOUND
|
|
17972
|
+
correlationId: 018f0000-0000-7000-8000-000000000001
|
|
17973
|
+
detail: See the operation contract.
|
|
17974
|
+
errors: []
|
|
17975
|
+
retryable: false
|
|
17976
|
+
schemaId: urn:gala:schema:problem:2.0.0
|
|
17977
|
+
schemaVersion: 2.0.0
|
|
17978
|
+
status: 404
|
|
17979
|
+
title: RESOURCE_NOT_FOUND
|
|
17980
|
+
type: urn:gala:problem:resource-not-found
|
|
17981
|
+
schema:
|
|
17982
|
+
$ref: "#/components/schemas/Problem"
|
|
17983
|
+
description: RESOURCE_NOT_FOUND
|
|
17984
|
+
headers:
|
|
17985
|
+
Cache-Control:
|
|
17986
|
+
$ref: "#/components/headers/CacheControlNoStore"
|
|
17987
|
+
X-Correlation-Id:
|
|
17988
|
+
$ref: "#/components/headers/XCorrelationId"
|
|
17989
|
+
x-gala-problem-codes:
|
|
17990
|
+
- RESOURCE_NOT_FOUND
|
|
17991
|
+
security: []
|
|
17992
|
+
summary: read what an invitation link offers
|
|
17993
|
+
tags:
|
|
17994
|
+
- membership-invitations
|
|
17995
|
+
x-gala-activation-gate: MVP
|
|
17996
|
+
x-gala-activation-guards:
|
|
17997
|
+
- NONE
|
|
17998
|
+
x-gala-capability-key: null
|
|
17999
|
+
x-gala-concurrency: none
|
|
18000
|
+
x-gala-conditional-capabilities: []
|
|
18001
|
+
x-gala-example-profile: NOMINAL_SUCCESS_AND_EACH_REACHABLE_PROBLEM
|
|
18002
|
+
x-gala-nullability: required-and-nullable-are-explicit
|
|
18003
|
+
x-gala-purpose: read what an invitation link offers
|
|
18004
|
+
x-gala-reachable-problems:
|
|
18005
|
+
- RESOURCE_NOT_FOUND
|
|
18006
|
+
- VALIDATION_FAILED
|
|
18007
|
+
x-gala-replay-identity: safe-query
|
|
18008
|
+
x-gala-state-guards:
|
|
18009
|
+
- NONE
|
|
18010
|
+
x-gala-success-category: query
|
|
18011
|
+
x-gala-tenant-scope: NONE
|
|
17785
18012
|
/v2/membership-invitations/{token}:accept:
|
|
17786
18013
|
post:
|
|
17787
18014
|
description: |
|
|
@@ -19605,7 +19832,14 @@ paths:
|
|
|
19605
19832
|
value:
|
|
19606
19833
|
expiresAt: "2026-09-06T00:00:00.000Z"
|
|
19607
19834
|
invitationId: 018f0000-0000-7000-8000-000000000001
|
|
19835
|
+
invitedBy:
|
|
19836
|
+
displayName: Dev
|
|
19837
|
+
publicationId: 018f0000-0000-7000-8000-000000000001
|
|
19838
|
+
publicationName: Maya's blog
|
|
19839
|
+
recipient: priya@example.com
|
|
19608
19840
|
roleId: 018f0000-0000-7000-8000-000000000001
|
|
19841
|
+
roleKey: editor
|
|
19842
|
+
roleName: Editor
|
|
19609
19843
|
state: PENDING
|
|
19610
19844
|
version: 0
|
|
19611
19845
|
schema:
|
package/package.json
CHANGED
package/sbom.cdx.json
CHANGED
|
@@ -97,8 +97,8 @@
|
|
|
97
97
|
"type": "library",
|
|
98
98
|
"name": "schemas",
|
|
99
99
|
"group": "@rathnasgala2",
|
|
100
|
-
"version": "3.
|
|
101
|
-
"bom-ref": "@rathnasgala2/schemas@3.
|
|
100
|
+
"version": "3.4.0",
|
|
101
|
+
"bom-ref": "@rathnasgala2/schemas@3.4.0",
|
|
102
102
|
"description": "Executable JSON Schema and OpenAPI contracts for Galascribe",
|
|
103
103
|
"licenses": [
|
|
104
104
|
{
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
110
|
],
|
|
111
|
-
"purl": "pkg:npm/%40rathnasgala2/schemas@3.
|
|
111
|
+
"purl": "pkg:npm/%40rathnasgala2/schemas@3.4.0?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2Frathnasgala2%2Fschema.git",
|
|
112
112
|
"externalReferences": [
|
|
113
113
|
{
|
|
114
114
|
"url": "https://github.com/rathnasgala2/schema/issues",
|
|
@@ -153,7 +153,7 @@
|
|
|
153
153
|
"type": "library",
|
|
154
154
|
"name": "ajv-formats",
|
|
155
155
|
"version": "3.0.1",
|
|
156
|
-
"bom-ref": "@rathnasgala2/schemas@3.
|
|
156
|
+
"bom-ref": "@rathnasgala2/schemas@3.4.0|ajv-formats@3.0.1",
|
|
157
157
|
"licenses": [
|
|
158
158
|
{
|
|
159
159
|
"license": {
|
|
@@ -187,7 +187,7 @@
|
|
|
187
187
|
"type": "library",
|
|
188
188
|
"name": "ajv",
|
|
189
189
|
"version": "8.20.0",
|
|
190
|
-
"bom-ref": "@rathnasgala2/schemas@3.
|
|
190
|
+
"bom-ref": "@rathnasgala2/schemas@3.4.0|ajv@8.20.0",
|
|
191
191
|
"licenses": [
|
|
192
192
|
{
|
|
193
193
|
"license": {
|
|
@@ -221,7 +221,7 @@
|
|
|
221
221
|
"type": "library",
|
|
222
222
|
"name": "fast-deep-equal",
|
|
223
223
|
"version": "3.1.3",
|
|
224
|
-
"bom-ref": "@rathnasgala2/schemas@3.
|
|
224
|
+
"bom-ref": "@rathnasgala2/schemas@3.4.0|fast-deep-equal@3.1.3",
|
|
225
225
|
"licenses": [
|
|
226
226
|
{
|
|
227
227
|
"license": {
|
|
@@ -255,7 +255,7 @@
|
|
|
255
255
|
"type": "library",
|
|
256
256
|
"name": "fast-uri",
|
|
257
257
|
"version": "3.1.8",
|
|
258
|
-
"bom-ref": "@rathnasgala2/schemas@3.
|
|
258
|
+
"bom-ref": "@rathnasgala2/schemas@3.4.0|fast-uri@3.1.8",
|
|
259
259
|
"licenses": [
|
|
260
260
|
{
|
|
261
261
|
"license": {
|
|
@@ -289,7 +289,7 @@
|
|
|
289
289
|
"type": "library",
|
|
290
290
|
"name": "json-schema-traverse",
|
|
291
291
|
"version": "1.0.0",
|
|
292
|
-
"bom-ref": "@rathnasgala2/schemas@3.
|
|
292
|
+
"bom-ref": "@rathnasgala2/schemas@3.4.0|json-schema-traverse@1.0.0",
|
|
293
293
|
"licenses": [
|
|
294
294
|
{
|
|
295
295
|
"license": {
|
|
@@ -323,7 +323,7 @@
|
|
|
323
323
|
"type": "library",
|
|
324
324
|
"name": "require-from-string",
|
|
325
325
|
"version": "2.0.2",
|
|
326
|
-
"bom-ref": "@rathnasgala2/schemas@3.
|
|
326
|
+
"bom-ref": "@rathnasgala2/schemas@3.4.0|require-from-string@2.0.2",
|
|
327
327
|
"licenses": [
|
|
328
328
|
{
|
|
329
329
|
"license": {
|
|
@@ -1064,10 +1064,10 @@
|
|
|
1064
1064
|
],
|
|
1065
1065
|
"dependencies": [
|
|
1066
1066
|
{
|
|
1067
|
-
"ref": "@rathnasgala2/schemas@3.
|
|
1067
|
+
"ref": "@rathnasgala2/schemas@3.4.0",
|
|
1068
1068
|
"dependsOn": [
|
|
1069
|
-
"@rathnasgala2/schemas@3.
|
|
1070
|
-
"@rathnasgala2/schemas@3.
|
|
1069
|
+
"@rathnasgala2/schemas@3.4.0|ajv-formats@3.0.1",
|
|
1070
|
+
"@rathnasgala2/schemas@3.4.0|ajv@8.20.0",
|
|
1071
1071
|
"pkg:npm/semver@7.8.5",
|
|
1072
1072
|
"urn:gala:source-data:iana-ipv4-special-registry",
|
|
1073
1073
|
"urn:gala:source-data:iana-ipv6-special-registry",
|
|
@@ -1089,31 +1089,31 @@
|
|
|
1089
1089
|
]
|
|
1090
1090
|
},
|
|
1091
1091
|
{
|
|
1092
|
-
"ref": "@rathnasgala2/schemas@3.
|
|
1092
|
+
"ref": "@rathnasgala2/schemas@3.4.0|ajv-formats@3.0.1",
|
|
1093
1093
|
"dependsOn": [
|
|
1094
|
-
"@rathnasgala2/schemas@3.
|
|
1094
|
+
"@rathnasgala2/schemas@3.4.0|ajv@8.20.0"
|
|
1095
1095
|
]
|
|
1096
1096
|
},
|
|
1097
1097
|
{
|
|
1098
|
-
"ref": "@rathnasgala2/schemas@3.
|
|
1098
|
+
"ref": "@rathnasgala2/schemas@3.4.0|ajv@8.20.0",
|
|
1099
1099
|
"dependsOn": [
|
|
1100
|
-
"@rathnasgala2/schemas@3.
|
|
1101
|
-
"@rathnasgala2/schemas@3.
|
|
1102
|
-
"@rathnasgala2/schemas@3.
|
|
1103
|
-
"@rathnasgala2/schemas@3.
|
|
1100
|
+
"@rathnasgala2/schemas@3.4.0|fast-deep-equal@3.1.3",
|
|
1101
|
+
"@rathnasgala2/schemas@3.4.0|fast-uri@3.1.8",
|
|
1102
|
+
"@rathnasgala2/schemas@3.4.0|json-schema-traverse@1.0.0",
|
|
1103
|
+
"@rathnasgala2/schemas@3.4.0|require-from-string@2.0.2"
|
|
1104
1104
|
]
|
|
1105
1105
|
},
|
|
1106
1106
|
{
|
|
1107
|
-
"ref": "@rathnasgala2/schemas@3.
|
|
1107
|
+
"ref": "@rathnasgala2/schemas@3.4.0|fast-deep-equal@3.1.3"
|
|
1108
1108
|
},
|
|
1109
1109
|
{
|
|
1110
|
-
"ref": "@rathnasgala2/schemas@3.
|
|
1110
|
+
"ref": "@rathnasgala2/schemas@3.4.0|fast-uri@3.1.8"
|
|
1111
1111
|
},
|
|
1112
1112
|
{
|
|
1113
|
-
"ref": "@rathnasgala2/schemas@3.
|
|
1113
|
+
"ref": "@rathnasgala2/schemas@3.4.0|json-schema-traverse@1.0.0"
|
|
1114
1114
|
},
|
|
1115
1115
|
{
|
|
1116
|
-
"ref": "@rathnasgala2/schemas@3.
|
|
1116
|
+
"ref": "@rathnasgala2/schemas@3.4.0|require-from-string@2.0.2"
|
|
1117
1117
|
},
|
|
1118
1118
|
{
|
|
1119
1119
|
"ref": "pkg:npm/semver@7.8.5"
|