specs/vtc/groups/join/v0_1/payload
library
Classes
-
CardBlobRef
-
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.
-
GroupJoinRequest
-
GroupJoinRequest
-
GroupMember
-
GroupMember
-
Payload
-
A member joins an open group at once, or asks to join a group that takes requests;
where the group issues credentials, they are offered a membership credential issued
by the group's DID. The outer document members are owned by the framework — SPEC
§6.3.
-
Response
-
The success response to a vtc/groups/join/0.1 request. Carried in a Trust Task
document whose type is https://trusttasks.org/spec/vtc/groups/join/0.1#response.
-
VerifiedValue
-
The value of a
credential-sourced field: a claim the member disclosed from a
credential they presented, with the issuer that attests it. A verified value always
names its issuer, and a self-asserted value is never shaped as one. The community
keeps only the disclosed claim and these facts about it — never the presentation.
Extension Types
-
CardBlobRefMediaType
-
Media type of the stored bytes.
-
GroupJoinRequestState
-
GroupJoinRequestState is a closed set of string values defined by this
specification's schema.
-
GroupMemberState
-
active: a member. pending: an addition to a group carrying authority that is
waiting for the consent the community requires for a grant.
-
MembershipSource
-
How the member came to be in the group.
added: by a manager. joined: they
joined an open group. requestApproved: a manager approved their request. rule:
a dynamic group's rule admits them.
-
ResponseOutcome
-
joined: a member now. requested: a request awaits a manager. optOutWithdrawn:
the caller's opt-out of a dynamic group is undone, but its rule does not admit them
now; they become a member when it does.
Typedefs
-
EntryFields
= Map<String, FieldValue?>
-
The fields of one entry that a particular viewer may see, keyed by field: the
intersection of the member's visibility, the community's ceiling and policy, plus
any derived fields that intersection admits. A withheld field is ABSENT, never
null.
-
EntryId
= String
-
Opaque identifier of one directory entry:
dir_ followed by 16 to 64 base64url
characters. Random, scoped to one community, and stable for the life of the
membership — it survives a rotation of the member's DID, which is why groups, notes
and cards are keyed by it. It MUST NOT be derived from, and MUST NOT reveal, any
DID of the member, and the same person's entries in two communities MUST NOT share
one. Compared by exact string equality.
-
Ext
= Map<String, dynamic>
-
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.
-
FieldKey
= String
-
Identifier of a directory field. A key with no
. is a BASE field, the same in
every community: displayName, nickname, avatar, pronouns, bio, links
(written by the member) and role, joinedAt, did, personhood (derived from
the community's own records, never stored on a card). A community-defined field
MUST use a reverse-DNS key (org.example.employer), so a base key never collides
with one, and a key is never reused with a different meaning once defined.
-
FieldValue
= Object?
-
The value of one field. Which shape a field takes is fixed by its definition's
type: text-like types (text, longText, url, email, phone, enum,
date as YYYY-MM-DD, country as ISO 3166-1 alpha-2, did) are strings;
multiEnum and the base field links are arrays of strings; image and the base
field avatar are a CardBlobRef; claim is a VerifiedValue; the derived base
field personhood is a boolean.
-
GroupCredentialId
= String
-
Identifier (
id) of a group membership credential issued to a member. Each renewal
issues a new credential with a new identifier. Validity is the community's setting;
a community SHOULD default to 30 days, renewed when 10 days remain.
-
GroupId
= String
-
Opaque identifier of a community group:
grp_ followed by 16 to 64 base64url
characters. Random and community-scoped; not the group's DID.
-
JoinRequestId
= String
-
JoinRequestId, defined by this specification's schema.
-
JoinRequestMessage
= String
-
An optional note from the member to the group's managers. Plain text.