@openvtc/trust-tasks 0.26.18 → 0.26.19
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/CHANGELOG.md +56 -0
- package/dist/_shared/components.d.ts +113 -1
- package/dist/_shared/components.d.ts.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -1
- package/dist/rooms/owner/group/add/0.3/payload.d.ts +417 -0
- package/dist/rooms/owner/group/add/0.3/payload.d.ts.map +1 -0
- package/dist/rooms/owner/group/add/0.3/payload.js +218 -0
- package/dist/rooms/owner/group/add/0.3/payload.js.map +1 -0
- package/dist/rooms/owner/group/renew/0.2/payload.d.ts +299 -0
- package/dist/rooms/owner/group/renew/0.2/payload.d.ts.map +1 -0
- package/dist/rooms/owner/group/renew/0.2/payload.js +163 -0
- package/dist/rooms/owner/group/renew/0.2/payload.js.map +1 -0
- package/dist/vtc/directory/_shared/0.1/directory-card.d.ts +1 -1
- package/dist/vtc/directory/_shared/0.1/directory-card.d.ts.map +1 -1
- package/dist/vtc/directory/_shared/0.1/disclosure-statement.d.ts +18 -0
- package/dist/vtc/directory/_shared/0.1/disclosure-statement.d.ts.map +1 -0
- package/dist/vtc/directory/_shared/0.1/disclosure-statement.js +6 -0
- package/dist/vtc/directory/_shared/0.1/disclosure-statement.js.map +1 -0
- package/dist/vtc/directory/card/assert/0.1/payload.d.ts +4 -4
- package/dist/vtc/directory/card/assert/0.1/payload.js +2 -2
- package/dist/vtc/directory/card/assert/0.1/payload.js.map +1 -1
- package/dist/vtc/directory/card/public/0.1/payload.d.ts +348 -0
- package/dist/vtc/directory/card/public/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/directory/card/public/0.1/payload.js +197 -0
- package/dist/vtc/directory/card/public/0.1/payload.js.map +1 -0
- package/dist/vtc/directory/card/publish/0.1/payload.d.ts +384 -0
- package/dist/vtc/directory/card/publish/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/directory/card/publish/0.1/payload.js +222 -0
- package/dist/vtc/directory/card/publish/0.1/payload.js.map +1 -0
- package/dist/vtc/directory/card/show/0.1/payload.d.ts +138 -6
- package/dist/vtc/directory/card/show/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/directory/card/show/0.1/payload.js +82 -2
- package/dist/vtc/directory/card/show/0.1/payload.js.map +1 -1
- package/dist/vtc/directory/card/update/0.1/payload.d.ts +138 -6
- package/dist/vtc/directory/card/update/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/directory/card/update/0.1/payload.js +82 -2
- package/dist/vtc/directory/card/update/0.1/payload.js.map +1 -1
- package/dist/vtc/directory/disclosure/0.1/payload.d.ts +951 -0
- package/dist/vtc/directory/disclosure/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/directory/disclosure/0.1/payload.js +613 -0
- package/dist/vtc/directory/disclosure/0.1/payload.js.map +1 -0
- package/dist/vtc/directory/entries/list/0.1/payload.d.ts +4 -4
- package/dist/vtc/directory/entries/list/0.1/payload.js +2 -2
- package/dist/vtc/directory/entries/list/0.1/payload.js.map +1 -1
- package/dist/vtc/directory/entries/show/0.1/payload.d.ts +4 -4
- package/dist/vtc/directory/entries/show/0.1/payload.js +2 -2
- package/dist/vtc/directory/entries/show/0.1/payload.js.map +1 -1
- package/dist/vtc/directory/images/get/0.1/payload.d.ts +484 -0
- package/dist/vtc/directory/images/get/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/directory/images/get/0.1/payload.js +273 -0
- package/dist/vtc/directory/images/get/0.1/payload.js.map +1 -0
- package/dist/vtc/directory/images/upload/0.1/payload.d.ts +441 -0
- package/dist/vtc/directory/images/upload/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/directory/images/upload/0.1/payload.js +262 -0
- package/dist/vtc/directory/images/upload/0.1/payload.js.map +1 -0
- package/dist/vtc/directory/introduction/0.1/payload.d.ts +2 -2
- package/dist/vtc/directory/introduction/0.1/payload.js +1 -1
- package/dist/vtc/directory/introduction/0.1/payload.js.map +1 -1
- package/dist/vtc/groups/join/0.1/payload.d.ts +4 -4
- package/dist/vtc/groups/join/0.1/payload.js +2 -2
- package/dist/vtc/groups/join/0.1/payload.js.map +1 -1
- package/dist/vtc/groups/members/add/0.1/payload.d.ts +4 -4
- package/dist/vtc/groups/members/add/0.1/payload.js +2 -2
- package/dist/vtc/groups/members/add/0.1/payload.js.map +1 -1
- package/dist/vtc/groups/members/list/0.1/payload.d.ts +4 -4
- package/dist/vtc/groups/members/list/0.1/payload.js +2 -2
- package/dist/vtc/groups/members/list/0.1/payload.js.map +1 -1
- package/dist/vtc/groups/requests/decide/0.1/payload.d.ts +4 -4
- package/dist/vtc/groups/requests/decide/0.1/payload.js +2 -2
- package/dist/vtc/groups/requests/decide/0.1/payload.js.map +1 -1
- package/dist/vtc/groups/requests/list/0.1/payload.d.ts +4 -4
- package/dist/vtc/groups/requests/list/0.1/payload.js +2 -2
- package/dist/vtc/groups/requests/list/0.1/payload.js.map +1 -1
- package/dist/vtc/join-requests/manifest/0.4/payload.d.ts +2303 -0
- package/dist/vtc/join-requests/manifest/0.4/payload.d.ts.map +1 -0
- package/dist/vtc/join-requests/manifest/0.4/payload.js +1293 -0
- package/dist/vtc/join-requests/manifest/0.4/payload.js.map +1 -0
- package/package.json +1 -1
- package/src/_shared/components.ts +113 -1
- package/src/index.ts +9 -0
- package/src/rooms/owner/group/add/0.3/payload.ts +288 -0
- package/src/rooms/owner/group/renew/0.2/payload.ts +213 -0
- package/src/vtc/directory/_shared/0.1/directory-card.ts +1 -1
- package/src/vtc/directory/_shared/0.1/disclosure-statement.ts +19 -0
- package/src/vtc/directory/card/assert/0.1/payload.ts +2 -2
- package/src/vtc/directory/card/public/0.1/payload.ts +238 -0
- package/src/vtc/directory/card/publish/0.1/payload.ts +261 -0
- package/src/vtc/directory/card/show/0.1/payload.ts +84 -4
- package/src/vtc/directory/card/update/0.1/payload.ts +84 -4
- package/src/vtc/directory/disclosure/0.1/payload.ts +645 -0
- package/src/vtc/directory/entries/list/0.1/payload.ts +2 -2
- package/src/vtc/directory/entries/show/0.1/payload.ts +2 -2
- package/src/vtc/directory/images/get/0.1/payload.ts +320 -0
- package/src/vtc/directory/images/upload/0.1/payload.ts +308 -0
- package/src/vtc/directory/introduction/0.1/payload.ts +1 -1
- package/src/vtc/groups/join/0.1/payload.ts +2 -2
- package/src/vtc/groups/members/add/0.1/payload.ts +2 -2
- package/src/vtc/groups/members/list/0.1/payload.ts +2 -2
- package/src/vtc/groups/requests/decide/0.1/payload.ts +2 -2
- package/src/vtc/groups/requests/list/0.1/payload.ts +2 -2
- package/src/vtc/join-requests/manifest/0.4/payload.ts +1490 -0
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,62 @@ The package versions over **its own API** — what a consumer compiles against
|
|
|
11
11
|
not over `SPEC.md`. Below 1.0 a breaking change bumps the leading non-zero
|
|
12
12
|
component.
|
|
13
13
|
|
|
14
|
+
## 0.26.19 — 2026-10-19
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- **vtc/directory**: Pictures and external cards — images/upload, images/get, card/publish, card/public (#826)
|
|
20
|
+
|
|
21
|
+
The two parts of the member directory that had no Trust Task.
|
|
22
|
+
|
|
23
|
+
- **vtc/directory**: Disclosure — the statement of what a community's directory discloses, and to whom; join manifest 0.4 carries it (#823)
|
|
24
|
+
|
|
25
|
+
A community offering a member directory must publish a statement of what it discloses and to whom, generated from its configuration, and show it to applicants before they apply (VTI-DIR-130). No task carried one.
|
|
26
|
+
|
|
27
|
+
vtc/directory/disclosure/0.1 returns it. The request carries nothing; any reader the community answers vtc/join-requests/manifest for may read it, with or without a proof. The statement (`DirectoryDisclosure`, in directory/_shared/0.1/disclosure-statement.schema.json) lists every active field with its source, ceiling, default visibility and whether it is searchable or a facet; what a new card gets (listing, search, and introductions where the community delivers them); how far a member's membership DID can reach; whether administrators keep notes; whether the community has groups, and how long their membership credentials last; and whether a card can be published beyond the community. Every audience is an upper bound, since policy only narrows. It names itself with a statementDigest (JCS without the digest, SHA-256 multihash), so an applicant can record which statement it was shown. It carries no timestamp, so the digest changes exactly when what it says changes.
|
|
28
|
+
|
|
29
|
+
vtc/join-requests/manifest/0.4 adds one optional response member, directoryDisclosure: the same statement, present exactly where the community offers a directory, outside every criterion, so no requirementsDigest moves. Nothing else changes from 0.3.
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
### Specifications
|
|
34
|
+
|
|
35
|
+
- **rooms/owner/group**: Add 0.3 and renew 0.2 settle a pending removal by remove 0.3 item 8 (#824)
|
|
36
|
+
|
|
37
|
+
rooms/owner/group/remove 0.3 item 8 settles a pending removal "at a later
|
|
38
|
+
request — of this task or of any other that settles the room's pending
|
|
39
|
+
advance", and has that other task refuse with its own hostRefused carrying
|
|
40
|
+
{member, code, listKept}. add and renew are those other tasks, and neither
|
|
41
|
+
said so: their item 6 knew only the epoch check (read alone, it never
|
|
42
|
+
redelivers the removal's revocation list), and their hostRefused meant "the
|
|
43
|
+
host declined the epoch advance; nothing was changed" with no details shape.
|
|
44
|
+
OpenVTC/verifiable-trust-infrastructure #2191 implements remove 0.3 item 8
|
|
45
|
+
before add and renew at every version, so that implementation diverged from
|
|
46
|
+
the add and renew specifications it serves.
|
|
47
|
+
|
|
48
|
+
rooms/owner/group/add 0.3 and rooms/owner/group/renew 0.2:
|
|
49
|
+
- item 6.1 settles a pending removal by remove 0.3 item 8, in full and before
|
|
50
|
+
the request's own work; item 6.2 is the old epoch check for every other
|
|
51
|
+
pending advance (and now says an unanswered rooms/info is hostUnreachable);
|
|
52
|
+
- add earlierRemovalRefused {member, code, listKept}, the same code and
|
|
53
|
+
details remove 0.3 uses, so all three tasks report it alike;
|
|
54
|
+
- hostUnreachable gains details.stage (revocation | advance) as remove 0.3;
|
|
55
|
+
hostRefused gains a bounded details {code, reason} and means only that the
|
|
56
|
+
host declined this request's own advance.
|
|
57
|
+
Payload and response schemas unchanged.
|
|
58
|
+
|
|
59
|
+
Earlier versions (add 0.1/0.2, renew 0.1) are untouched. The new versions'
|
|
60
|
+
compatibility notes say what a recipient answers there, which is what remove
|
|
61
|
+
0.3 item 8 already requires: hostRefused carrying {member, code, listKept}
|
|
62
|
+
(their hostRefused declares no details shape) and hostUnreachable with no
|
|
63
|
+
details.
|
|
64
|
+
|
|
65
|
+
remove 0.3 item 8 is edited in place, errata-style: its "at another task"
|
|
66
|
+
clauses now name add 0.3 / renew 0.2's earlierRemovalRefused and stage, and
|
|
67
|
+
keep hostRefused for versions declaring no such code. No pre-existing
|
|
68
|
+
version's wire behaviour changes.
|
|
69
|
+
|
|
14
70
|
## 0.26.18 — 2026-10-18
|
|
15
71
|
|
|
16
72
|
|
|
@@ -723,6 +723,10 @@ export type Handle = string;
|
|
|
723
723
|
* **Not a timestamp.** A time is host-asserted, unverifiable and useless for this: two roots a second apart are not evidence of anything, while two roots at one version are.
|
|
724
724
|
*/
|
|
725
725
|
export type HeadVersion = number;
|
|
726
|
+
/**
|
|
727
|
+
* The media types a directory image may have — those a `CardBlobRef` admits.
|
|
728
|
+
*/
|
|
729
|
+
export type ImageMediaType = "image/png" | "image/jpeg" | "image/webp" | "image/avif";
|
|
726
730
|
/**
|
|
727
731
|
* Who may ask the community to introduce them to this member. `anyone`: any active member who can find the entry. `groups`: only members who share a community group with them. `connections`: only members holding an attributed, in-force verified relationship with them. `off`: nobody. A refused introduction is never reported to its sender.
|
|
728
732
|
*/
|
|
@@ -4621,7 +4625,7 @@ export interface CapabilityScopeNone {
|
|
|
4621
4625
|
scope: "none";
|
|
4622
4626
|
}
|
|
4623
4627
|
/**
|
|
4624
|
-
* A content-addressed image held in the community's blob store — an avatar or an `image` field. At most 256 KiB, images only, re-encoded by the community on upload (metadata stripped, dimensions capped) so its digest does not link the member across communities. `url` and `urlExpiresAt` appear
|
|
4628
|
+
* A content-addressed image held in the community's blob store — an avatar or an `image` field. At most 256 KiB, images only, re-encoded by the community on upload (vtc/directory/images/upload: metadata stripped, dimensions capped) so its digest does not link the member across communities. A viewer reads the bytes with vtc/directory/images/get, which answers only where the same projection shows the value. `url` and `urlExpiresAt` MAY appear in a projection: a short-lived URL the community checks against the same projection, so a member-only image is never a public URL. A community that does not offer one leaves both out.
|
|
4625
4629
|
*/
|
|
4626
4630
|
export interface CardBlobRef {
|
|
4627
4631
|
/**
|
|
@@ -5801,6 +5805,7 @@ export interface DirectoryCard {
|
|
|
5801
5805
|
* @maxItems 64
|
|
5802
5806
|
*/
|
|
5803
5807
|
groupAudience?: string[];
|
|
5808
|
+
externalCard?: ExternalCard;
|
|
5804
5809
|
/**
|
|
5805
5810
|
* Incremented on every accepted change to the card, by its subject or by an administrator's assertion.
|
|
5806
5811
|
*/
|
|
@@ -5814,6 +5819,36 @@ export interface DirectoryCard {
|
|
|
5814
5819
|
*/
|
|
5815
5820
|
ext?: Ext;
|
|
5816
5821
|
}
|
|
5822
|
+
/**
|
|
5823
|
+
* The statement itself. Every member is generated from the community's configuration when the statement is read. `statementDigest` names this exact statement, so an applicant can record which one it was shown.
|
|
5824
|
+
*/
|
|
5825
|
+
export interface DirectoryDisclosure {
|
|
5826
|
+
/**
|
|
5827
|
+
* Every active field, base and community-defined, in display order. A base field the community has disabled is absent, which is how a reader learns it is not collected.
|
|
5828
|
+
*
|
|
5829
|
+
* @maxItems 128
|
|
5830
|
+
*/
|
|
5831
|
+
fields: DisclosedField[];
|
|
5832
|
+
newCard: NewCardDefaults;
|
|
5833
|
+
/**
|
|
5834
|
+
* The widest audience a member's membership identifier — the DID they joined with — can reach through the directory: the ceiling of the base field `did`, or `admins` where that field is disabled. `members` or `public` means a member may choose to show it that widely; a new card never shows it beyond `admins` (VTI-DIR-042). Administrators always see it.
|
|
5835
|
+
*/
|
|
5836
|
+
membershipIdentifiers: Audience;
|
|
5837
|
+
/**
|
|
5838
|
+
* Whether administrators keep notes about members. Notes are never on a card and never reach another member; a member may ask for the notes about them.
|
|
5839
|
+
*/
|
|
5840
|
+
adminNotes: boolean;
|
|
5841
|
+
groups?: GroupDisclosure;
|
|
5842
|
+
/**
|
|
5843
|
+
* Whether a member may publish a card beyond the community: their `public` values, signed by them, offered through the community's trust registry. Always the member's own choice, and off on a new card. False where the community cannot publish external cards.
|
|
5844
|
+
*/
|
|
5845
|
+
externalCards: boolean;
|
|
5846
|
+
/**
|
|
5847
|
+
* Digest over the RFC 8785 (JCS) canonicalization of this statement with the `statementDigest` member removed, as a multibase-encoded multihash (SHA-256 and base58btc RECOMMENDED). Changes exactly when what the statement says changes.
|
|
5848
|
+
*/
|
|
5849
|
+
statementDigest: DigestMultibase;
|
|
5850
|
+
ext?: Ext;
|
|
5851
|
+
}
|
|
5817
5852
|
/**
|
|
5818
5853
|
* One entry as a particular viewer sees it.
|
|
5819
5854
|
*/
|
|
@@ -5844,6 +5879,35 @@ export interface DirectoryRef {
|
|
|
5844
5879
|
*/
|
|
5845
5880
|
entryId: DirectoryEntryId;
|
|
5846
5881
|
}
|
|
5882
|
+
/**
|
|
5883
|
+
* One active field of the community's directory, as an applicant needs to see it: what it is, who writes its value, the widest audience it may ever reach and the audience a new card gives it. Disabled and retired fields are not listed: no projection shows them.
|
|
5884
|
+
*/
|
|
5885
|
+
export interface DisclosedField {
|
|
5886
|
+
key: FieldKey;
|
|
5887
|
+
label: FieldLabel;
|
|
5888
|
+
description?: FieldDescription;
|
|
5889
|
+
type: FieldType;
|
|
5890
|
+
/**
|
|
5891
|
+
* Who writes the value. `admin` and `credential` matter most to an applicant: an `admin` field holds what the community asserts about the member, which the member reads and cannot change.
|
|
5892
|
+
*/
|
|
5893
|
+
source: FieldSource;
|
|
5894
|
+
/**
|
|
5895
|
+
* The widest audience the field may ever reach, whatever the member chooses.
|
|
5896
|
+
*/
|
|
5897
|
+
ceiling: Audience;
|
|
5898
|
+
/**
|
|
5899
|
+
* The audience a new card gives the field until its member chooses. Never wider than `ceiling`.
|
|
5900
|
+
*/
|
|
5901
|
+
defaultVisibility: Audience;
|
|
5902
|
+
/**
|
|
5903
|
+
* Whether a member's search may match the field, within what the searcher may see.
|
|
5904
|
+
*/
|
|
5905
|
+
searchable: boolean;
|
|
5906
|
+
/**
|
|
5907
|
+
* Whether members may filter on the field and see counts by its values. Absent: false.
|
|
5908
|
+
*/
|
|
5909
|
+
facet?: boolean;
|
|
5910
|
+
}
|
|
5847
5911
|
/**
|
|
5848
5912
|
* The member's three discoverability decisions, made separately.
|
|
5849
5913
|
*/
|
|
@@ -6285,6 +6349,20 @@ export interface ExternalAccount {
|
|
|
6285
6349
|
createdAt: string;
|
|
6286
6350
|
updatedAt: string;
|
|
6287
6351
|
}
|
|
6352
|
+
/**
|
|
6353
|
+
* Where the member's external card stands. Present on a card exactly when `discoverability.external` is true. `published`: the community is serving the card the member signed, and its trust registry points to it. `awaitingSignature`: the member's `public` values have changed since they signed, so the community has withdrawn the card it was serving and serves none until the member signs the current values (vtc/directory/card/publish). The community never serves a card the member did not sign, and never one that differs from their current `public` values.
|
|
6354
|
+
*/
|
|
6355
|
+
export interface ExternalCard {
|
|
6356
|
+
state: "published" | "awaitingSignature";
|
|
6357
|
+
/**
|
|
6358
|
+
* Present while `published`: digest of the card served, as vtc/directory/card/publish defines it.
|
|
6359
|
+
*/
|
|
6360
|
+
cardDigest?: DigestMultibase;
|
|
6361
|
+
/**
|
|
6362
|
+
* Present while `published`: when the card now served was published.
|
|
6363
|
+
*/
|
|
6364
|
+
publishedAt?: string;
|
|
6365
|
+
}
|
|
6288
6366
|
/**
|
|
6289
6367
|
* One displayed value, with where it comes from and how to render it.
|
|
6290
6368
|
*/
|
|
@@ -6583,6 +6661,15 @@ export interface GroupBinding {
|
|
|
6583
6661
|
createdAt: string;
|
|
6584
6662
|
createdBy?: string;
|
|
6585
6663
|
}
|
|
6664
|
+
/**
|
|
6665
|
+
* Present when the community has groups. A member of a group holds a credential, issued by the group's own identifier, that evidences their membership, and can present it outside the community — which is why an applicant is told.
|
|
6666
|
+
*/
|
|
6667
|
+
export interface GroupDisclosure {
|
|
6668
|
+
/**
|
|
6669
|
+
* How long each group membership credential is valid for, as an ISO 8601 duration in weeks, days, hours, minutes and seconds (`P30D`). It is renewed while the member stays in the group, and a credential already issued stays valid until it expires even after its holder leaves.
|
|
6670
|
+
*/
|
|
6671
|
+
credentialValidity: string;
|
|
6672
|
+
}
|
|
6586
6673
|
export interface GroupJoinRequest {
|
|
6587
6674
|
requestId: JoinRequestId;
|
|
6588
6675
|
groupId: GroupId;
|
|
@@ -7501,6 +7588,23 @@ export interface MonitorFilter {
|
|
|
7501
7588
|
*/
|
|
7502
7589
|
failuresOnly?: boolean;
|
|
7503
7590
|
}
|
|
7591
|
+
/**
|
|
7592
|
+
* The discoverability a card has when the community creates it, before its member chooses. A new card is never published beyond the community (VTI-DIR-042), so there is no member for that here: `externalCards` says whether the member may turn it on.
|
|
7593
|
+
*/
|
|
7594
|
+
export interface NewCardDefaults {
|
|
7595
|
+
/**
|
|
7596
|
+
* The listing a new card starts with: the community's `defaultListing` (vtc/directory/fields/list). Every member may always choose `hidden`.
|
|
7597
|
+
*/
|
|
7598
|
+
listing: Listing;
|
|
7599
|
+
/**
|
|
7600
|
+
* What a member's search may match, as the card's `discoverability.search`.
|
|
7601
|
+
*/
|
|
7602
|
+
search: "byName" | "exactNickname" | "off";
|
|
7603
|
+
/**
|
|
7604
|
+
* From whom a new card accepts introductions. Absent where the community does not deliver introductions.
|
|
7605
|
+
*/
|
|
7606
|
+
introductions?: Introductions;
|
|
7607
|
+
}
|
|
7504
7608
|
/**
|
|
7505
7609
|
* A community's offer of admission to a room it owns, as the member it is addressed to sees it.
|
|
7506
7610
|
*/
|
|
@@ -8012,6 +8116,14 @@ export interface PublicKeyCredentialRequestOptions {
|
|
|
8012
8116
|
allowCredentials?: PublicKeyCredentialDescriptor[];
|
|
8013
8117
|
userVerification?: "discouraged" | "preferred" | "required";
|
|
8014
8118
|
}
|
|
8119
|
+
/**
|
|
8120
|
+
* A member's external card: a JSContact `Card` (RFC 9553) holding exactly their values whose visibility is `public`, mapped as `JSContactCard` maps them, with the member's W3C Data Integrity `proof`. The community serves it as received and never signs, composes or edits it (VTI-REG-004 item 4).
|
|
8121
|
+
*
|
|
8122
|
+
* Carried as an open object, and deliberately so: the proof covers every member of the card, and a typed binding that kept only the members named here would drop the rest and break the signature. So this schema constrains none of its members, and a consumer MUST check them itself: `@type`, `version`, `uid` and `proof` are present; `@type` is `Card`; `version` is `1.0`; `uid` is `urn:vtc-directory:<EntryId>`; `proof` is a `DataIntegrityProof` with `cryptosuite` `eddsa-jcs-2022` or `ecdsa-jcs-2019`, `proofPurpose` `assertionMethod`, and a `verificationMethod` of the member's membership DID authorized for `assertionMethod`; and the proof verifies over the card without it, before any member is relied on.
|
|
8123
|
+
*/
|
|
8124
|
+
export interface PublishedCard {
|
|
8125
|
+
[k: string]: unknown | undefined;
|
|
8126
|
+
}
|
|
8015
8127
|
/**
|
|
8016
8128
|
* The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.
|
|
8017
8129
|
*/
|