@openvtc/trust-tasks 0.12.8 → 0.12.10
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/dist/vtc/_shared/0.1/endorsement.d.ts +1 -1
- package/dist/vtc/ceremonies/list/0.1/payload.d.ts +22 -0
- package/dist/vtc/ceremonies/list/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/ceremonies/list/0.1/payload.js +8 -0
- package/dist/vtc/ceremonies/list/0.1/payload.js.map +1 -1
- package/dist/vtc/community/profile/show/0.1/payload.d.ts +235 -22
- package/dist/vtc/community/profile/show/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/community/profile/show/0.1/payload.js +106 -8
- package/dist/vtc/community/profile/show/0.1/payload.js.map +1 -1
- package/dist/vtc/community/profile/update/0.1/payload.d.ts +265 -22
- package/dist/vtc/community/profile/update/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/community/profile/update/0.1/payload.js +110 -8
- package/dist/vtc/community/profile/update/0.1/payload.js.map +1 -1
- package/dist/vtc/config/export/0.1/payload.d.ts +154 -0
- package/dist/vtc/config/export/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/config/export/0.1/payload.js +72 -0
- package/dist/vtc/config/export/0.1/payload.js.map +1 -1
- package/dist/vtc/config/import/0.1/payload.d.ts +154 -0
- package/dist/vtc/config/import/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/config/import/0.1/payload.js +72 -0
- package/dist/vtc/config/import/0.1/payload.js.map +1 -1
- package/dist/vtc/endorsements/issue/0.1/payload.d.ts +65 -65
- package/dist/vtc/endorsements/issue/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/endorsements/issue/0.1/payload.js +36 -32
- package/dist/vtc/endorsements/issue/0.1/payload.js.map +1 -1
- package/dist/vtc/endorsements/list/0.1/payload.d.ts +41 -61
- package/dist/vtc/endorsements/list/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/endorsements/list/0.1/payload.js +24 -30
- package/dist/vtc/endorsements/list/0.1/payload.js.map +1 -1
- package/dist/vtc/endorsements/show/0.1/payload.d.ts +41 -61
- package/dist/vtc/endorsements/show/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/endorsements/show/0.1/payload.js +24 -30
- package/dist/vtc/endorsements/show/0.1/payload.js.map +1 -1
- package/dist/vtc/install/claim/start/0.1/payload.d.ts +18 -0
- package/dist/vtc/install/claim/start/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/install/claim/start/0.1/payload.js +5 -0
- package/dist/vtc/install/claim/start/0.1/payload.js.map +1 -1
- package/dist/vtc/registry/diagnostics/0.1/payload.d.ts +491 -0
- package/dist/vtc/registry/diagnostics/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/registry/diagnostics/0.1/payload.js +260 -0
- package/dist/vtc/registry/diagnostics/0.1/payload.js.map +1 -1
- package/dist/vtc/website/files/list/0.1/payload.d.ts +24 -0
- package/dist/vtc/website/files/list/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/website/files/list/0.1/payload.js +10 -0
- package/dist/vtc/website/files/list/0.1/payload.js.map +1 -1
- package/dist/vtc/website/generations/list/0.1/payload.d.ts +48 -0
- package/dist/vtc/website/generations/list/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/website/generations/list/0.1/payload.js +20 -0
- package/dist/vtc/website/generations/list/0.1/payload.js.map +1 -1
- package/package.json +1 -1
- package/src/vtc/_shared/0.1/endorsement.ts +1 -1
- package/src/vtc/ceremonies/list/0.1/payload.ts +14 -0
- package/src/vtc/community/profile/show/0.1/payload.ts +141 -10
- package/src/vtc/community/profile/update/0.1/payload.ts +167 -10
- package/src/vtc/config/export/0.1/payload.ts +94 -0
- package/src/vtc/config/import/0.1/payload.ts +94 -0
- package/src/vtc/endorsements/issue/0.1/payload.ts +45 -41
- package/src/vtc/endorsements/list/0.1/payload.ts +29 -39
- package/src/vtc/endorsements/show/0.1/payload.ts +29 -39
- package/src/vtc/install/claim/start/0.1/payload.ts +13 -0
- package/src/vtc/registry/diagnostics/0.1/payload.ts +343 -0
- package/src/vtc/website/files/list/0.1/payload.ts +14 -0
- package/src/vtc/website/generations/list/0.1/payload.ts +28 -0
|
@@ -37,7 +37,8 @@ export const PAYLOAD_SCHEMA = {
|
|
|
37
37
|
],
|
|
38
38
|
"properties": {
|
|
39
39
|
"profile": {
|
|
40
|
-
"$ref": "#/$defs/
|
|
40
|
+
"$ref": "#/$defs/CommunityProfileView",
|
|
41
|
+
"description": "The community's profile as read, including the immutable `communityDid` an update cannot set."
|
|
41
42
|
},
|
|
42
43
|
"ext": {
|
|
43
44
|
"$ref": "#/$defs/Ext"
|
|
@@ -54,16 +55,28 @@ export const PAYLOAD_SCHEMA = {
|
|
|
54
55
|
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
55
56
|
}
|
|
56
57
|
},
|
|
57
|
-
"
|
|
58
|
-
"$anchor": "
|
|
59
|
-
"title": "
|
|
58
|
+
"CommunityProfileView": {
|
|
59
|
+
"$anchor": "communityProfileView",
|
|
60
|
+
"title": "CommunityProfileView",
|
|
60
61
|
"type": "object",
|
|
61
62
|
"additionalProperties": false,
|
|
63
|
+
"description": "A community profile **as read**: every member of CommunityProfile, plus the immutable identity a reader needs and an update must never set.\n\nCommunityProfile is the update-facing view and omits `communityDid` on purpose, so that a patch cannot re-point a community's identity. That is right for a payload and wrong for a response: a client holding a profile has no other way to learn which DID to verify that community's credentials against, and `community/profile/show` returning the update-facing view left the one member a consumer most needs undefined.\n\nSo reads get this and updates keep CommunityProfile. The split is the point — the immutability of `communityDid` is enforced by it being absent from the payload, not by prose asking implementers not to honour it.",
|
|
62
64
|
"required": [
|
|
65
|
+
"communityDid",
|
|
63
66
|
"name",
|
|
64
67
|
"language"
|
|
65
68
|
],
|
|
66
69
|
"properties": {
|
|
70
|
+
"communityDid": {
|
|
71
|
+
"type": "string",
|
|
72
|
+
"minLength": 1,
|
|
73
|
+
"description": "The community's own DID — the identifier every credential it issues names as `issuer`, and the one a member's credential binds them to. Immutable: set when the community is created and not settable through an update."
|
|
74
|
+
},
|
|
75
|
+
"createdAt": {
|
|
76
|
+
"type": "string",
|
|
77
|
+
"format": "date-time",
|
|
78
|
+
"description": "When the community was created. Immutable, like `communityDid`."
|
|
79
|
+
},
|
|
67
80
|
"name": {
|
|
68
81
|
"type": "string",
|
|
69
82
|
"minLength": 1
|
|
@@ -112,6 +125,42 @@ export const PAYLOAD_SCHEMA = {
|
|
|
112
125
|
"degraded"
|
|
113
126
|
],
|
|
114
127
|
"description": "Trust-registry reachability. Populated on reads; not settable."
|
|
128
|
+
},
|
|
129
|
+
"personhood": {
|
|
130
|
+
"$ref": "#/$defs/PersonhoodGovernance",
|
|
131
|
+
"description": "What this community's governance asserts about the personhood of its members."
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
"PersonhoodGovernance": {
|
|
136
|
+
"$anchor": "personhoodGovernance",
|
|
137
|
+
"title": "PersonhoodGovernance",
|
|
138
|
+
"type": "object",
|
|
139
|
+
"additionalProperties": false,
|
|
140
|
+
"description": "A community's published position on personhood.\n\nDTG Credentials §Personhood Credentials places PHC status here rather than in the credential — \"PHC status is determined by governance and trust registries, not by credential structure\" — so a verifier deciding whether a VMC carries personhood weight reads this, not the credential's type array. §Governance Considerations item 1 makes the acceptable-IDVP list the community's to define and publish.\n\nEvery member is a declaration, not an enforcement: what a community actually accepts is decided by its own policy. Absent means the community has not published a position, which is not the same as asserting the negative.",
|
|
141
|
+
"properties": {
|
|
142
|
+
"realHuman": {
|
|
143
|
+
"type": "boolean",
|
|
144
|
+
"description": "Governance requires that members are real humans. Defaults to `false` when absent: a community that has not considered the question asserts nothing, which is the only safe default for a claim a verifier may rely on."
|
|
145
|
+
},
|
|
146
|
+
"singleMembership": {
|
|
147
|
+
"type": "boolean",
|
|
148
|
+
"description": "Governance requires that each person holds at most one membership in **this** community. Per-community by definition — the glossary says \"exactly one membership in that VTC\" — so a single community can satisfy it without any network above it."
|
|
149
|
+
},
|
|
150
|
+
"acceptedIdvps": {
|
|
151
|
+
"type": "array",
|
|
152
|
+
"items": {
|
|
153
|
+
"type": "string",
|
|
154
|
+
"minLength": 1
|
|
155
|
+
},
|
|
156
|
+
"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."
|
|
157
|
+
},
|
|
158
|
+
"governanceFrameworkUrl": {
|
|
159
|
+
"type": [
|
|
160
|
+
"string",
|
|
161
|
+
"null"
|
|
162
|
+
],
|
|
163
|
+
"description": "Where the governance framework these assertions refer to can be read."
|
|
115
164
|
}
|
|
116
165
|
}
|
|
117
166
|
}
|
|
@@ -132,7 +181,8 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
132
181
|
],
|
|
133
182
|
"properties": {
|
|
134
183
|
"profile": {
|
|
135
|
-
"$ref": "#/$defs/
|
|
184
|
+
"$ref": "#/$defs/CommunityProfileView",
|
|
185
|
+
"description": "The community's profile as read, including the immutable `communityDid` an update cannot set."
|
|
136
186
|
},
|
|
137
187
|
"ext": {
|
|
138
188
|
"$ref": "#/$defs/Ext"
|
|
@@ -149,16 +199,28 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
149
199
|
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
150
200
|
}
|
|
151
201
|
},
|
|
152
|
-
"
|
|
153
|
-
"$anchor": "
|
|
154
|
-
"title": "
|
|
202
|
+
"CommunityProfileView": {
|
|
203
|
+
"$anchor": "communityProfileView",
|
|
204
|
+
"title": "CommunityProfileView",
|
|
155
205
|
"type": "object",
|
|
156
206
|
"additionalProperties": false,
|
|
207
|
+
"description": "A community profile **as read**: every member of CommunityProfile, plus the immutable identity a reader needs and an update must never set.\n\nCommunityProfile is the update-facing view and omits `communityDid` on purpose, so that a patch cannot re-point a community's identity. That is right for a payload and wrong for a response: a client holding a profile has no other way to learn which DID to verify that community's credentials against, and `community/profile/show` returning the update-facing view left the one member a consumer most needs undefined.\n\nSo reads get this and updates keep CommunityProfile. The split is the point — the immutability of `communityDid` is enforced by it being absent from the payload, not by prose asking implementers not to honour it.",
|
|
157
208
|
"required": [
|
|
209
|
+
"communityDid",
|
|
158
210
|
"name",
|
|
159
211
|
"language"
|
|
160
212
|
],
|
|
161
213
|
"properties": {
|
|
214
|
+
"communityDid": {
|
|
215
|
+
"type": "string",
|
|
216
|
+
"minLength": 1,
|
|
217
|
+
"description": "The community's own DID — the identifier every credential it issues names as `issuer`, and the one a member's credential binds them to. Immutable: set when the community is created and not settable through an update."
|
|
218
|
+
},
|
|
219
|
+
"createdAt": {
|
|
220
|
+
"type": "string",
|
|
221
|
+
"format": "date-time",
|
|
222
|
+
"description": "When the community was created. Immutable, like `communityDid`."
|
|
223
|
+
},
|
|
162
224
|
"name": {
|
|
163
225
|
"type": "string",
|
|
164
226
|
"minLength": 1
|
|
@@ -207,6 +269,42 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
207
269
|
"degraded"
|
|
208
270
|
],
|
|
209
271
|
"description": "Trust-registry reachability. Populated on reads; not settable."
|
|
272
|
+
},
|
|
273
|
+
"personhood": {
|
|
274
|
+
"$ref": "#/$defs/PersonhoodGovernance",
|
|
275
|
+
"description": "What this community's governance asserts about the personhood of its members."
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
},
|
|
279
|
+
"PersonhoodGovernance": {
|
|
280
|
+
"$anchor": "personhoodGovernance",
|
|
281
|
+
"title": "PersonhoodGovernance",
|
|
282
|
+
"type": "object",
|
|
283
|
+
"additionalProperties": false,
|
|
284
|
+
"description": "A community's published position on personhood.\n\nDTG Credentials §Personhood Credentials places PHC status here rather than in the credential — \"PHC status is determined by governance and trust registries, not by credential structure\" — so a verifier deciding whether a VMC carries personhood weight reads this, not the credential's type array. §Governance Considerations item 1 makes the acceptable-IDVP list the community's to define and publish.\n\nEvery member is a declaration, not an enforcement: what a community actually accepts is decided by its own policy. Absent means the community has not published a position, which is not the same as asserting the negative.",
|
|
285
|
+
"properties": {
|
|
286
|
+
"realHuman": {
|
|
287
|
+
"type": "boolean",
|
|
288
|
+
"description": "Governance requires that members are real humans. Defaults to `false` when absent: a community that has not considered the question asserts nothing, which is the only safe default for a claim a verifier may rely on."
|
|
289
|
+
},
|
|
290
|
+
"singleMembership": {
|
|
291
|
+
"type": "boolean",
|
|
292
|
+
"description": "Governance requires that each person holds at most one membership in **this** community. Per-community by definition — the glossary says \"exactly one membership in that VTC\" — so a single community can satisfy it without any network above it."
|
|
293
|
+
},
|
|
294
|
+
"acceptedIdvps": {
|
|
295
|
+
"type": "array",
|
|
296
|
+
"items": {
|
|
297
|
+
"type": "string",
|
|
298
|
+
"minLength": 1
|
|
299
|
+
},
|
|
300
|
+
"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."
|
|
301
|
+
},
|
|
302
|
+
"governanceFrameworkUrl": {
|
|
303
|
+
"type": [
|
|
304
|
+
"string",
|
|
305
|
+
"null"
|
|
306
|
+
],
|
|
307
|
+
"description": "Where the governance framework these assertions refer to can be read."
|
|
210
308
|
}
|
|
211
309
|
}
|
|
212
310
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payload.js","sourceRoot":"","sources":["../../../../../../src/vtc/community/profile/show/0.1/payload.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"payload.js","sourceRoot":"","sources":["../../../../../../src/vtc/community/profile/show/0.1/payload.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqEH,2BAA2B;AAC3B,MAAM,CAAC,MAAM,QAAQ,GAAG,4DAAqE,CAAC;AAK9F,qEAAqE;AACrE,MAAM,CAAC,MAAM,iBAAiB,GAAG,qEAA8E,CAAC;AAKhH;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS,EAAE,8CAA8C;IACzD,KAAK,EAAE,4DAA4D;IACnE,OAAO,EAAE,sCAAsC;IAC/C,MAAM,EAAE,QAAQ;IAChB,sBAAsB,EAAE,KAAK;IAC7B,YAAY,EAAE;QACZ,KAAK,EAAE;YACL,MAAM,EAAE,aAAa;SACtB;KACF;IACD,OAAO,EAAE;QACP,UAAU,EAAE;YACV,SAAS,EAAE,UAAU;YACrB,OAAO,EAAE,+CAA+C;YACxD,MAAM,EAAE,QAAQ;YAChB,sBAAsB,EAAE,KAAK;YAC7B,UAAU,EAAE;gBACV,SAAS;aACV;YACD,YAAY,EAAE;gBACZ,SAAS,EAAE;oBACT,MAAM,EAAE,8BAA8B;oBACtC,aAAa,EAAE,+FAA+F;iBAC/G;gBACD,KAAK,EAAE;oBACL,MAAM,EAAE,aAAa;iBACtB;aACF;SACF;QACD,KAAK,EAAE;YACL,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,uKAAuK;YACtL,MAAM,EAAE,QAAQ;YAChB,eAAe,EAAE,CAAC;YAClB,sBAAsB,EAAE,IAAI;YAC5B,eAAe,EAAE;gBACf,SAAS,EAAE,mCAAmC;aAC/C;SACF;QACD,sBAAsB,EAAE;YACtB,SAAS,EAAE,sBAAsB;YACjC,OAAO,EAAE,sBAAsB;YAC/B,MAAM,EAAE,QAAQ;YAChB,sBAAsB,EAAE,KAAK;YAC7B,aAAa,EAAE,wwBAAwwB;YACvxB,UAAU,EAAE;gBACV,cAAc;gBACd,MAAM;gBACN,UAAU;aACX;YACD,YAAY,EAAE;gBACZ,cAAc,EAAE;oBACd,MAAM,EAAE,QAAQ;oBAChB,WAAW,EAAE,CAAC;oBACd,aAAa,EAAE,0NAA0N;iBAC1O;gBACD,WAAW,EAAE;oBACX,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,WAAW;oBACrB,aAAa,EAAE,iEAAiE;iBACjF;gBACD,MAAM,EAAE;oBACN,MAAM,EAAE,QAAQ;oBAChB,WAAW,EAAE,CAAC;iBACf;gBACD,aAAa,EAAE;oBACb,MAAM,EAAE,QAAQ;iBACjB;gBACD,SAAS,EAAE;oBACT,MAAM,EAAE;wBACN,QAAQ;wBACR,MAAM;qBACP;iBACF;gBACD,WAAW,EAAE;oBACX,MAAM,EAAE;wBACN,QAAQ;wBACR,MAAM;qBACP;iBACF;gBACD,cAAc,EAAE;oBACd,MAAM,EAAE;wBACN,QAAQ;wBACR,MAAM;qBACP;iBACF;gBACD,UAAU,EAAE;oBACV,MAAM,EAAE,QAAQ;oBAChB,WAAW,EAAE,CAAC;iBACf;gBACD,+BAA+B,EAAE;oBAC/B,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE;wBACN,YAAY;wBACZ,UAAU;qBACX;oBACD,aAAa,EAAE,mgBAAmgB;iBACnhB;gBACD,YAAY,EAAE;oBACZ,MAAM,EAAE,QAAQ;oBAChB,aAAa,EAAE,yCAAyC;iBACzD;gBACD,gBAAgB,EAAE;oBAChB,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE;wBACN,QAAQ;wBACR,UAAU;qBACX;oBACD,aAAa,EAAE,gEAAgE;iBAChF;gBACD,YAAY,EAAE;oBACZ,MAAM,EAAE,8BAA8B;oBACtC,aAAa,EAAE,+EAA+E;iBAC/F;aACF;SACF;QACD,sBAAsB,EAAE;YACtB,SAAS,EAAE,sBAAsB;YACjC,OAAO,EAAE,sBAAsB;YAC/B,MAAM,EAAE,QAAQ;YAChB,sBAAsB,EAAE,KAAK;YAC7B,aAAa,EAAE,sqBAAsqB;YACrrB,YAAY,EAAE;gBACZ,WAAW,EAAE;oBACX,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,yNAAyN;iBACzO;gBACD,kBAAkB,EAAE;oBAClB,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,sPAAsP;iBACtQ;gBACD,eAAe,EAAE;oBACf,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;wBAChB,WAAW,EAAE,CAAC;qBACf;oBACD,aAAa,EAAE,qUAAqU;iBACrV;gBACD,wBAAwB,EAAE;oBACxB,MAAM,EAAE;wBACN,QAAQ;wBACR,MAAM;qBACP;oBACD,aAAa,EAAE,uEAAuE;iBACvF;aACF;SACF;KACF;CACO,CAAC;AAEX,mEAAmE;AACnE,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,SAAS,EAAE,8CAA8C;IACzD,MAAM,EAAE,kBAAkB;IAC1B,OAAO,EAAE;QACP,UAAU,EAAE;YACV,SAAS,EAAE,UAAU;YACrB,OAAO,EAAE,+CAA+C;YACxD,MAAM,EAAE,QAAQ;YAChB,sBAAsB,EAAE,KAAK;YAC7B,UAAU,EAAE;gBACV,SAAS;aACV;YACD,YAAY,EAAE;gBACZ,SAAS,EAAE;oBACT,MAAM,EAAE,8BAA8B;oBACtC,aAAa,EAAE,+FAA+F;iBAC/G;gBACD,KAAK,EAAE;oBACL,MAAM,EAAE,aAAa;iBACtB;aACF;SACF;QACD,KAAK,EAAE;YACL,OAAO,EAAE,KAAK;YACd,aAAa,EAAE,uKAAuK;YACtL,MAAM,EAAE,QAAQ;YAChB,eAAe,EAAE,CAAC;YAClB,sBAAsB,EAAE,IAAI;YAC5B,eAAe,EAAE;gBACf,SAAS,EAAE,mCAAmC;aAC/C;SACF;QACD,sBAAsB,EAAE;YACtB,SAAS,EAAE,sBAAsB;YACjC,OAAO,EAAE,sBAAsB;YAC/B,MAAM,EAAE,QAAQ;YAChB,sBAAsB,EAAE,KAAK;YAC7B,aAAa,EAAE,wwBAAwwB;YACvxB,UAAU,EAAE;gBACV,cAAc;gBACd,MAAM;gBACN,UAAU;aACX;YACD,YAAY,EAAE;gBACZ,cAAc,EAAE;oBACd,MAAM,EAAE,QAAQ;oBAChB,WAAW,EAAE,CAAC;oBACd,aAAa,EAAE,0NAA0N;iBAC1O;gBACD,WAAW,EAAE;oBACX,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,WAAW;oBACrB,aAAa,EAAE,iEAAiE;iBACjF;gBACD,MAAM,EAAE;oBACN,MAAM,EAAE,QAAQ;oBAChB,WAAW,EAAE,CAAC;iBACf;gBACD,aAAa,EAAE;oBACb,MAAM,EAAE,QAAQ;iBACjB;gBACD,SAAS,EAAE;oBACT,MAAM,EAAE;wBACN,QAAQ;wBACR,MAAM;qBACP;iBACF;gBACD,WAAW,EAAE;oBACX,MAAM,EAAE;wBACN,QAAQ;wBACR,MAAM;qBACP;iBACF;gBACD,cAAc,EAAE;oBACd,MAAM,EAAE;wBACN,QAAQ;wBACR,MAAM;qBACP;iBACF;gBACD,UAAU,EAAE;oBACV,MAAM,EAAE,QAAQ;oBAChB,WAAW,EAAE,CAAC;iBACf;gBACD,+BAA+B,EAAE;oBAC/B,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE;wBACN,YAAY;wBACZ,UAAU;qBACX;oBACD,aAAa,EAAE,mgBAAmgB;iBACnhB;gBACD,YAAY,EAAE;oBACZ,MAAM,EAAE,QAAQ;oBAChB,aAAa,EAAE,yCAAyC;iBACzD;gBACD,gBAAgB,EAAE;oBAChB,MAAM,EAAE,QAAQ;oBAChB,MAAM,EAAE;wBACN,QAAQ;wBACR,UAAU;qBACX;oBACD,aAAa,EAAE,gEAAgE;iBAChF;gBACD,YAAY,EAAE;oBACZ,MAAM,EAAE,8BAA8B;oBACtC,aAAa,EAAE,+EAA+E;iBAC/F;aACF;SACF;QACD,sBAAsB,EAAE;YACtB,SAAS,EAAE,sBAAsB;YACjC,OAAO,EAAE,sBAAsB;YAC/B,MAAM,EAAE,QAAQ;YAChB,sBAAsB,EAAE,KAAK;YAC7B,aAAa,EAAE,sqBAAsqB;YACrrB,YAAY,EAAE;gBACZ,WAAW,EAAE;oBACX,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,yNAAyN;iBACzO;gBACD,kBAAkB,EAAE;oBAClB,MAAM,EAAE,SAAS;oBACjB,aAAa,EAAE,sPAAsP;iBACtQ;gBACD,eAAe,EAAE;oBACf,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE;wBACP,MAAM,EAAE,QAAQ;wBAChB,WAAW,EAAE,CAAC;qBACf;oBACD,aAAa,EAAE,qUAAqU;iBACrV;gBACD,wBAAwB,EAAE;oBACxB,MAAM,EAAE;wBACN,QAAQ;wBACR,MAAM;qBACP;oBACD,aAAa,EAAE,uEAAuE;iBACvF;aACF;SACF;KACF;CACO,CAAC;AAEX;;;;;GAKG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,KAAK;IACf,eAAe,EAAE,KAAK;IACtB,mBAAmB,EAAE,IAAI;IACzB,aAAa,EAAE,cAAc;CACrB,CAAC;AAEX;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,iBAAiB;IAC1B,QAAQ,EAAE,KAAK;IACf,eAAe,EAAE,KAAK;IACtB,mBAAmB,EAAE,IAAI;IACzB,aAAa,EAAE,uBAAuB;CAC9B,CAAC"}
|
|
@@ -13,12 +13,34 @@ export interface VTCCommunityProfileUpdatePayload {
|
|
|
13
13
|
* Set the community's declared relationship-identifier default. See `CommunityProfile.relationshipIdentifierDefault` in the `vtc/_shared/0.1/community` schema. Omit to leave it unchanged.
|
|
14
14
|
*/
|
|
15
15
|
relationshipIdentifierDefault?: "attributed" | "pairwise";
|
|
16
|
+
personhood?: PersonhoodGovernance;
|
|
16
17
|
/**
|
|
17
18
|
* Opaque community-defined extension bag (maintainer-capped).
|
|
18
19
|
*/
|
|
19
20
|
extensions?: {};
|
|
20
21
|
ext?: Ext;
|
|
21
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Set the community's published personhood position. See `CommunityProfile.personhood` in the `vtc/_shared/0.1/community` schema. Replaces the whole object — a partial update would leave a verifier unable to tell an unset member from a cleared one. Omit to leave it unchanged.
|
|
25
|
+
*/
|
|
26
|
+
export interface PersonhoodGovernance {
|
|
27
|
+
/**
|
|
28
|
+
* Governance requires that members are real humans. Defaults to `false` when absent: a community that has not considered the question asserts nothing, which is the only safe default for a claim a verifier may rely on.
|
|
29
|
+
*/
|
|
30
|
+
realHuman?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Governance requires that each person holds at most one membership in **this** community. Per-community by definition — the glossary says "exactly one membership in that VTC" — so a single community can satisfy it without any network above it.
|
|
33
|
+
*/
|
|
34
|
+
singleMembership?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* 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.
|
|
37
|
+
*/
|
|
38
|
+
acceptedIdvps?: string[];
|
|
39
|
+
/**
|
|
40
|
+
* Where the governance framework these assertions refer to can be read.
|
|
41
|
+
*/
|
|
42
|
+
governanceFrameworkUrl?: string | null;
|
|
43
|
+
}
|
|
22
44
|
/**
|
|
23
45
|
* Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.
|
|
24
46
|
*/
|
|
@@ -26,14 +48,25 @@ export interface Ext {
|
|
|
26
48
|
[k: string]: unknown | undefined;
|
|
27
49
|
}
|
|
28
50
|
export interface VTCCommunityProfileUpdateResponsePayload {
|
|
29
|
-
profile:
|
|
51
|
+
profile: CommunityProfileView;
|
|
30
52
|
/**
|
|
31
53
|
* Names of the profile members this update actually changed, in the wire spelling. Empty when the submitted values all matched what was already stored. Lets a caller distinguish a no-op from an applied change without diffing the returned profile against the one it sent.
|
|
32
54
|
*/
|
|
33
55
|
fieldsChanged?: string[];
|
|
34
56
|
ext?: Ext;
|
|
35
57
|
}
|
|
36
|
-
|
|
58
|
+
/**
|
|
59
|
+
* The community's profile as read, including the immutable `communityDid` an update cannot set.
|
|
60
|
+
*/
|
|
61
|
+
export interface CommunityProfileView {
|
|
62
|
+
/**
|
|
63
|
+
* The community's own DID — the identifier every credential it issues names as `issuer`, and the one a member's credential binds them to. Immutable: set when the community is created and not settable through an update.
|
|
64
|
+
*/
|
|
65
|
+
communityDid: string;
|
|
66
|
+
/**
|
|
67
|
+
* When the community was created. Immutable, like `communityDid`.
|
|
68
|
+
*/
|
|
69
|
+
createdAt?: string;
|
|
37
70
|
name: string;
|
|
38
71
|
description?: string;
|
|
39
72
|
logoUrl?: string | null;
|
|
@@ -52,6 +85,28 @@ export interface CommunityProfile {
|
|
|
52
85
|
* Trust-registry reachability. Populated on reads; not settable.
|
|
53
86
|
*/
|
|
54
87
|
registryStatus?: "active" | "degraded";
|
|
88
|
+
personhood?: PersonhoodGovernance1;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* What this community's governance asserts about the personhood of its members.
|
|
92
|
+
*/
|
|
93
|
+
export interface PersonhoodGovernance1 {
|
|
94
|
+
/**
|
|
95
|
+
* Governance requires that members are real humans. Defaults to `false` when absent: a community that has not considered the question asserts nothing, which is the only safe default for a claim a verifier may rely on.
|
|
96
|
+
*/
|
|
97
|
+
realHuman?: boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Governance requires that each person holds at most one membership in **this** community. Per-community by definition — the glossary says "exactly one membership in that VTC" — so a single community can satisfy it without any network above it.
|
|
100
|
+
*/
|
|
101
|
+
singleMembership?: boolean;
|
|
102
|
+
/**
|
|
103
|
+
* 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.
|
|
104
|
+
*/
|
|
105
|
+
acceptedIdvps?: string[];
|
|
106
|
+
/**
|
|
107
|
+
* Where the governance framework these assertions refer to can be read.
|
|
108
|
+
*/
|
|
109
|
+
governanceFrameworkUrl?: string | null;
|
|
55
110
|
}
|
|
56
111
|
/** Trust Task type URI. */
|
|
57
112
|
export declare const TYPE_URI: "https://trusttasks.org/spec/vtc/community/profile/update/0.1";
|
|
@@ -102,6 +157,10 @@ export declare const PAYLOAD_SCHEMA: {
|
|
|
102
157
|
readonly enum: readonly ["attributed", "pairwise"];
|
|
103
158
|
readonly description: "Set the community's declared relationship-identifier default. See `CommunityProfile.relationshipIdentifierDefault` in the `vtc/_shared/0.1/community` schema. Omit to leave it unchanged.";
|
|
104
159
|
};
|
|
160
|
+
readonly personhood: {
|
|
161
|
+
readonly $ref: "#/$defs/PersonhoodGovernance";
|
|
162
|
+
readonly description: "Set the community's published personhood position. See `CommunityProfile.personhood` in the `vtc/_shared/0.1/community` schema. Replaces the whole object — a partial update would leave a verifier unable to tell an unset member from a cleared one. Omit to leave it unchanged.";
|
|
163
|
+
};
|
|
105
164
|
readonly extensions: {
|
|
106
165
|
readonly type: "object";
|
|
107
166
|
readonly description: "Opaque community-defined extension bag (maintainer-capped).";
|
|
@@ -119,7 +178,8 @@ export declare const PAYLOAD_SCHEMA: {
|
|
|
119
178
|
readonly required: readonly ["profile"];
|
|
120
179
|
readonly properties: {
|
|
121
180
|
readonly profile: {
|
|
122
|
-
readonly $ref: "#/$defs/
|
|
181
|
+
readonly $ref: "#/$defs/CommunityProfileView";
|
|
182
|
+
readonly description: "The community's profile as read, including the immutable `communityDid` an update cannot set.";
|
|
123
183
|
};
|
|
124
184
|
readonly fieldsChanged: {
|
|
125
185
|
readonly type: "array";
|
|
@@ -143,13 +203,24 @@ export declare const PAYLOAD_SCHEMA: {
|
|
|
143
203
|
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
144
204
|
};
|
|
145
205
|
};
|
|
146
|
-
readonly
|
|
147
|
-
readonly $anchor: "
|
|
148
|
-
readonly title: "
|
|
206
|
+
readonly CommunityProfileView: {
|
|
207
|
+
readonly $anchor: "communityProfileView";
|
|
208
|
+
readonly title: "CommunityProfileView";
|
|
149
209
|
readonly type: "object";
|
|
150
210
|
readonly additionalProperties: false;
|
|
151
|
-
readonly
|
|
211
|
+
readonly description: "A community profile **as read**: every member of CommunityProfile, plus the immutable identity a reader needs and an update must never set.\n\nCommunityProfile is the update-facing view and omits `communityDid` on purpose, so that a patch cannot re-point a community's identity. That is right for a payload and wrong for a response: a client holding a profile has no other way to learn which DID to verify that community's credentials against, and `community/profile/show` returning the update-facing view left the one member a consumer most needs undefined.\n\nSo reads get this and updates keep CommunityProfile. The split is the point — the immutability of `communityDid` is enforced by it being absent from the payload, not by prose asking implementers not to honour it.";
|
|
212
|
+
readonly required: readonly ["communityDid", "name", "language"];
|
|
152
213
|
readonly properties: {
|
|
214
|
+
readonly communityDid: {
|
|
215
|
+
readonly type: "string";
|
|
216
|
+
readonly minLength: 1;
|
|
217
|
+
readonly description: "The community's own DID — the identifier every credential it issues names as `issuer`, and the one a member's credential binds them to. Immutable: set when the community is created and not settable through an update.";
|
|
218
|
+
};
|
|
219
|
+
readonly createdAt: {
|
|
220
|
+
readonly type: "string";
|
|
221
|
+
readonly format: "date-time";
|
|
222
|
+
readonly description: "When the community was created. Immutable, like `communityDid`.";
|
|
223
|
+
};
|
|
153
224
|
readonly name: {
|
|
154
225
|
readonly type: "string";
|
|
155
226
|
readonly minLength: 1;
|
|
@@ -184,6 +255,39 @@ export declare const PAYLOAD_SCHEMA: {
|
|
|
184
255
|
readonly enum: readonly ["active", "degraded"];
|
|
185
256
|
readonly description: "Trust-registry reachability. Populated on reads; not settable.";
|
|
186
257
|
};
|
|
258
|
+
readonly personhood: {
|
|
259
|
+
readonly $ref: "#/$defs/PersonhoodGovernance";
|
|
260
|
+
readonly description: "What this community's governance asserts about the personhood of its members.";
|
|
261
|
+
};
|
|
262
|
+
};
|
|
263
|
+
};
|
|
264
|
+
readonly PersonhoodGovernance: {
|
|
265
|
+
readonly $anchor: "personhoodGovernance";
|
|
266
|
+
readonly title: "PersonhoodGovernance";
|
|
267
|
+
readonly type: "object";
|
|
268
|
+
readonly additionalProperties: false;
|
|
269
|
+
readonly description: "A community's published position on personhood.\n\nDTG Credentials §Personhood Credentials places PHC status here rather than in the credential — \"PHC status is determined by governance and trust registries, not by credential structure\" — so a verifier deciding whether a VMC carries personhood weight reads this, not the credential's type array. §Governance Considerations item 1 makes the acceptable-IDVP list the community's to define and publish.\n\nEvery member is a declaration, not an enforcement: what a community actually accepts is decided by its own policy. Absent means the community has not published a position, which is not the same as asserting the negative.";
|
|
270
|
+
readonly properties: {
|
|
271
|
+
readonly realHuman: {
|
|
272
|
+
readonly type: "boolean";
|
|
273
|
+
readonly description: "Governance requires that members are real humans. Defaults to `false` when absent: a community that has not considered the question asserts nothing, which is the only safe default for a claim a verifier may rely on.";
|
|
274
|
+
};
|
|
275
|
+
readonly singleMembership: {
|
|
276
|
+
readonly type: "boolean";
|
|
277
|
+
readonly description: "Governance requires that each person holds at most one membership in **this** community. Per-community by definition — the glossary says \"exactly one membership in that VTC\" — so a single community can satisfy it without any network above it.";
|
|
278
|
+
};
|
|
279
|
+
readonly acceptedIdvps: {
|
|
280
|
+
readonly type: "array";
|
|
281
|
+
readonly items: {
|
|
282
|
+
readonly type: "string";
|
|
283
|
+
readonly minLength: 1;
|
|
284
|
+
};
|
|
285
|
+
readonly 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.";
|
|
286
|
+
};
|
|
287
|
+
readonly governanceFrameworkUrl: {
|
|
288
|
+
readonly type: readonly ["string", "null"];
|
|
289
|
+
readonly description: "Where the governance framework these assertions refer to can be read.";
|
|
290
|
+
};
|
|
187
291
|
};
|
|
188
292
|
};
|
|
189
293
|
};
|
|
@@ -201,7 +305,8 @@ export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
|
201
305
|
readonly required: readonly ["profile"];
|
|
202
306
|
readonly properties: {
|
|
203
307
|
readonly profile: {
|
|
204
|
-
readonly $ref: "#/$defs/
|
|
308
|
+
readonly $ref: "#/$defs/CommunityProfileView";
|
|
309
|
+
readonly description: "The community's profile as read, including the immutable `communityDid` an update cannot set.";
|
|
205
310
|
};
|
|
206
311
|
readonly fieldsChanged: {
|
|
207
312
|
readonly type: "array";
|
|
@@ -225,13 +330,24 @@ export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
|
225
330
|
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
226
331
|
};
|
|
227
332
|
};
|
|
228
|
-
readonly
|
|
229
|
-
readonly $anchor: "
|
|
230
|
-
readonly title: "
|
|
333
|
+
readonly CommunityProfileView: {
|
|
334
|
+
readonly $anchor: "communityProfileView";
|
|
335
|
+
readonly title: "CommunityProfileView";
|
|
231
336
|
readonly type: "object";
|
|
232
337
|
readonly additionalProperties: false;
|
|
233
|
-
readonly
|
|
338
|
+
readonly description: "A community profile **as read**: every member of CommunityProfile, plus the immutable identity a reader needs and an update must never set.\n\nCommunityProfile is the update-facing view and omits `communityDid` on purpose, so that a patch cannot re-point a community's identity. That is right for a payload and wrong for a response: a client holding a profile has no other way to learn which DID to verify that community's credentials against, and `community/profile/show` returning the update-facing view left the one member a consumer most needs undefined.\n\nSo reads get this and updates keep CommunityProfile. The split is the point — the immutability of `communityDid` is enforced by it being absent from the payload, not by prose asking implementers not to honour it.";
|
|
339
|
+
readonly required: readonly ["communityDid", "name", "language"];
|
|
234
340
|
readonly properties: {
|
|
341
|
+
readonly communityDid: {
|
|
342
|
+
readonly type: "string";
|
|
343
|
+
readonly minLength: 1;
|
|
344
|
+
readonly description: "The community's own DID — the identifier every credential it issues names as `issuer`, and the one a member's credential binds them to. Immutable: set when the community is created and not settable through an update.";
|
|
345
|
+
};
|
|
346
|
+
readonly createdAt: {
|
|
347
|
+
readonly type: "string";
|
|
348
|
+
readonly format: "date-time";
|
|
349
|
+
readonly description: "When the community was created. Immutable, like `communityDid`.";
|
|
350
|
+
};
|
|
235
351
|
readonly name: {
|
|
236
352
|
readonly type: "string";
|
|
237
353
|
readonly minLength: 1;
|
|
@@ -266,6 +382,39 @@ export declare const RESPONSE_PAYLOAD_SCHEMA: {
|
|
|
266
382
|
readonly enum: readonly ["active", "degraded"];
|
|
267
383
|
readonly description: "Trust-registry reachability. Populated on reads; not settable.";
|
|
268
384
|
};
|
|
385
|
+
readonly personhood: {
|
|
386
|
+
readonly $ref: "#/$defs/PersonhoodGovernance";
|
|
387
|
+
readonly description: "What this community's governance asserts about the personhood of its members.";
|
|
388
|
+
};
|
|
389
|
+
};
|
|
390
|
+
};
|
|
391
|
+
readonly PersonhoodGovernance: {
|
|
392
|
+
readonly $anchor: "personhoodGovernance";
|
|
393
|
+
readonly title: "PersonhoodGovernance";
|
|
394
|
+
readonly type: "object";
|
|
395
|
+
readonly additionalProperties: false;
|
|
396
|
+
readonly description: "A community's published position on personhood.\n\nDTG Credentials §Personhood Credentials places PHC status here rather than in the credential — \"PHC status is determined by governance and trust registries, not by credential structure\" — so a verifier deciding whether a VMC carries personhood weight reads this, not the credential's type array. §Governance Considerations item 1 makes the acceptable-IDVP list the community's to define and publish.\n\nEvery member is a declaration, not an enforcement: what a community actually accepts is decided by its own policy. Absent means the community has not published a position, which is not the same as asserting the negative.";
|
|
397
|
+
readonly properties: {
|
|
398
|
+
readonly realHuman: {
|
|
399
|
+
readonly type: "boolean";
|
|
400
|
+
readonly description: "Governance requires that members are real humans. Defaults to `false` when absent: a community that has not considered the question asserts nothing, which is the only safe default for a claim a verifier may rely on.";
|
|
401
|
+
};
|
|
402
|
+
readonly singleMembership: {
|
|
403
|
+
readonly type: "boolean";
|
|
404
|
+
readonly description: "Governance requires that each person holds at most one membership in **this** community. Per-community by definition — the glossary says \"exactly one membership in that VTC\" — so a single community can satisfy it without any network above it.";
|
|
405
|
+
};
|
|
406
|
+
readonly acceptedIdvps: {
|
|
407
|
+
readonly type: "array";
|
|
408
|
+
readonly items: {
|
|
409
|
+
readonly type: "string";
|
|
410
|
+
readonly minLength: 1;
|
|
411
|
+
};
|
|
412
|
+
readonly 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.";
|
|
413
|
+
};
|
|
414
|
+
readonly governanceFrameworkUrl: {
|
|
415
|
+
readonly type: readonly ["string", "null"];
|
|
416
|
+
readonly description: "Where the governance framework these assertions refer to can be read.";
|
|
417
|
+
};
|
|
269
418
|
};
|
|
270
419
|
};
|
|
271
420
|
};
|
|
@@ -313,6 +462,10 @@ export declare const SPEC: {
|
|
|
313
462
|
readonly enum: readonly ["attributed", "pairwise"];
|
|
314
463
|
readonly description: "Set the community's declared relationship-identifier default. See `CommunityProfile.relationshipIdentifierDefault` in the `vtc/_shared/0.1/community` schema. Omit to leave it unchanged.";
|
|
315
464
|
};
|
|
465
|
+
readonly personhood: {
|
|
466
|
+
readonly $ref: "#/$defs/PersonhoodGovernance";
|
|
467
|
+
readonly description: "Set the community's published personhood position. See `CommunityProfile.personhood` in the `vtc/_shared/0.1/community` schema. Replaces the whole object — a partial update would leave a verifier unable to tell an unset member from a cleared one. Omit to leave it unchanged.";
|
|
468
|
+
};
|
|
316
469
|
readonly extensions: {
|
|
317
470
|
readonly type: "object";
|
|
318
471
|
readonly description: "Opaque community-defined extension bag (maintainer-capped).";
|
|
@@ -330,7 +483,8 @@ export declare const SPEC: {
|
|
|
330
483
|
readonly required: readonly ["profile"];
|
|
331
484
|
readonly properties: {
|
|
332
485
|
readonly profile: {
|
|
333
|
-
readonly $ref: "#/$defs/
|
|
486
|
+
readonly $ref: "#/$defs/CommunityProfileView";
|
|
487
|
+
readonly description: "The community's profile as read, including the immutable `communityDid` an update cannot set.";
|
|
334
488
|
};
|
|
335
489
|
readonly fieldsChanged: {
|
|
336
490
|
readonly type: "array";
|
|
@@ -354,13 +508,24 @@ export declare const SPEC: {
|
|
|
354
508
|
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
355
509
|
};
|
|
356
510
|
};
|
|
357
|
-
readonly
|
|
358
|
-
readonly $anchor: "
|
|
359
|
-
readonly title: "
|
|
511
|
+
readonly CommunityProfileView: {
|
|
512
|
+
readonly $anchor: "communityProfileView";
|
|
513
|
+
readonly title: "CommunityProfileView";
|
|
360
514
|
readonly type: "object";
|
|
361
515
|
readonly additionalProperties: false;
|
|
362
|
-
readonly
|
|
516
|
+
readonly description: "A community profile **as read**: every member of CommunityProfile, plus the immutable identity a reader needs and an update must never set.\n\nCommunityProfile is the update-facing view and omits `communityDid` on purpose, so that a patch cannot re-point a community's identity. That is right for a payload and wrong for a response: a client holding a profile has no other way to learn which DID to verify that community's credentials against, and `community/profile/show` returning the update-facing view left the one member a consumer most needs undefined.\n\nSo reads get this and updates keep CommunityProfile. The split is the point — the immutability of `communityDid` is enforced by it being absent from the payload, not by prose asking implementers not to honour it.";
|
|
517
|
+
readonly required: readonly ["communityDid", "name", "language"];
|
|
363
518
|
readonly properties: {
|
|
519
|
+
readonly communityDid: {
|
|
520
|
+
readonly type: "string";
|
|
521
|
+
readonly minLength: 1;
|
|
522
|
+
readonly description: "The community's own DID — the identifier every credential it issues names as `issuer`, and the one a member's credential binds them to. Immutable: set when the community is created and not settable through an update.";
|
|
523
|
+
};
|
|
524
|
+
readonly createdAt: {
|
|
525
|
+
readonly type: "string";
|
|
526
|
+
readonly format: "date-time";
|
|
527
|
+
readonly description: "When the community was created. Immutable, like `communityDid`.";
|
|
528
|
+
};
|
|
364
529
|
readonly name: {
|
|
365
530
|
readonly type: "string";
|
|
366
531
|
readonly minLength: 1;
|
|
@@ -395,6 +560,39 @@ export declare const SPEC: {
|
|
|
395
560
|
readonly enum: readonly ["active", "degraded"];
|
|
396
561
|
readonly description: "Trust-registry reachability. Populated on reads; not settable.";
|
|
397
562
|
};
|
|
563
|
+
readonly personhood: {
|
|
564
|
+
readonly $ref: "#/$defs/PersonhoodGovernance";
|
|
565
|
+
readonly description: "What this community's governance asserts about the personhood of its members.";
|
|
566
|
+
};
|
|
567
|
+
};
|
|
568
|
+
};
|
|
569
|
+
readonly PersonhoodGovernance: {
|
|
570
|
+
readonly $anchor: "personhoodGovernance";
|
|
571
|
+
readonly title: "PersonhoodGovernance";
|
|
572
|
+
readonly type: "object";
|
|
573
|
+
readonly additionalProperties: false;
|
|
574
|
+
readonly description: "A community's published position on personhood.\n\nDTG Credentials §Personhood Credentials places PHC status here rather than in the credential — \"PHC status is determined by governance and trust registries, not by credential structure\" — so a verifier deciding whether a VMC carries personhood weight reads this, not the credential's type array. §Governance Considerations item 1 makes the acceptable-IDVP list the community's to define and publish.\n\nEvery member is a declaration, not an enforcement: what a community actually accepts is decided by its own policy. Absent means the community has not published a position, which is not the same as asserting the negative.";
|
|
575
|
+
readonly properties: {
|
|
576
|
+
readonly realHuman: {
|
|
577
|
+
readonly type: "boolean";
|
|
578
|
+
readonly description: "Governance requires that members are real humans. Defaults to `false` when absent: a community that has not considered the question asserts nothing, which is the only safe default for a claim a verifier may rely on.";
|
|
579
|
+
};
|
|
580
|
+
readonly singleMembership: {
|
|
581
|
+
readonly type: "boolean";
|
|
582
|
+
readonly description: "Governance requires that each person holds at most one membership in **this** community. Per-community by definition — the glossary says \"exactly one membership in that VTC\" — so a single community can satisfy it without any network above it.";
|
|
583
|
+
};
|
|
584
|
+
readonly acceptedIdvps: {
|
|
585
|
+
readonly type: "array";
|
|
586
|
+
readonly items: {
|
|
587
|
+
readonly type: "string";
|
|
588
|
+
readonly minLength: 1;
|
|
589
|
+
};
|
|
590
|
+
readonly 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.";
|
|
591
|
+
};
|
|
592
|
+
readonly governanceFrameworkUrl: {
|
|
593
|
+
readonly type: readonly ["string", "null"];
|
|
594
|
+
readonly description: "Where the governance framework these assertions refer to can be read.";
|
|
595
|
+
};
|
|
398
596
|
};
|
|
399
597
|
};
|
|
400
598
|
};
|
|
@@ -422,7 +620,8 @@ export declare const RESPONSE_SPEC: {
|
|
|
422
620
|
readonly required: readonly ["profile"];
|
|
423
621
|
readonly properties: {
|
|
424
622
|
readonly profile: {
|
|
425
|
-
readonly $ref: "#/$defs/
|
|
623
|
+
readonly $ref: "#/$defs/CommunityProfileView";
|
|
624
|
+
readonly description: "The community's profile as read, including the immutable `communityDid` an update cannot set.";
|
|
426
625
|
};
|
|
427
626
|
readonly fieldsChanged: {
|
|
428
627
|
readonly type: "array";
|
|
@@ -446,13 +645,24 @@ export declare const RESPONSE_SPEC: {
|
|
|
446
645
|
readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
|
|
447
646
|
};
|
|
448
647
|
};
|
|
449
|
-
readonly
|
|
450
|
-
readonly $anchor: "
|
|
451
|
-
readonly title: "
|
|
648
|
+
readonly CommunityProfileView: {
|
|
649
|
+
readonly $anchor: "communityProfileView";
|
|
650
|
+
readonly title: "CommunityProfileView";
|
|
452
651
|
readonly type: "object";
|
|
453
652
|
readonly additionalProperties: false;
|
|
454
|
-
readonly
|
|
653
|
+
readonly description: "A community profile **as read**: every member of CommunityProfile, plus the immutable identity a reader needs and an update must never set.\n\nCommunityProfile is the update-facing view and omits `communityDid` on purpose, so that a patch cannot re-point a community's identity. That is right for a payload and wrong for a response: a client holding a profile has no other way to learn which DID to verify that community's credentials against, and `community/profile/show` returning the update-facing view left the one member a consumer most needs undefined.\n\nSo reads get this and updates keep CommunityProfile. The split is the point — the immutability of `communityDid` is enforced by it being absent from the payload, not by prose asking implementers not to honour it.";
|
|
654
|
+
readonly required: readonly ["communityDid", "name", "language"];
|
|
455
655
|
readonly properties: {
|
|
656
|
+
readonly communityDid: {
|
|
657
|
+
readonly type: "string";
|
|
658
|
+
readonly minLength: 1;
|
|
659
|
+
readonly description: "The community's own DID — the identifier every credential it issues names as `issuer`, and the one a member's credential binds them to. Immutable: set when the community is created and not settable through an update.";
|
|
660
|
+
};
|
|
661
|
+
readonly createdAt: {
|
|
662
|
+
readonly type: "string";
|
|
663
|
+
readonly format: "date-time";
|
|
664
|
+
readonly description: "When the community was created. Immutable, like `communityDid`.";
|
|
665
|
+
};
|
|
456
666
|
readonly name: {
|
|
457
667
|
readonly type: "string";
|
|
458
668
|
readonly minLength: 1;
|
|
@@ -487,6 +697,39 @@ export declare const RESPONSE_SPEC: {
|
|
|
487
697
|
readonly enum: readonly ["active", "degraded"];
|
|
488
698
|
readonly description: "Trust-registry reachability. Populated on reads; not settable.";
|
|
489
699
|
};
|
|
700
|
+
readonly personhood: {
|
|
701
|
+
readonly $ref: "#/$defs/PersonhoodGovernance";
|
|
702
|
+
readonly description: "What this community's governance asserts about the personhood of its members.";
|
|
703
|
+
};
|
|
704
|
+
};
|
|
705
|
+
};
|
|
706
|
+
readonly PersonhoodGovernance: {
|
|
707
|
+
readonly $anchor: "personhoodGovernance";
|
|
708
|
+
readonly title: "PersonhoodGovernance";
|
|
709
|
+
readonly type: "object";
|
|
710
|
+
readonly additionalProperties: false;
|
|
711
|
+
readonly description: "A community's published position on personhood.\n\nDTG Credentials §Personhood Credentials places PHC status here rather than in the credential — \"PHC status is determined by governance and trust registries, not by credential structure\" — so a verifier deciding whether a VMC carries personhood weight reads this, not the credential's type array. §Governance Considerations item 1 makes the acceptable-IDVP list the community's to define and publish.\n\nEvery member is a declaration, not an enforcement: what a community actually accepts is decided by its own policy. Absent means the community has not published a position, which is not the same as asserting the negative.";
|
|
712
|
+
readonly properties: {
|
|
713
|
+
readonly realHuman: {
|
|
714
|
+
readonly type: "boolean";
|
|
715
|
+
readonly description: "Governance requires that members are real humans. Defaults to `false` when absent: a community that has not considered the question asserts nothing, which is the only safe default for a claim a verifier may rely on.";
|
|
716
|
+
};
|
|
717
|
+
readonly singleMembership: {
|
|
718
|
+
readonly type: "boolean";
|
|
719
|
+
readonly description: "Governance requires that each person holds at most one membership in **this** community. Per-community by definition — the glossary says \"exactly one membership in that VTC\" — so a single community can satisfy it without any network above it.";
|
|
720
|
+
};
|
|
721
|
+
readonly acceptedIdvps: {
|
|
722
|
+
readonly type: "array";
|
|
723
|
+
readonly items: {
|
|
724
|
+
readonly type: "string";
|
|
725
|
+
readonly minLength: 1;
|
|
726
|
+
};
|
|
727
|
+
readonly 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.";
|
|
728
|
+
};
|
|
729
|
+
readonly governanceFrameworkUrl: {
|
|
730
|
+
readonly type: readonly ["string", "null"];
|
|
731
|
+
readonly description: "Where the governance framework these assertions refer to can be read.";
|
|
732
|
+
};
|
|
490
733
|
};
|
|
491
734
|
};
|
|
492
735
|
};
|