@openvtc/trust-tasks 0.21.16 → 0.22.1

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.
Files changed (136) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/_shared/components.d.ts +15 -15
  3. package/dist/vetting/_shared/0.1/identity-vetting.d.ts +2 -2
  4. package/dist/vetting/_shared/0.1/identity-vetting.d.ts.map +1 -1
  5. package/dist/vetting/_shared/0.1/vetting-card.d.ts +1 -1
  6. package/dist/vetting/_shared/0.1/vetting.d.ts +1 -1
  7. package/dist/vetting/request/0.1/payload.d.ts +5 -5
  8. package/dist/vetting/request/0.1/payload.js +2 -2
  9. package/dist/vetting/request/0.1/payload.js.map +1 -1
  10. package/dist/vtc/_shared/0.1/endorsement-type.d.ts +1 -1
  11. package/dist/vtc/_shared/0.1/endorsement.d.ts +1 -1
  12. package/dist/vtc/auth/recognise/0.2/payload.d.ts +3 -3
  13. package/dist/vtc/auth/recognise/0.2/payload.js +1 -1
  14. package/dist/vtc/auth/recognise/0.2/payload.js.map +1 -1
  15. package/dist/vtc/community/profile/show/0.1/payload.d.ts +4 -4
  16. package/dist/vtc/community/profile/show/0.1/payload.js +2 -2
  17. package/dist/vtc/community/profile/show/0.1/payload.js.map +1 -1
  18. package/dist/vtc/community/profile/update/0.1/payload.d.ts +4 -4
  19. package/dist/vtc/community/profile/update/0.1/payload.js +2 -2
  20. package/dist/vtc/community/profile/update/0.1/payload.js.map +1 -1
  21. package/dist/vtc/config/export/0.1/payload.d.ts +4 -4
  22. package/dist/vtc/config/export/0.1/payload.js +2 -2
  23. package/dist/vtc/config/export/0.1/payload.js.map +1 -1
  24. package/dist/vtc/config/import/0.1/payload.d.ts +4 -4
  25. package/dist/vtc/config/import/0.1/payload.js +2 -2
  26. package/dist/vtc/config/import/0.1/payload.js.map +1 -1
  27. package/dist/vtc/endorsement-types/list/0.1/payload.d.ts +8 -8
  28. package/dist/vtc/endorsement-types/list/0.1/payload.js +4 -4
  29. package/dist/vtc/endorsement-types/list/0.1/payload.js.map +1 -1
  30. package/dist/vtc/endorsement-types/register/0.1/payload.d.ts +16 -11
  31. package/dist/vtc/endorsement-types/register/0.1/payload.d.ts.map +1 -1
  32. package/dist/vtc/endorsement-types/register/0.1/payload.js +7 -6
  33. package/dist/vtc/endorsement-types/register/0.1/payload.js.map +1 -1
  34. package/dist/vtc/endorsements/issue/0.1/payload.d.ts +42 -42
  35. package/dist/vtc/endorsements/issue/0.1/payload.js +19 -19
  36. package/dist/vtc/endorsements/issue/0.1/payload.js.map +1 -1
  37. package/dist/vtc/endorsements/list/0.1/payload.d.ts +31 -31
  38. package/dist/vtc/endorsements/list/0.1/payload.js +15 -15
  39. package/dist/vtc/endorsements/list/0.1/payload.js.map +1 -1
  40. package/dist/vtc/endorsements/revoke/0.1/payload.d.ts +5 -5
  41. package/dist/vtc/endorsements/revoke/0.1/payload.js +2 -2
  42. package/dist/vtc/endorsements/revoke/0.1/payload.js.map +1 -1
  43. package/dist/vtc/endorsements/show/0.1/payload.d.ts +28 -28
  44. package/dist/vtc/endorsements/show/0.1/payload.js +14 -14
  45. package/dist/vtc/endorsements/show/0.1/payload.js.map +1 -1
  46. package/dist/vtc/join-requests/decide/0.1/payload.d.ts +10 -10
  47. package/dist/vtc/join-requests/decide/0.1/payload.js +4 -4
  48. package/dist/vtc/join-requests/decide/0.1/payload.js.map +1 -1
  49. package/dist/vtc/join-requests/manifest/0.2/payload.d.ts +10 -10
  50. package/dist/vtc/join-requests/manifest/0.2/payload.js +4 -4
  51. package/dist/vtc/join-requests/manifest/0.2/payload.js.map +1 -1
  52. package/dist/vtc/members/credentials/0.1/payload.d.ts +5 -5
  53. package/dist/vtc/members/credentials/0.1/payload.js +2 -2
  54. package/dist/vtc/members/credentials/0.1/payload.js.map +1 -1
  55. package/dist/vtc/members/list/0.1/payload.d.ts +8 -8
  56. package/dist/vtc/members/list/0.1/payload.js +4 -4
  57. package/dist/vtc/members/list/0.1/payload.js.map +1 -1
  58. package/dist/vtc/members/personhood/assert/0.1/payload.d.ts +14 -14
  59. package/dist/vtc/members/personhood/assert/0.1/payload.js +6 -6
  60. package/dist/vtc/members/personhood/assert/0.1/payload.js.map +1 -1
  61. package/dist/vtc/members/personhood/revoke/0.1/payload.d.ts +10 -10
  62. package/dist/vtc/members/personhood/revoke/0.1/payload.js +4 -4
  63. package/dist/vtc/members/personhood/revoke/0.1/payload.js.map +1 -1
  64. package/dist/vtc/members/renew/0.1/payload.d.ts +14 -14
  65. package/dist/vtc/members/renew/0.1/payload.js +6 -6
  66. package/dist/vtc/members/renew/0.1/payload.js.map +1 -1
  67. package/dist/vtc/members/rotate/0.1/payload.d.ts +14 -14
  68. package/dist/vtc/members/rotate/0.1/payload.js +6 -6
  69. package/dist/vtc/members/rotate/0.1/payload.js.map +1 -1
  70. package/dist/vtc/members/show/0.1/payload.d.ts +8 -8
  71. package/dist/vtc/members/show/0.1/payload.js +4 -4
  72. package/dist/vtc/members/show/0.1/payload.js.map +1 -1
  73. package/dist/vtc/members/update/0.1/payload.d.ts +8 -8
  74. package/dist/vtc/members/update/0.1/payload.js +4 -4
  75. package/dist/vtc/members/update/0.1/payload.js.map +1 -1
  76. package/dist/vtc/schemas/accepts/list/0.1/payload.d.ts +8 -8
  77. package/dist/vtc/schemas/accepts/list/0.1/payload.js +4 -4
  78. package/dist/vtc/schemas/accepts/list/0.1/payload.js.map +1 -1
  79. package/dist/vtc/schemas/accepts/register/0.1/payload.d.ts +8 -8
  80. package/dist/vtc/schemas/accepts/register/0.1/payload.js +4 -4
  81. package/dist/vtc/schemas/accepts/register/0.1/payload.js.map +1 -1
  82. package/dist/vtc/schemas/accepts/show/0.1/payload.d.ts +8 -8
  83. package/dist/vtc/schemas/accepts/show/0.1/payload.js +4 -4
  84. package/dist/vtc/schemas/accepts/show/0.1/payload.js.map +1 -1
  85. package/dist/vtc/schemas/list/0.1/payload.d.ts +4 -4
  86. package/dist/vtc/schemas/list/0.1/payload.js +2 -2
  87. package/dist/vtc/schemas/list/0.1/payload.js.map +1 -1
  88. package/dist/vtc/schemas/register/0.1/payload.d.ts +4 -4
  89. package/dist/vtc/schemas/register/0.1/payload.js +2 -2
  90. package/dist/vtc/schemas/register/0.1/payload.js.map +1 -1
  91. package/dist/vtc/schemas/show/0.1/payload.d.ts +4 -4
  92. package/dist/vtc/schemas/show/0.1/payload.js +2 -2
  93. package/dist/vtc/schemas/show/0.1/payload.js.map +1 -1
  94. package/dist/vtc/vetting/vetters/grant/0.1/payload.d.ts +13 -13
  95. package/dist/vtc/vetting/vetters/grant/0.1/payload.js +5 -5
  96. package/dist/vtc/vetting/vetters/grant/0.1/payload.js.map +1 -1
  97. package/dist/witness/session/submit/0.1/payload.d.ts +5 -5
  98. package/dist/witness/session/submit/0.1/payload.js +2 -2
  99. package/dist/witness/session/submit/0.1/payload.js.map +1 -1
  100. package/package.json +1 -1
  101. package/src/_shared/components.ts +15 -15
  102. package/src/vetting/_shared/0.1/identity-vetting.ts +2 -2
  103. package/src/vetting/_shared/0.1/vetting-card.ts +1 -1
  104. package/src/vetting/_shared/0.1/vetting.ts +1 -1
  105. package/src/vetting/request/0.1/payload.ts +3 -3
  106. package/src/vtc/_shared/0.1/endorsement-type.ts +1 -1
  107. package/src/vtc/_shared/0.1/endorsement.ts +1 -1
  108. package/src/vtc/auth/recognise/0.2/payload.ts +2 -2
  109. package/src/vtc/community/profile/show/0.1/payload.ts +2 -2
  110. package/src/vtc/community/profile/update/0.1/payload.ts +2 -2
  111. package/src/vtc/config/export/0.1/payload.ts +2 -2
  112. package/src/vtc/config/import/0.1/payload.ts +2 -2
  113. package/src/vtc/endorsement-types/list/0.1/payload.ts +4 -4
  114. package/src/vtc/endorsement-types/register/0.1/payload.ts +11 -7
  115. package/src/vtc/endorsements/issue/0.1/payload.ts +23 -23
  116. package/src/vtc/endorsements/list/0.1/payload.ts +16 -16
  117. package/src/vtc/endorsements/revoke/0.1/payload.ts +3 -3
  118. package/src/vtc/endorsements/show/0.1/payload.ts +14 -14
  119. package/src/vtc/join-requests/decide/0.1/payload.ts +6 -6
  120. package/src/vtc/join-requests/manifest/0.2/payload.ts +6 -6
  121. package/src/vtc/members/credentials/0.1/payload.ts +3 -3
  122. package/src/vtc/members/list/0.1/payload.ts +4 -4
  123. package/src/vtc/members/personhood/assert/0.1/payload.ts +8 -8
  124. package/src/vtc/members/personhood/revoke/0.1/payload.ts +6 -6
  125. package/src/vtc/members/renew/0.1/payload.ts +8 -8
  126. package/src/vtc/members/rotate/0.1/payload.ts +8 -8
  127. package/src/vtc/members/show/0.1/payload.ts +4 -4
  128. package/src/vtc/members/update/0.1/payload.ts +4 -4
  129. package/src/vtc/schemas/accepts/list/0.1/payload.ts +4 -4
  130. package/src/vtc/schemas/accepts/register/0.1/payload.ts +4 -4
  131. package/src/vtc/schemas/accepts/show/0.1/payload.ts +4 -4
  132. package/src/vtc/schemas/list/0.1/payload.ts +2 -2
  133. package/src/vtc/schemas/register/0.1/payload.ts +2 -2
  134. package/src/vtc/schemas/show/0.1/payload.ts +2 -2
  135. package/src/vtc/vetting/vetters/grant/0.1/payload.ts +8 -8
  136. package/src/witness/session/submit/0.1/payload.ts +3 -3
@@ -8,7 +8,7 @@ import type { Ext } from "../../../../_shared/components.js";
8
8
 
9
9
  export interface VTCAuthRecognisePayload {
10
10
  /**
11
- * A holder-signed W3C Verifiable Presentation embedding the foreign membership and endorsement credentials in `verifiableCredential`.
11
+ * A holder-signed W3C Verifiable Presentation embedding the foreign membership credential (`MembershipCredential`) and role credential (a Verifiable Authority Credential, `AuthorityCredential`, conferring `role:<name>` at the foreign community's DID) in `verifiableCredential`.
12
12
  *
13
13
  * The holder proof MUST use `proofPurpose: authentication`, MUST commit to the single-use `nonce` issued by `vtc/auth/recognise/challenge`, and MUST name the recognising community's DID as `domain`. A consumer MUST verify the holder proof, verify each embedded credential's issuer proof, and refuse unless the presentation's holder is the credentials' subject.
14
14
  */
@@ -71,7 +71,7 @@ export const PAYLOAD_SCHEMA = {
71
71
  "properties": {
72
72
  "presentation": {
73
73
  "type": "object",
74
- "description": "A holder-signed W3C Verifiable Presentation embedding the foreign membership and endorsement credentials in `verifiableCredential`.\n\nThe holder proof MUST use `proofPurpose: authentication`, MUST commit to the single-use `nonce` issued by `vtc/auth/recognise/challenge`, and MUST name the recognising community's DID as `domain`. A consumer MUST verify the holder proof, verify each embedded credential's issuer proof, and refuse unless the presentation's holder is the credentials' subject."
74
+ "description": "A holder-signed W3C Verifiable Presentation embedding the foreign membership credential (`MembershipCredential`) and role credential (a Verifiable Authority Credential, `AuthorityCredential`, conferring `role:<name>` at the foreign community's DID) in `verifiableCredential`.\n\nThe holder proof MUST use `proofPurpose: authentication`, MUST commit to the single-use `nonce` issued by `vtc/auth/recognise/challenge`, and MUST name the recognising community's DID as `domain`. A consumer MUST verify the holder proof, verify each embedded credential's issuer proof, and refuse unless the presentation's holder is the credentials' subject."
75
75
  },
76
76
  "ext": {
77
77
  "$ref": "#/$defs/Ext"
@@ -181,7 +181,7 @@ export const PAYLOAD_SCHEMA = {
181
181
  "type": "string",
182
182
  "minLength": 1
183
183
  },
184
- "description": "DIDs of the identity-verification providers whose credentials this community accepts as personhood evidence. A community that vets its own members in person lists its own community DID here — it is acting as its own IDVP, which §IDVC permits. An empty list means no list has been published, not that everything is accepted."
184
+ "description": "DIDs of the identity-verification providers whose credentials this community accepts as personhood evidence. A community that vets its own members in person lists its own community DID here — it is acting as its own IDVP, which §IDVC permits — and issues the evidence as an `IdentityVerificationCredential` (a plain W3C VC, not a DTGCredential) through vtc/endorsements/issue. An empty list means no list has been published, not that everything is accepted."
185
185
  },
186
186
  "governanceFrameworkUrl": {
187
187
  "type": [
@@ -328,7 +328,7 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
328
328
  "type": "string",
329
329
  "minLength": 1
330
330
  },
331
- "description": "DIDs of the identity-verification providers whose credentials this community accepts as personhood evidence. A community that vets its own members in person lists its own community DID here — it is acting as its own IDVP, which §IDVC permits. An empty list means no list has been published, not that everything is accepted."
331
+ "description": "DIDs of the identity-verification providers whose credentials this community accepts as personhood evidence. A community that vets its own members in person lists its own community DID here — it is acting as its own IDVP, which §IDVC permits — and issues the evidence as an `IdentityVerificationCredential` (a plain W3C VC, not a DTGCredential) through vtc/endorsements/issue. An empty list means no list has been published, not that everything is accepted."
332
332
  },
333
333
  "governanceFrameworkUrl": {
334
334
  "type": [
@@ -257,7 +257,7 @@ export const PAYLOAD_SCHEMA = {
257
257
  "type": "string",
258
258
  "minLength": 1
259
259
  },
260
- "description": "DIDs of the identity-verification providers whose credentials this community accepts as personhood evidence. A community that vets its own members in person lists its own community DID here — it is acting as its own IDVP, which §IDVC permits. An empty list means no list has been published, not that everything is accepted."
260
+ "description": "DIDs of the identity-verification providers whose credentials this community accepts as personhood evidence. A community that vets its own members in person lists its own community DID here — it is acting as its own IDVP, which §IDVC permits — and issues the evidence as an `IdentityVerificationCredential` (a plain W3C VC, not a DTGCredential) through vtc/endorsements/issue. An empty list means no list has been published, not that everything is accepted."
261
261
  },
262
262
  "governanceFrameworkUrl": {
263
263
  "type": [
@@ -411,7 +411,7 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
411
411
  "type": "string",
412
412
  "minLength": 1
413
413
  },
414
- "description": "DIDs of the identity-verification providers whose credentials this community accepts as personhood evidence. A community that vets its own members in person lists its own community DID here — it is acting as its own IDVP, which §IDVC permits. An empty list means no list has been published, not that everything is accepted."
414
+ "description": "DIDs of the identity-verification providers whose credentials this community accepts as personhood evidence. A community that vets its own members in person lists its own community DID here — it is acting as its own IDVP, which §IDVC permits — and issues the evidence as an `IdentityVerificationCredential` (a plain W3C VC, not a DTGCredential) through vtc/endorsements/issue. An empty list means no list has been published, not that everything is accepted."
415
415
  },
416
416
  "governanceFrameworkUrl": {
417
417
  "type": [
@@ -214,7 +214,7 @@ export const PAYLOAD_SCHEMA = {
214
214
  "type": "string",
215
215
  "minLength": 1
216
216
  },
217
- "description": "DIDs of the identity-verification providers whose credentials this community accepts as personhood evidence. A community that vets its own members in person lists its own community DID here — it is acting as its own IDVP, which §IDVC permits. An empty list means no list has been published, not that everything is accepted."
217
+ "description": "DIDs of the identity-verification providers whose credentials this community accepts as personhood evidence. A community that vets its own members in person lists its own community DID here — it is acting as its own IDVP, which §IDVC permits — and issues the evidence as an `IdentityVerificationCredential` (a plain W3C VC, not a DTGCredential) through vtc/endorsements/issue. An empty list means no list has been published, not that everything is accepted."
218
218
  },
219
219
  "governanceFrameworkUrl": {
220
220
  "type": [
@@ -390,7 +390,7 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
390
390
  "type": "string",
391
391
  "minLength": 1
392
392
  },
393
- "description": "DIDs of the identity-verification providers whose credentials this community accepts as personhood evidence. A community that vets its own members in person lists its own community DID here — it is acting as its own IDVP, which §IDVC permits. An empty list means no list has been published, not that everything is accepted."
393
+ "description": "DIDs of the identity-verification providers whose credentials this community accepts as personhood evidence. A community that vets its own members in person lists its own community DID here — it is acting as its own IDVP, which §IDVC permits — and issues the evidence as an `IdentityVerificationCredential` (a plain W3C VC, not a DTGCredential) through vtc/endorsements/issue. An empty list means no list has been published, not that everything is accepted."
394
394
  },
395
395
  "governanceFrameworkUrl": {
396
396
  "type": [
@@ -333,7 +333,7 @@ export const PAYLOAD_SCHEMA = {
333
333
  "type": "string",
334
334
  "minLength": 1
335
335
  },
336
- "description": "DIDs of the identity-verification providers whose credentials this community accepts as personhood evidence. A community that vets its own members in person lists its own community DID here — it is acting as its own IDVP, which §IDVC permits. An empty list means no list has been published, not that everything is accepted."
336
+ "description": "DIDs of the identity-verification providers whose credentials this community accepts as personhood evidence. A community that vets its own members in person lists its own community DID here — it is acting as its own IDVP, which §IDVC permits — and issues the evidence as an `IdentityVerificationCredential` (a plain W3C VC, not a DTGCredential) through vtc/endorsements/issue. An empty list means no list has been published, not that everything is accepted."
337
337
  },
338
338
  "governanceFrameworkUrl": {
339
339
  "type": [
@@ -592,7 +592,7 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
592
592
  "type": "string",
593
593
  "minLength": 1
594
594
  },
595
- "description": "DIDs of the identity-verification providers whose credentials this community accepts as personhood evidence. A community that vets its own members in person lists its own community DID here — it is acting as its own IDVP, which §IDVC permits. An empty list means no list has been published, not that everything is accepted."
595
+ "description": "DIDs of the identity-verification providers whose credentials this community accepts as personhood evidence. A community that vets its own members in person lists its own community DID here — it is acting as its own IDVP, which §IDVC permits — and issues the evidence as an `IdentityVerificationCredential` (a plain W3C VC, not a DTGCredential) through vtc/endorsements/issue. An empty list means no list has been published, not that everything is accepted."
596
596
  },
597
597
  "governanceFrameworkUrl": {
598
598
  "type": [
@@ -110,7 +110,7 @@ export const PAYLOAD_SCHEMA = {
110
110
  "type": "string",
111
111
  "minLength": 1,
112
112
  "maxLength": 512,
113
- "description": "The endorsement type's URI. Community-scoped; workspace-reserved URIs (e.g. CommunityRole) are refused at registration."
113
+ "description": "The predicate IRI the community accepts, compared as an exact string. Always an absolute IRI: a DTG VSC predicate registry IRI (e.g. `https://registry.trustoverip.org/dtg/vsc/vetted/1`) or a community-namespace IRI defined in the registry's predicate definition format. The four core predicates — endorses/1, witnessed/1, vetted/1 and presented/1 under `https://registry.trustoverip.org/dtg/vsc/` — are seeded when the community starts. The reserved values `IdentityVerificationCredential` and `role:vetter`, which name the other kinds of record vtc/endorsements/* keeps, are never registered."
114
114
  },
115
115
  "description": {
116
116
  "type": "string",
@@ -118,7 +118,7 @@ export const PAYLOAD_SCHEMA = {
118
118
  },
119
119
  "claimSchema": {
120
120
  "type": "object",
121
- "description": "Optional JSON Schema the endorsement's claims must satisfy (opaque here)."
121
+ "description": "Optional JSON Schema a statement's `credentialSubject.object.value` must satisfy (opaque here) — for a registry predicate, the object schema its profile publishes."
122
122
  },
123
123
  "createdAt": {
124
124
  "type": "string",
@@ -187,7 +187,7 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
187
187
  "type": "string",
188
188
  "minLength": 1,
189
189
  "maxLength": 512,
190
- "description": "The endorsement type's URI. Community-scoped; workspace-reserved URIs (e.g. CommunityRole) are refused at registration."
190
+ "description": "The predicate IRI the community accepts, compared as an exact string. Always an absolute IRI: a DTG VSC predicate registry IRI (e.g. `https://registry.trustoverip.org/dtg/vsc/vetted/1`) or a community-namespace IRI defined in the registry's predicate definition format. The four core predicates — endorses/1, witnessed/1, vetted/1 and presented/1 under `https://registry.trustoverip.org/dtg/vsc/` — are seeded when the community starts. The reserved values `IdentityVerificationCredential` and `role:vetter`, which name the other kinds of record vtc/endorsements/* keeps, are never registered."
191
191
  },
192
192
  "description": {
193
193
  "type": "string",
@@ -195,7 +195,7 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
195
195
  },
196
196
  "claimSchema": {
197
197
  "type": "object",
198
- "description": "Optional JSON Schema the endorsement's claims must satisfy (opaque here)."
198
+ "description": "Optional JSON Schema a statement's `credentialSubject.object.value` must satisfy (opaque here) — for a registry predicate, the object schema its profile publishes."
199
199
  },
200
200
  "createdAt": {
201
201
  "type": "string",
@@ -7,10 +7,13 @@ import type { EndorsementType, Ext } from "../../../../_shared/components.js";
7
7
 
8
8
 
9
9
  export interface VTCEndorsementTypesRegisterPayload {
10
+ /**
11
+ * The predicate IRI to accept, an absolute IRI: a DTG VSC predicate registry IRI or a community-namespace IRI. The reserved values `IdentityVerificationCredential` and `role:vetter` are refused with `reserved`, and a value that is not an absolute IRI with `invalidUri`.
12
+ */
10
13
  typeUri: string;
11
14
  description?: string;
12
15
  /**
13
- * Optional JSON Schema the endorsement's claims must satisfy (opaque here).
16
+ * Optional JSON Schema a statement's `credentialSubject.object.value` must satisfy (opaque here).
14
17
  */
15
18
  claimSchema?: {};
16
19
  ext?: Ext;
@@ -57,7 +60,8 @@ export const PAYLOAD_SCHEMA = {
57
60
  "typeUri": {
58
61
  "type": "string",
59
62
  "minLength": 1,
60
- "maxLength": 512
63
+ "maxLength": 512,
64
+ "description": "The predicate IRI to accept, an absolute IRI: a DTG VSC predicate registry IRI or a community-namespace IRI. The reserved values `IdentityVerificationCredential` and `role:vetter` are refused with `reserved`, and a value that is not an absolute IRI with `invalidUri`."
61
65
  },
62
66
  "description": {
63
67
  "type": "string",
@@ -65,7 +69,7 @@ export const PAYLOAD_SCHEMA = {
65
69
  },
66
70
  "claimSchema": {
67
71
  "type": "object",
68
- "description": "Optional JSON Schema the endorsement's claims must satisfy (opaque here)."
72
+ "description": "Optional JSON Schema a statement's `credentialSubject.object.value` must satisfy (opaque here)."
69
73
  },
70
74
  "ext": {
71
75
  "$ref": "#/$defs/Ext"
@@ -112,7 +116,7 @@ export const PAYLOAD_SCHEMA = {
112
116
  "type": "string",
113
117
  "minLength": 1,
114
118
  "maxLength": 512,
115
- "description": "The endorsement type's URI. Community-scoped; workspace-reserved URIs (e.g. CommunityRole) are refused at registration."
119
+ "description": "The predicate IRI the community accepts, compared as an exact string. Always an absolute IRI: a DTG VSC predicate registry IRI (e.g. `https://registry.trustoverip.org/dtg/vsc/vetted/1`) or a community-namespace IRI defined in the registry's predicate definition format. The four core predicates — endorses/1, witnessed/1, vetted/1 and presented/1 under `https://registry.trustoverip.org/dtg/vsc/` — are seeded when the community starts. The reserved values `IdentityVerificationCredential` and `role:vetter`, which name the other kinds of record vtc/endorsements/* keeps, are never registered."
116
120
  },
117
121
  "description": {
118
122
  "type": "string",
@@ -120,7 +124,7 @@ export const PAYLOAD_SCHEMA = {
120
124
  },
121
125
  "claimSchema": {
122
126
  "type": "object",
123
- "description": "Optional JSON Schema the endorsement's claims must satisfy (opaque here)."
127
+ "description": "Optional JSON Schema a statement's `credentialSubject.object.value` must satisfy (opaque here) — for a registry predicate, the object schema its profile publishes."
124
128
  },
125
129
  "createdAt": {
126
130
  "type": "string",
@@ -180,7 +184,7 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
180
184
  "type": "string",
181
185
  "minLength": 1,
182
186
  "maxLength": 512,
183
- "description": "The endorsement type's URI. Community-scoped; workspace-reserved URIs (e.g. CommunityRole) are refused at registration."
187
+ "description": "The predicate IRI the community accepts, compared as an exact string. Always an absolute IRI: a DTG VSC predicate registry IRI (e.g. `https://registry.trustoverip.org/dtg/vsc/vetted/1`) or a community-namespace IRI defined in the registry's predicate definition format. The four core predicates — endorses/1, witnessed/1, vetted/1 and presented/1 under `https://registry.trustoverip.org/dtg/vsc/` — are seeded when the community starts. The reserved values `IdentityVerificationCredential` and `role:vetter`, which name the other kinds of record vtc/endorsements/* keeps, are never registered."
184
188
  },
185
189
  "description": {
186
190
  "type": "string",
@@ -188,7 +192,7 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
188
192
  },
189
193
  "claimSchema": {
190
194
  "type": "object",
191
- "description": "Optional JSON Schema the endorsement's claims must satisfy (opaque here)."
195
+ "description": "Optional JSON Schema a statement's `credentialSubject.object.value` must satisfy (opaque here) — for a registry predicate, the object schema its profile publishes."
192
196
  },
193
197
  "createdAt": {
194
198
  "type": "string",
@@ -8,15 +8,15 @@ import type { CredentialId, CredentialReference, Endorsement, Ext } from "../../
8
8
 
9
9
  export interface VTCEndorsementsIssuePayload {
10
10
  /**
11
- * DID of the endorsement's subject (becomes credentialSubject.id).
11
+ * DID of the statement's subject (becomes credentialSubject.id).
12
12
  */
13
13
  subjectDid: string;
14
14
  /**
15
- * A type already registered via vtc/endorsement-types/register; unregistered types are refused.
15
+ * The predicate IRI the statement carries as `credentialSubject.predicate` — `https://registry.trustoverip.org/dtg/vsc/endorses/1` for a favourable claim with community-defined content, or another predicate the community registered. It MUST already be registered via vtc/endorsement-types/register; unregistered predicates are refused. The one non-IRI value accepted is the reserved `IdentityVerificationCredential`, which mints the community's identity-verification credential instead of a statement.
16
16
  */
17
17
  typeUri: string;
18
18
  /**
19
- * The claim body to attest. Capped at 8 KiB serialised, and validated against the type's claimSchema when it declares one.
19
+ * The claim body to attest, issued as the statement's `credentialSubject.object.value` — or, for `IdentityVerificationCredential`, as members of `credentialSubject` beside `id`, in which case it MUST NOT itself carry `id`. Capped at 8 KiB serialised, and validated against the registered predicate's claimSchema when it declares one.
20
20
  */
21
21
  claim: {};
22
22
  /**
@@ -28,7 +28,7 @@ export interface VTCEndorsementsIssuePayload {
28
28
  export interface VTCEndorsementsIssueResponsePayload {
29
29
  endorsement: Endorsement;
30
30
  /**
31
- * The signed VEC just minted. Present only here: handing back the credential is the point of an issue call, and the issuer is the only party that can. Reads carry `endorsement.issued` — the reference — instead.
31
+ * The signed credential just minted. For `IdentityVerificationCredential`, a plain W3C VC — `@context` [credentials/v2] only, `type` [VerifiableCredential, IdentityVerificationCredential], not a DTGCredential — issued by the community to `subjectDid` with a revocation `credentialStatus`. Otherwise a DTG Verifiable Statement Credential (`StatementCredential`) issued by the community with `issuerScope` public, `credentialSubject.predicate` = `typeUri` and `credentialSubject.object.value` = `claim`. Present only here: handing back the credential is the point of an issue call, and the issuer is the only party that can. Reads carry `endorsement.issued` — the reference — instead.
32
32
  */
33
33
  credential: {};
34
34
  ext?: Ext;
@@ -73,18 +73,18 @@ export const PAYLOAD_SCHEMA = {
73
73
  "subjectDid": {
74
74
  "type": "string",
75
75
  "pattern": "^did:",
76
- "description": "DID of the endorsement's subject (becomes credentialSubject.id)."
76
+ "description": "DID of the statement's subject (becomes credentialSubject.id)."
77
77
  },
78
78
  "typeUri": {
79
79
  "type": "string",
80
80
  "minLength": 1,
81
81
  "maxLength": 512,
82
- "description": "A type already registered via vtc/endorsement-types/register; unregistered types are refused."
82
+ "description": "The predicate IRI the statement carries as `credentialSubject.predicate` — `https://registry.trustoverip.org/dtg/vsc/endorses/1` for a favourable claim with community-defined content, or another predicate the community registered. It MUST already be registered via vtc/endorsement-types/register; unregistered predicates are refused. The one non-IRI value accepted is the reserved `IdentityVerificationCredential`, which mints the community's identity-verification credential instead of a statement."
83
83
  },
84
84
  "claim": {
85
85
  "type": "object",
86
86
  "minProperties": 1,
87
- "description": "The claim body to attest. Capped at 8 KiB serialised, and validated against the type's claimSchema when it declares one."
87
+ "description": "The claim body to attest, issued as the statement's `credentialSubject.object.value` — or, for `IdentityVerificationCredential`, as members of `credentialSubject` beside `id`, in which case it MUST NOT itself carry `id`. Capped at 8 KiB serialised, and validated against the registered predicate's claimSchema when it declares one."
88
88
  },
89
89
  "validitySeconds": {
90
90
  "type": "integer",
@@ -111,7 +111,7 @@ export const PAYLOAD_SCHEMA = {
111
111
  },
112
112
  "credential": {
113
113
  "type": "object",
114
- "description": "The signed VEC just minted. Present only here: handing back the credential is the point of an issue call, and the issuer is the only party that can. Reads carry `endorsement.issued` — the reference — instead."
114
+ "description": "The signed credential just minted. For `IdentityVerificationCredential`, a plain W3C VC — `@context` [credentials/v2] only, `type` [VerifiableCredential, IdentityVerificationCredential], not a DTGCredential — issued by the community to `subjectDid` with a revocation `credentialStatus`. Otherwise a DTG Verifiable Statement Credential (`StatementCredential`) issued by the community with `issuerScope` public, `credentialSubject.predicate` = `typeUri` and `credentialSubject.object.value` = `claim`. Present only here: handing back the credential is the point of an issue call, and the issuer is the only party that can. Reads carry `endorsement.issued` — the reference — instead."
115
115
  },
116
116
  "ext": {
117
117
  "$ref": "#/$defs/Ext"
@@ -144,31 +144,31 @@ export const PAYLOAD_SCHEMA = {
144
144
  "endorsementId": {
145
145
  "type": "string",
146
146
  "minLength": 1,
147
- "description": "Community-scoped identifier for this endorsement row."
147
+ "description": "Community-scoped identifier for this row. The name is legacy; it identifies a statement, and vtc/endorsements/revoke also takes the `endorsementId` of a role credential issued by vtc/vetting/vetters/grant."
148
148
  },
149
149
  "typeUri": {
150
150
  "type": "string",
151
151
  "minLength": 1,
152
152
  "maxLength": 512,
153
- "description": "The registered endorsement type this VEC asserts; see vtc/endorsement-types/*."
153
+ "description": "What the row records. A registered predicate IRI: a statement (StatementCredential) whose `credentialSubject.predicate` it is — see vtc/endorsement-types/*. `role:vetter`: a vetter role credential (Verifiable Authority Credential) issued by vtc/vetting/vetters/grant. `IdentityVerificationCredential`: the community's identity-verification credential, a plain W3C VC (not a DTGCredential). The two reserved values are not IRIs, so they never collide with a registered predicate."
154
154
  },
155
155
  "subjectDid": {
156
156
  "type": "string",
157
157
  "pattern": "^did:",
158
- "description": "DID of the endorsement's subject (becomes credentialSubject.id)."
158
+ "description": "DID of the statement's subject (becomes credentialSubject.id)."
159
159
  },
160
160
  "claim": {
161
161
  "type": "object",
162
- "description": "The attested claim body, validated against the endorsement type's claimSchema when it declares one."
162
+ "description": "The attested claim body — the statement's `credentialSubject.object.value` — validated against the registered predicate's claimSchema when it declares one."
163
163
  },
164
164
  "issued": {
165
165
  "$ref": "#/$defs/CredentialReference",
166
- "description": "A pointer to the issued VEC — its identifier and lifetime, not its bytes. `endorsements/issue` additionally returns the credential itself, because that is the one call whose caller has no other way to receive it."
166
+ "description": "A pointer to the issued statement credential — its identifier and lifetime, not its bytes. `endorsements/issue` additionally returns the credential itself, because that is the one call whose caller has no other way to receive it."
167
167
  },
168
168
  "statusListIndex": {
169
169
  "type": "integer",
170
170
  "minimum": 0,
171
- "description": "The endorsement's slot on the community's shared Revocation status list. Published, so a foreign verifier can check revocation without contacting this community."
171
+ "description": "The statement's slot on the community's shared Revocation status list, referenced by its `credentialStatus`. Published, so a foreign verifier can check revocation without contacting this community."
172
172
  },
173
173
  "revokedAt": {
174
174
  "type": [
@@ -176,7 +176,7 @@ export const PAYLOAD_SCHEMA = {
176
176
  "null"
177
177
  ],
178
178
  "format": "date-time",
179
- "description": "When the endorsement was revoked, or null while live."
179
+ "description": "When the statement was revoked, or null while live."
180
180
  }
181
181
  }
182
182
  },
@@ -238,7 +238,7 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
238
238
  },
239
239
  "credential": {
240
240
  "type": "object",
241
- "description": "The signed VEC just minted. Present only here: handing back the credential is the point of an issue call, and the issuer is the only party that can. Reads carry `endorsement.issued` — the reference — instead."
241
+ "description": "The signed credential just minted. For `IdentityVerificationCredential`, a plain W3C VC — `@context` [credentials/v2] only, `type` [VerifiableCredential, IdentityVerificationCredential], not a DTGCredential — issued by the community to `subjectDid` with a revocation `credentialStatus`. Otherwise a DTG Verifiable Statement Credential (`StatementCredential`) issued by the community with `issuerScope` public, `credentialSubject.predicate` = `typeUri` and `credentialSubject.object.value` = `claim`. Present only here: handing back the credential is the point of an issue call, and the issuer is the only party that can. Reads carry `endorsement.issued` — the reference — instead."
242
242
  },
243
243
  "ext": {
244
244
  "$ref": "#/$defs/Ext"
@@ -271,31 +271,31 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
271
271
  "endorsementId": {
272
272
  "type": "string",
273
273
  "minLength": 1,
274
- "description": "Community-scoped identifier for this endorsement row."
274
+ "description": "Community-scoped identifier for this row. The name is legacy; it identifies a statement, and vtc/endorsements/revoke also takes the `endorsementId` of a role credential issued by vtc/vetting/vetters/grant."
275
275
  },
276
276
  "typeUri": {
277
277
  "type": "string",
278
278
  "minLength": 1,
279
279
  "maxLength": 512,
280
- "description": "The registered endorsement type this VEC asserts; see vtc/endorsement-types/*."
280
+ "description": "What the row records. A registered predicate IRI: a statement (StatementCredential) whose `credentialSubject.predicate` it is — see vtc/endorsement-types/*. `role:vetter`: a vetter role credential (Verifiable Authority Credential) issued by vtc/vetting/vetters/grant. `IdentityVerificationCredential`: the community's identity-verification credential, a plain W3C VC (not a DTGCredential). The two reserved values are not IRIs, so they never collide with a registered predicate."
281
281
  },
282
282
  "subjectDid": {
283
283
  "type": "string",
284
284
  "pattern": "^did:",
285
- "description": "DID of the endorsement's subject (becomes credentialSubject.id)."
285
+ "description": "DID of the statement's subject (becomes credentialSubject.id)."
286
286
  },
287
287
  "claim": {
288
288
  "type": "object",
289
- "description": "The attested claim body, validated against the endorsement type's claimSchema when it declares one."
289
+ "description": "The attested claim body — the statement's `credentialSubject.object.value` — validated against the registered predicate's claimSchema when it declares one."
290
290
  },
291
291
  "issued": {
292
292
  "$ref": "#/$defs/CredentialReference",
293
- "description": "A pointer to the issued VEC — its identifier and lifetime, not its bytes. `endorsements/issue` additionally returns the credential itself, because that is the one call whose caller has no other way to receive it."
293
+ "description": "A pointer to the issued statement credential — its identifier and lifetime, not its bytes. `endorsements/issue` additionally returns the credential itself, because that is the one call whose caller has no other way to receive it."
294
294
  },
295
295
  "statusListIndex": {
296
296
  "type": "integer",
297
297
  "minimum": 0,
298
- "description": "The endorsement's slot on the community's shared Revocation status list. Published, so a foreign verifier can check revocation without contacting this community."
298
+ "description": "The statement's slot on the community's shared Revocation status list, referenced by its `credentialStatus`. Published, so a foreign verifier can check revocation without contacting this community."
299
299
  },
300
300
  "revokedAt": {
301
301
  "type": [
@@ -303,7 +303,7 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
303
303
  "null"
304
304
  ],
305
305
  "format": "date-time",
306
- "description": "When the endorsement was revoked, or null while live."
306
+ "description": "When the statement was revoked, or null while live."
307
307
  }
308
308
  }
309
309
  },
@@ -8,7 +8,7 @@ import type { CredentialId, CredentialReference, Endorsement, Ext } from "../../
8
8
 
9
9
  export interface VTCEndorsementsListPayload {
10
10
  /**
11
- * Filter to endorsements of this registered type.
11
+ * Filter to rows of this kind: a registered predicate IRI (statements whose `credentialSubject.predicate` it is), `IdentityVerificationCredential`, or `role:vetter`.
12
12
  */
13
13
  typeUri?: string;
14
14
  /**
@@ -77,7 +77,7 @@ export const PAYLOAD_SCHEMA = {
77
77
  "type": "string",
78
78
  "minLength": 1,
79
79
  "maxLength": 512,
80
- "description": "Filter to endorsements of this registered type."
80
+ "description": "Filter to rows of this kind: a registered predicate IRI (statements whose `credentialSubject.predicate` it is), `IdentityVerificationCredential`, or `role:vetter`."
81
81
  },
82
82
  "subjectDid": {
83
83
  "type": "string",
@@ -163,31 +163,31 @@ export const PAYLOAD_SCHEMA = {
163
163
  "endorsementId": {
164
164
  "type": "string",
165
165
  "minLength": 1,
166
- "description": "Community-scoped identifier for this endorsement row."
166
+ "description": "Community-scoped identifier for this row. The name is legacy; it identifies a statement, and vtc/endorsements/revoke also takes the `endorsementId` of a role credential issued by vtc/vetting/vetters/grant."
167
167
  },
168
168
  "typeUri": {
169
169
  "type": "string",
170
170
  "minLength": 1,
171
171
  "maxLength": 512,
172
- "description": "The registered endorsement type this VEC asserts; see vtc/endorsement-types/*."
172
+ "description": "What the row records. A registered predicate IRI: a statement (StatementCredential) whose `credentialSubject.predicate` it is — see vtc/endorsement-types/*. `role:vetter`: a vetter role credential (Verifiable Authority Credential) issued by vtc/vetting/vetters/grant. `IdentityVerificationCredential`: the community's identity-verification credential, a plain W3C VC (not a DTGCredential). The two reserved values are not IRIs, so they never collide with a registered predicate."
173
173
  },
174
174
  "subjectDid": {
175
175
  "type": "string",
176
176
  "pattern": "^did:",
177
- "description": "DID of the endorsement's subject (becomes credentialSubject.id)."
177
+ "description": "DID of the statement's subject (becomes credentialSubject.id)."
178
178
  },
179
179
  "claim": {
180
180
  "type": "object",
181
- "description": "The attested claim body, validated against the endorsement type's claimSchema when it declares one."
181
+ "description": "The attested claim body — the statement's `credentialSubject.object.value` — validated against the registered predicate's claimSchema when it declares one."
182
182
  },
183
183
  "issued": {
184
184
  "$ref": "#/$defs/CredentialReference",
185
- "description": "A pointer to the issued VEC — its identifier and lifetime, not its bytes. `endorsements/issue` additionally returns the credential itself, because that is the one call whose caller has no other way to receive it."
185
+ "description": "A pointer to the issued statement credential — its identifier and lifetime, not its bytes. `endorsements/issue` additionally returns the credential itself, because that is the one call whose caller has no other way to receive it."
186
186
  },
187
187
  "statusListIndex": {
188
188
  "type": "integer",
189
189
  "minimum": 0,
190
- "description": "The endorsement's slot on the community's shared Revocation status list. Published, so a foreign verifier can check revocation without contacting this community."
190
+ "description": "The statement's slot on the community's shared Revocation status list, referenced by its `credentialStatus`. Published, so a foreign verifier can check revocation without contacting this community."
191
191
  },
192
192
  "revokedAt": {
193
193
  "type": [
@@ -195,7 +195,7 @@ export const PAYLOAD_SCHEMA = {
195
195
  "null"
196
196
  ],
197
197
  "format": "date-time",
198
- "description": "When the endorsement was revoked, or null while live."
198
+ "description": "When the statement was revoked, or null while live."
199
199
  }
200
200
  }
201
201
  },
@@ -302,31 +302,31 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
302
302
  "endorsementId": {
303
303
  "type": "string",
304
304
  "minLength": 1,
305
- "description": "Community-scoped identifier for this endorsement row."
305
+ "description": "Community-scoped identifier for this row. The name is legacy; it identifies a statement, and vtc/endorsements/revoke also takes the `endorsementId` of a role credential issued by vtc/vetting/vetters/grant."
306
306
  },
307
307
  "typeUri": {
308
308
  "type": "string",
309
309
  "minLength": 1,
310
310
  "maxLength": 512,
311
- "description": "The registered endorsement type this VEC asserts; see vtc/endorsement-types/*."
311
+ "description": "What the row records. A registered predicate IRI: a statement (StatementCredential) whose `credentialSubject.predicate` it is — see vtc/endorsement-types/*. `role:vetter`: a vetter role credential (Verifiable Authority Credential) issued by vtc/vetting/vetters/grant. `IdentityVerificationCredential`: the community's identity-verification credential, a plain W3C VC (not a DTGCredential). The two reserved values are not IRIs, so they never collide with a registered predicate."
312
312
  },
313
313
  "subjectDid": {
314
314
  "type": "string",
315
315
  "pattern": "^did:",
316
- "description": "DID of the endorsement's subject (becomes credentialSubject.id)."
316
+ "description": "DID of the statement's subject (becomes credentialSubject.id)."
317
317
  },
318
318
  "claim": {
319
319
  "type": "object",
320
- "description": "The attested claim body, validated against the endorsement type's claimSchema when it declares one."
320
+ "description": "The attested claim body — the statement's `credentialSubject.object.value` — validated against the registered predicate's claimSchema when it declares one."
321
321
  },
322
322
  "issued": {
323
323
  "$ref": "#/$defs/CredentialReference",
324
- "description": "A pointer to the issued VEC — its identifier and lifetime, not its bytes. `endorsements/issue` additionally returns the credential itself, because that is the one call whose caller has no other way to receive it."
324
+ "description": "A pointer to the issued statement credential — its identifier and lifetime, not its bytes. `endorsements/issue` additionally returns the credential itself, because that is the one call whose caller has no other way to receive it."
325
325
  },
326
326
  "statusListIndex": {
327
327
  "type": "integer",
328
328
  "minimum": 0,
329
- "description": "The endorsement's slot on the community's shared Revocation status list. Published, so a foreign verifier can check revocation without contacting this community."
329
+ "description": "The statement's slot on the community's shared Revocation status list, referenced by its `credentialStatus`. Published, so a foreign verifier can check revocation without contacting this community."
330
330
  },
331
331
  "revokedAt": {
332
332
  "type": [
@@ -334,7 +334,7 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
334
334
  "null"
335
335
  ],
336
336
  "format": "date-time",
337
- "description": "When the endorsement was revoked, or null while live."
337
+ "description": "When the statement was revoked, or null while live."
338
338
  }
339
339
  }
340
340
  },
@@ -17,7 +17,7 @@ export interface VTCEndorsementsRevokePayload {
17
17
  export interface VTCEndorsementsRevokeResponsePayload {
18
18
  endorsementId: string;
19
19
  /**
20
- * The registry-wide revocation receipt for the underlying VEC.
20
+ * The registry-wide revocation receipt for the underlying credential — the statement credential, the identity-verification credential, or a vetter role credential (VAC).
21
21
  */
22
22
  revocation: RevocationReceipt;
23
23
  /**
@@ -92,7 +92,7 @@ export const PAYLOAD_SCHEMA = {
92
92
  },
93
93
  "revocation": {
94
94
  "$ref": "#/$defs/RevocationReceipt",
95
- "description": "The registry-wide revocation receipt for the underlying VEC."
95
+ "description": "The registry-wide revocation receipt for the underlying credential — the statement credential, the identity-verification credential, or a vetter role credential (VAC)."
96
96
  },
97
97
  "statusListIndex": {
98
98
  "type": "integer",
@@ -167,7 +167,7 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
167
167
  },
168
168
  "revocation": {
169
169
  "$ref": "#/$defs/RevocationReceipt",
170
- "description": "The registry-wide revocation receipt for the underlying VEC."
170
+ "description": "The registry-wide revocation receipt for the underlying credential — the statement credential, the identity-verification credential, or a vetter role credential (VAC)."
171
171
  },
172
172
  "statusListIndex": {
173
173
  "type": "integer",