vetted/1 draft

Predicate IRI, exact bytes: https://registry.trustoverip.org/dtg/vsc/vetted/1

Machine-readable: predicate.jsonld, also served at this URL with Accept: application/ld+json. Definition format: predicate.schema.json.

Definition

Label
envetted
Meaning
enThe issuer attests that it checked the subject's claimed identity in a vetting session, by the method and against the document classes the object states.
Classificationevidence; weighed by: The community named in object.value.community, when it decides admission. A statement is not a decision, and a community may require several from distinct vetters.
Objectvalue; schema https://registry.trustoverip.org/dtg/vsc/vetted/1/vetting.schema.json
Subject–object relationshipnone required
Additional membersnone
taskContextREQUIRED, with taskDigestMultibase
Minimum issuer scopedirected
IssuerA member the community has made eligible to vet, issuing under the member identifier its VMC names. Eligibility is the community's to confer and to withdraw, and a verifier checks it under community policy rather than inferring it from this statement.
Verification establishesThat the named member states it carried out the described check on the subject's claimed identity, in the exchange taskContext names.
Verification does not establish
  • that the subject's claimed identity is true
  • that the vetter was eligible to vet, which is a fact about the community and is checked separately
  • that the check was competent
  • that the subject has been admitted to any community; admission is a decision the community records, and this statement is one input to it
Defined innone
Governed bythe working group that maintains this registry

The type-level bound of the specification's What Verification Establishes applies in full: a statement attests; it never confers representation, authority, membership, admission, governed status or task completion.

Profile

A statement under this predicate records one peer identity check. An existing member of a community, the vetter, checks in person or on video that an applicant is who they claim to be and controls the identifier they will join with, and records that check as a statement. The community collects several such statements and decides admission on them.

The DTG Credentials Core Specification uses this profile as its informative worked example of a community-defined predicate, under an illustrative community namespace. This entry is the normative definition of the profile in the DTG namespace, so that communities running peer vetting can share one identifier for it. Where the two differ, this entry governs.

Why its own predicate

A vetting statement is a record of a procedure: a named member carried out a check, by a stated method, against stated classes of document, on a stated date.

A vetting statement is also made before any edge exists. The vetter and the applicant may share no relationship, and the applicant is not yet a member. A statement annotates a node, so nothing has to be invented to explain what edge it presumes.

What the object carries

The object is a value whose shape this profile fixes, in vetting.schema.json:

Member Meaning
community DID of the one community the statement was made for. A statement does not count anywhere else.
method inPerson, video or priorAcquaintance.
documentClasses Classes of identity document relied on, for example passport. Empty or absent for priorAcquaintance. Never a document number, image or portrait.
claimsVerified Claim types checked against the person, for example name.legal. Claim values never appear.
livenessConfirmed Whether the vetter confirmed, during the session, that the person in front of them controlled credentialSubject.id.
identityCommitment A salted commitment to the identity claims the applicant presented.
cardDigestMultibase Digest of the signed card the applicant presented, over the card exactly as the vetter received it. It lets a dispute identify the exact card relied on without the community ever receiving it.
declaredRelationship none, communityColleague, sameEmployer, family or otherPersonal, so a community can limit how many statements from related vetters it counts.
attestationTextDigest Optional. Digest of the governance text the vetter was shown before signing.

Enumerated values are camelCase, the convention the VC Data Model 2.0 and Data Integrity use for their own values (assertionMethod, revocation). The specification's worked example is aligned to the same spelling.

Notes for implementers

Examples

examples/video-vetting.json

{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://registry.trustoverip.org/dtg/context/v1"
  ],
  "type": [
    "VerifiableCredential",
    "DTGCredential",
    "StatementCredential"
  ],
  "issuer": "did:webvh:QmPEQVM1JPTyrvEgBcDXwjK4TeyLGSX1PxjgyeAisdWM1p:chess-club.example:carol",
  "issuerScope": "directed",
  "validFrom": "2026-09-20T10:14:00Z",
  "validUntil": "2027-01-18T10:14:00Z",
  "taskContext": "urn:uuid:5b0c7e0e-3f7a-4c52-9d0e-2a7c1f6b9e41",
  "taskDigestMultibase": "zQmNLei78zWmzUdbeRB3CiUfAizWUrbeeZh5K1rhAQKCh51",
  "credentialSubject": {
    "id": "did:key:z6MkjRagNiMu91DduvCvgEsqLZDVzrJzFrwahc4tXLt9DoHd",
    "predicate": "https://registry.trustoverip.org/dtg/vsc/vetted/1",
    "object": {
      "value": {
        "community": "did:webvh:QmSbCcXWDDJmqE8m1nZt7Ew5DhN3w2Lq6G2rB9sX4yYk1a:chess-club.example",
        "method": "video",
        "documentClasses": [
          "passport"
        ],
        "claimsVerified": [
          "name.legal"
        ],
        "livenessConfirmed": true,
        "identityCommitment": "zQmYtUc4iTCbbfVSDNKvtQqrfyezPPnFvE33wFmutw9PBBk",
        "cardDigestMultibase": "zQmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n",
        "declaredRelationship": "communityColleague",
        "attestationTextDigest": "zQmWhCFfStzUE4HGseiQ1XWi2eEp1GTQEKnt2jyBe7uqzXD"
      }
    }
  },
  "proof": {
    "type": "DataIntegrityProof",
    "cryptosuite": "eddsa-jcs-2022",
    "created": "2026-09-20T10:14:00Z",
    "proofPurpose": "assertionMethod",
    "verificationMethod": "did:webvh:QmPEQVM1JPTyrvEgBcDXwjK4TeyLGSX1PxjgyeAisdWM1p:chess-club.example:carol#key-1",
    "proofValue": "z3FXQjecWJKT…illustrative…"
  }
}

Last changed 2026-09-30.