@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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "package": "@rathnasgala2/schemas@3.3.0",
3
+ "package": "@rathnasgala2/schemas@3.4.0",
4
4
  "source": "package-lock.json",
5
5
  "dependencies": [
6
6
  {
@@ -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:e51afcd0bcf17cab1d9d704ad99ad14099456563a297b4e385e457e08280c762"
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:f9b84022184dc6ccd5dd675df376719b5c17192ecd36f17aa1485caa8259114a"
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:809e90c9de881490b5d3981e3112ee557ce8bcb338f3e554c5c8749dd2c3e0cf",
222
+ "sourceDigest": "sha256:cecf9cd16c775f8368d5b37db7aae7bd0e72cafedb9c4829836bf66d9564165a",
223
223
  "typescriptRootType": null
224
224
  }
225
225
  ],
226
- "digest": "sha256:5fe60951da52eeef0b797085419c7b04f7409e103dcb2632296d8d7acbafc1b4"
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:809e90c9de881490b5d3981e3112ee557ce8bcb338f3e554c5c8749dd2c3e0cf",
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:26f2ffa785981c34d5383d29bb63a918816d143e9615c7b3d86d86f60a28b3d7"
1896
+ "digest": "sha256:d48e61b03e54e96b485e677a5d31a7a09ecf5eecc784fe5922ead60017f81a18"
1885
1897
  }
@@ -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` is deliberately absent, as it is from the single read, because acceptance is possession-based and the label an inviter typed is never a verified identity (LOCAL-34 G6).
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: Label recording who the inviter meant to invite. 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. It exists so the inviter can recognize the invitation in a list; treat it as a note, not a binding (LOCAL-34 G6). Recipient binding is revisited when verified email exists.
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rathnasgala2/schemas",
3
- "version": "3.3.0",
3
+ "version": "3.4.0",
4
4
  "description": "Executable JSON Schema and OpenAPI contracts for Galascribe",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",
package/sbom.cdx.json CHANGED
@@ -97,8 +97,8 @@
97
97
  "type": "library",
98
98
  "name": "schemas",
99
99
  "group": "@rathnasgala2",
100
- "version": "3.3.0",
101
- "bom-ref": "@rathnasgala2/schemas@3.3.0",
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.3.0?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2Frathnasgala2%2Fschema.git",
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.3.0|ajv-formats@3.0.1",
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.3.0|ajv@8.20.0",
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.3.0|fast-deep-equal@3.1.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.3.0|fast-uri@3.1.8",
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.3.0|json-schema-traverse@1.0.0",
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.3.0|require-from-string@2.0.2",
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.3.0",
1067
+ "ref": "@rathnasgala2/schemas@3.4.0",
1068
1068
  "dependsOn": [
1069
- "@rathnasgala2/schemas@3.3.0|ajv-formats@3.0.1",
1070
- "@rathnasgala2/schemas@3.3.0|ajv@8.20.0",
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.3.0|ajv-formats@3.0.1",
1092
+ "ref": "@rathnasgala2/schemas@3.4.0|ajv-formats@3.0.1",
1093
1093
  "dependsOn": [
1094
- "@rathnasgala2/schemas@3.3.0|ajv@8.20.0"
1094
+ "@rathnasgala2/schemas@3.4.0|ajv@8.20.0"
1095
1095
  ]
1096
1096
  },
1097
1097
  {
1098
- "ref": "@rathnasgala2/schemas@3.3.0|ajv@8.20.0",
1098
+ "ref": "@rathnasgala2/schemas@3.4.0|ajv@8.20.0",
1099
1099
  "dependsOn": [
1100
- "@rathnasgala2/schemas@3.3.0|fast-deep-equal@3.1.3",
1101
- "@rathnasgala2/schemas@3.3.0|fast-uri@3.1.8",
1102
- "@rathnasgala2/schemas@3.3.0|json-schema-traverse@1.0.0",
1103
- "@rathnasgala2/schemas@3.3.0|require-from-string@2.0.2"
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.3.0|fast-deep-equal@3.1.3"
1107
+ "ref": "@rathnasgala2/schemas@3.4.0|fast-deep-equal@3.1.3"
1108
1108
  },
1109
1109
  {
1110
- "ref": "@rathnasgala2/schemas@3.3.0|fast-uri@3.1.8"
1110
+ "ref": "@rathnasgala2/schemas@3.4.0|fast-uri@3.1.8"
1111
1111
  },
1112
1112
  {
1113
- "ref": "@rathnasgala2/schemas@3.3.0|json-schema-traverse@1.0.0"
1113
+ "ref": "@rathnasgala2/schemas@3.4.0|json-schema-traverse@1.0.0"
1114
1114
  },
1115
1115
  {
1116
- "ref": "@rathnasgala2/schemas@3.3.0|require-from-string@2.0.2"
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"