Ask for `<type>.credential` and you get the entire Verifiable Credential as a
JSON object, under `true` in the [userinfo response](/oauth-oidc-reference/endpoints/userinfo-endpoint/userinfo-response-format).
This page shows what comes back, for each of the seven.

{% callout type="warning" %}
A whole credential carries everything the check returned - including findings
about other people who happen to share your customer's name. Where a summary
claim answers your question, ask for that instead. See [Requesting claims](/claims-and-credentials/requesting-claims)
and the [claim reference](/claims-and-credentials/claim-reference).
{% /callout %}

## The shape they all share

Every credential is an Open Badges 3.0 `AchievementCredential`. Six of the seven
share this envelope exactly, and only `name`, the dates and `evidence` change.
TrueIdentity is the exception - its `achievement` block is described in its own
section below.

```json
{
  "@context": [
    "https://www.w3.org/ns/credentials/v2",
    "https://purl.imsglobal.org/spec/ob/v3p0/context-3.0.3.json",
    "https://purl.imsglobal.org/spec/ob/v3p0/extensions.json",
    "https://app.truevault.com.au/baric/credential/tv-vocab/1.jsonld"
  ],
  "id": "https://app.truevault.com.au/baric/credential/acicncchc/9f2c1d4e-7a63-5b28-9e14-3c8d5f0a7b61/1a7be03d-5c92-5f41-b8d0-6e2f9a4c1d33",
  "type": ["VerifiableCredential", "OpenBadgeCredential"],
  "name": "Australian Nationally Coordinated Criminal History Check",
  "issuer": {
    "id": "https://app.truevault.com.au/baric/credential/issuer.json",
    "type": ["Profile"],
    "name": "TrueVault Credential Issuer",
    "description": "TrueVault Credential Issuer",
    "url": "https://app.truevault.com.au/",
    "email": "issuer@truevault.com.au"
  },
  "credentialSubject": {
    "id": "https://app.truevault.com.au/baric/credential/acicncchc/9f2c1d4e-7a63-5b28-9e14-3c8d5f0a7b61/1a7be03d-5c92-5f41-b8d0-6e2f9a4c1d33",
    "type": ["AchievementSubject"],
    "achievement": {
      "id": "https://app.truevault.com.au/baric/credential/achievement/acicncchc/1a7be03d-5c92-5f41-b8d0-6e2f9a4c1d33",
      "type": ["Achievement"],
      "achievementType": "Certificate",
      "name": "Australian Nationally Coordinated Criminal History Check",
      "description": "Australian Nationally Coordinated Criminal History Check",
      "criteria": {
        "id": "https://app.truevault.com.au/baric/credential/criteria/acicncchc/1a7be03d-5c92-5f41-b8d0-6e2f9a4c1d33",
        "narrative": "Australian Nationally Coordinated Criminal History Check"
      },
      "identifier": {
        "type": "acicncchc",
        "hashed": false,
        "identityType": "reference",
        "identityValue": "1a7be03d-5c92-5f41-b8d0-6e2f9a4c1d33"
      },
      "image": {
        "id": "https://app.truevault.com.au/baric/credential/badge/acicncchc/9f2c1d4e-7a63-5b28-9e14-3c8d5f0a7b61/1a7be03d-5c92-5f41-b8d0-6e2f9a4c1d33",
        "type": "Image",
        "caption": "Australian Nationally Coordinated Criminal History Check"
      },
      "tags": ["acic", "ncchc", "criminal-history", "australia"],
      "inLanguage": "en-AU"
    }
  },
  "credentialSchema": [
    {
      "id": "https://purl.imsglobal.org/spec/ob/v3p0/schema/json-ld/ob_v3p0_achievementcredential_schema.json",
      "type": "JsonSchema2020"
    }
  ],
  "credentialStatus": {
    "id": "https://app.truevault.com.au/baric/credential/status-lists/list/1#2502",
    "type": "BitstringStatusListEntry",
    "statusPurpose": "revocation",
    "statusListIndex": "2502",
    "statusListCredential": "https://app.truevault.com.au/baric/credential/status-lists/list/1"
  },
  "issuanceDate": "2026-09-09T01:14:22Z",
  "validFrom": "2026-09-08T14:00:00Z",
  "validUntil": "2026-12-07T14:00:00Z",
  "evidence": []
}
```

| Field | What to do with it |
|---|---|
| `id` | The credential's address. Contains the credential type, the person reference and the credential reference |
| `name` | The credential type in words. The stable machine value is `credentialSubject.achievement.identifier.type` |
| `issuer` | Always TrueVault. Reading the check is not the same as issuing the credential |
| `credentialStatus` | Where to check revocation. See [What "expired" means](/claims-and-credentials/credential-types) |
| `validFrom` | When the underlying statement became true - usually the date the check ran, not the date we wrote it down |
| `validUntil` | When it stops being evidence of anything. Varies enormously by type |
| `evidence` | What the check actually found. This is the part that differs, and the rest of this page |

Dates are UTC, formatted `YYYY-MM-DDThh:mm:ssZ`. A date-only source value (a court
date, an ACIC result date) becomes midnight local time converted to UTC, which is
why you will see `14:00:00Z` on Australian dates.

Everything below is the `evidence` array from that envelope.

## Australian Nationally Coordinated Criminal History Check

`acicncchc`

The first entry is always the result. `result` is `NDCO` (no disclosable court
outcomes) or `DCO` (disclosable court outcomes), and that single value is what
most integrations should read - as the `acicncchc.result` claim, not the whole
credential.

### Nothing to disclose

```json
[
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/acicncchc/1a7be03d-5c92-5f41-b8d0-6e2f9a4c1d33/result",
    "name": "NCCHC Result",
    "description": "Processed by TrueVault. Reference: NC-482913",
    "type": ["Evidence"],
    "dateCreated": "2026-09-01T14:00:00Z",
    "dateIssued": "2026-09-08T14:00:00Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:dataObject": {
      "result": "NDCO"
    }
  }
]
```

### Disclosable court outcomes

Each outcome is its own evidence entry, after the result. There is no count to
read: the number of `Disclosable Court Outcome` entries is the number of
outcomes.

```json
[
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/acicncchc/1a7be03d-5c92-5f41-b8d0-6e2f9a4c1d33/result",
    "name": "NCCHC Result",
    "description": "Processed by TrueVault. Reference: NC-482913",
    "type": ["Evidence"],
    "dateCreated": "2026-09-01T14:00:00Z",
    "dateIssued": "2026-09-08T14:00:00Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:dataObject": {
      "result": "DCO"
    }
  },
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/acic/1a7be03d-5c92-5f41-b8d0-6e2f9a4c1d33/VIC-2019-06-15",
    "name": "Disclosable Court Outcome",
    "description": "Exceed speed limit by 25 km/h or more",
    "type": ["Evidence"],
    "dateCreated": "2019-06-14T14:00:00Z",
    "dateIssued": "2019-06-14T14:00:00Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:dataObject": {
      "court": "Melbourne Magistrates Court",
      "source": "VIC",
      "date": "2019-06-15",
      "offence": "Exceed speed limit by 25 km/h or more",
      "result": "Convicted, fined $500, licence suspended 1 month"
    }
  },
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/acic/1a7be03d-5c92-5f41-b8d0-6e2f9a4c1d33/NSW-2016-11-02",
    "name": "Disclosable Court Outcome",
    "description": "Damage property",
    "type": ["Evidence"],
    "dateCreated": "2016-11-01T13:00:00Z",
    "dateIssued": "2016-11-01T13:00:00Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:dataObject": {
      "court": "Sydney Local Court",
      "source": "NSW",
      "date": "2016-11-02",
      "offence": "Damage property",
      "result": "Without conviction, fined $60"
    }
  }
]
```

An outcome's `date` is the court date, which may be years before the check. The
`dateCreated` and `dateIssued` on the entry are that same court date, not the
date of the check - the check date is on the result entry above.

## Court Records Check By Name

`courtcheck`

Two entries always: the name searched, and the result summary. Records follow.

{% callout type="warning" %}
This is a search by name and nothing else - no date of birth, no address. The
credential says so in the result entry's own `description`. A record here is a
name that appeared in a public court list; it is not a finding about your
customer. Deciding what it means is yours to do.
{% /callout %}

### No records found

```json
[
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/courtcheck/4e81c2fa-9d37-5a06-b1e8-72f4c0a91b58/name",
    "name": "Court Check Person Name",
    "description": "The name for which Australian court records have been searched (as the only identifying metric).",
    "type": ["Evidence"],
    "dateCreated": "2026-09-08T04:20:11Z",
    "dateIssued": "2026-09-08T04:22:47Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:dataObject": {
      "name": "Jane Alice Smith"
    }
  },
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/courtcheck/4e81c2fa-9d37-5a06-b1e8-72f4c0a91b58/result",
    "name": "Court Check Result Summary",
    "description": "The records below are included based on the name 'Jane Alice Smith' appearing in public court records in the states and territories of Australia, and must not be taken to directly represent the Jane Alice Smith from this credential. Organisations must make their own enquiries as to the accuracy and appropriate use of this information.",
    "type": ["Evidence"],
    "dateCreated": "2026-09-08T04:20:11Z",
    "dateIssued": "2026-09-08T04:22:47Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:dataObject": {
      "result": "No court records found"
    }
  }
]
```

### Records found

The summary becomes `"2 court records found"`, and each record follows as its own
entry. Record fields come from the search provider and any that are empty are
dropped, so treat all of them as optional.

```json
[
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/courtcheck/4e81c2fa-9d37-5a06-b1e8-72f4c0a91b58/result",
    "name": "Court Check Result Summary",
    "description": "The records below are included based on the name 'Jane Alice Smith' appearing in public court records in the states and territories of Australia, and must not be taken to directly represent the Jane Alice Smith from this credential. Organisations must make their own enquiries as to the accuracy and appropriate use of this information.",
    "type": ["Evidence"],
    "dateCreated": "2026-09-08T04:20:11Z",
    "dateIssued": "2026-09-08T04:22:47Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:dataObject": {
      "result": "2 court records found"
    }
  },
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/courtcheck/4e81c2fa-9d37-5a06-b1e8-72f4c0a91b58/2023-01234",
    "name": "Court Record",
    "description": "Smith v Alderton Property Group Pty Ltd",
    "type": ["Evidence"],
    "dateCreated": "2026-09-08T04:20:11Z",
    "dateIssued": "2026-09-08T04:22:47Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:dataObject": {
      "case_no": "2023-01234",
      "date": "2023-04-19",
      "court": "District Court of South Australia",
      "type": "civil",
      "case_title": "Smith v Alderton Property Group Pty Ltd",
      "listing_type": "Directions hearing"
    }
  },
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/courtcheck/4e81c2fa-9d37-5a06-b1e8-72f4c0a91b58/2021-00877",
    "name": "Court Record",
    "description": "Court record",
    "type": ["Evidence"],
    "dateCreated": "2026-09-08T04:20:11Z",
    "dateIssued": "2026-09-08T04:22:47Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:dataObject": {
      "name": "Court Record (disputed, hidden)",
      "court": "Magistrates Court of Tasmania",
      "date": "2021-08-03",
      "type": "criminal"
    }
  }
]
```

The second record there was **disputed**. Before the credential is issued, the
person is shown every record the search returned and can mark any of them as
somebody else. A disputed record is not deleted - the count still includes it -
but it is redacted to court, date and type, and the entry says so in its own
`name` field. If you are counting records, count entries; if you are reading
them, check for `"Court Record (disputed, hidden)"` first.

## PEP & Sanctions Check

`sanctionscheck`

Two entries always, then one per match. Remember this credential is valid for
**one day**.

### No matches

```json
[
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/sanctionscheck/b30d9e77-1f45-5c8a-a2b6-04e7d1c85f92/name",
    "name": "PEP & Sanctions Check Person Name",
    "description": "The name and date of birth for which PEP and sanctions databases have been searched.",
    "type": ["Evidence"],
    "dateCreated": "2026-09-08T23:41:05Z",
    "dateIssued": "2026-09-08T23:41:38Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:dataObject": {
      "name": "Jane Alice Smith"
    }
  },
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/sanctionscheck/b30d9e77-1f45-5c8a-a2b6-04e7d1c85f92/result",
    "name": "PEP & Sanctions Check Result Summary",
    "description": "PEP and international sanctions screening results for 'Jane Alice Smith'. Matches are based on name similarity and date of birth against international PEP and sanctions databases. Organisations must make their own enquiries as to the accuracy and appropriate use of this information.",
    "type": ["Evidence"],
    "dateCreated": "2026-09-08T23:41:05Z",
    "dateIssued": "2026-09-08T23:41:38Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:dataObject": {
      "result": "No PEP or sanctions matches found",
      "is_pep": "N",
      "is_sanctioned": "N",
      "total_matches": 0
    }
  }
]
```

### A PEP match

The summary entry changes, and each match arrives as its own entry named for what
it is and who it matched.

```json
[
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/sanctionscheck/b30d9e77-1f45-5c8a-a2b6-04e7d1c85f92/result",
    "name": "PEP & Sanctions Check Result Summary",
    "description": "PEP and international sanctions screening results for 'Jane Alice Smith'. Matches are based on name similarity and date of birth against international PEP and sanctions databases. Organisations must make their own enquiries as to the accuracy and appropriate use of this information.",
    "type": ["Evidence"],
    "dateCreated": "2026-09-08T23:41:05Z",
    "dateIssued": "2026-09-08T23:41:38Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:dataObject": {
      "result": "1 PEP match found",
      "is_pep": "Y",
      "is_sanctioned": "N",
      "total_matches": 1
    }
  },
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/sanctionscheck/b30d9e77-1f45-5c8a-a2b6-04e7d1c85f92/NK-2f81c0d3",
    "name": "PEP: Jane A Smith",
    "description": "PEP record matched with 92% similarity.",
    "type": ["Evidence"],
    "dateCreated": "2026-09-08T23:41:05Z",
    "dateIssued": "2026-09-08T23:41:38Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:dataObject": {
      "matched_name": "Jane A Smith",
      "similarity": 92,
      "is_pep": true,
      "is_sanctioned": false,
      "country": "au",
      "birth_date": "1974-03-02",
      "classification": "Regional government",
      "positions": ["Member of the Legislative Assembly"],
      "pep_sources": ["wd_peps"]
    }
  }
]
```

### A sanctions match

A sanctioned match carries `sanction_sources` and `sanction_programs` instead of
the PEP fields. A match that is both carries both sets, and the entry is named
`Sanctioned & PEP: <name>`.

```json
[
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/sanctionscheck/b30d9e77-1f45-5c8a-a2b6-04e7d1c85f92/result",
    "name": "PEP & Sanctions Check Result Summary",
    "description": "PEP and international sanctions screening results for 'Jane Alice Smith'. Matches are based on name similarity and date of birth against international PEP and sanctions databases. Organisations must make their own enquiries as to the accuracy and appropriate use of this information.",
    "type": ["Evidence"],
    "dateCreated": "2026-09-08T23:41:05Z",
    "dateIssued": "2026-09-08T23:41:38Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:dataObject": {
      "result": "1 sanctioned match found",
      "is_pep": "N",
      "is_sanctioned": "Y",
      "total_matches": 1
    }
  },
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/sanctionscheck/b30d9e77-1f45-5c8a-a2b6-04e7d1c85f92/NK-6b40a7e1",
    "name": "Sanctioned: Jayne Smyth",
    "description": "Sanctioned record matched with 78% similarity.",
    "type": ["Evidence"],
    "dateCreated": "2026-09-08T23:41:05Z",
    "dateIssued": "2026-09-08T23:41:38Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:dataObject": {
      "matched_name": "Jayne Smyth",
      "similarity": 78,
      "is_pep": false,
      "is_sanctioned": true,
      "country": "ru",
      "birth_date": "1969-10-22",
      "sanction_sources": ["au_dfat_sanctions"],
      "sanction_programs": [
        {
          "program": "Autonomous Sanctions (Russia, Crimea and Sevastopol)",
          "authority": "Australian Department of Foreign Affairs and Trade",
          "summary": "Designated person - targeted financial sanctions and travel ban",
          "start_date": "2022-04-07",
          "provisions": "Autonomous Sanctions Regulations 2011"
        }
      ]
    }
  }
]
```

### Three ways of saying the same thing

`is_pep` and `is_sanctioned` appear in three places, in three types. This catches
people out, so:

| Where | Type | Clean | Flagged |
|---|---|---|---|
| The `sanctionscheck.is_pep` claim | string | `"No"` | `"Yes"` |
| `tv:dataObject` on the result entry | string | `"N"` | `"Y"` |
| Inside a match entry, and inside `sanctionscheck.matches` | boolean | `false` | `true` |

The claim is the one to read. It is a single value, it costs you nothing else,
and it is the only one of the three that does not come wrapped in somebody's
personal details.

## TrueIdentity

`trueidentity`

TrueIdentity carries the badge rather than a certificate, so its `achievement`
differs from the envelope above:

```json
{
  "id": "https://app.truevault.com.au/baric/credential/achievement/9f2c1d4e-7a63-5b28-9e14-3c8d5f0a7b61/db46a71c-ead0-5d83-8be7-97c17bd6ec1e",
  "type": ["Achievement"],
  "achievementType": "Badge",
  "name": "TrueVault TrueIdentity",
  "description": "TrueVault Biometrically Anchored TrueIdentity Credential",
  "criteria": {
    "narrative": "Completed the Biometrically Verified Identity Process."
  },
  "identifier": {
    "type": "IdentityObject",
    "hashed": 1,
    "identityType": "uuid",
    "identityHash": "3d9f0c1a7b52e846d0f31c9a4e6b8720"
  },
  "image": {
    "id": "https://app.truevault.com.au/baric/credential/badge/9f2c1d4e-7a63-5b28-9e14-3c8d5f0a7b61/db46a71c-ead0-5d83-8be7-97c17bd6ec1e",
    "type": "Image",
    "caption": "TrueVault TrueIdentity Icon"
  },
  "inLanguage": "en-GB"
}
```

There is no `identifier.identityValue` on this one, and `tags` is empty. To
recognise the credential type, read `name` on the credential itself rather than
anything under `achievement`.

The evidence is one entry per verified document. `tv:evidenceTypes` says what the
document was and how it was checked; `tv:dataObject` carries references rather
than the document itself. The document number is masked, in `description`.

```json
[
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/db46a71c-ead0-5d83-8be7-97c17bd6ec1e/2550426f-96ef-52b5-b4b0-c949f1c1dcff",
    "name": "Australian Passport",
    "description": "Document number: RA*****88",
    "type": ["Evidence"],
    "dateCreated": "2026-07-22T23:47:17Z",
    "dateIssued": "2026-07-22T23:47:17Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:evidenceTypes": {
      "docType": "PASSPORT",
      "inputType": "Biometric & OCR",
      "authoritativeSource": "Australian DVS"
    },
    "tv:dataObject": {
      "truevaultReference": "2550426f-96ef-52b5-b4b0-c949f1c1dcff",
      "serviceReference": "8f00c8f7-26b4-5ed8-927f-3359cff9b77c",
      "verifierReference": "e255c913-1261-479d-9467-7a002f5a0225",
      "namesVerified": "Requires 'All names verified from documents' disclosure",
      "dateExpires": "2031-03-14T13:00:00Z"
    }
  },
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/db46a71c-ead0-5d83-8be7-97c17bd6ec1e/6f9a0909-0a56-56cd-8e44-3ee12f202bb8",
    "name": "Australian Driving Licence",
    "description": "Licence number: DR***9",
    "type": ["Evidence"],
    "dateCreated": "2026-07-22T23:51:32Z",
    "dateIssued": "2026-07-22T23:50:44Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:evidenceTypes": {
      "docType": "DRIVING_LICENSE",
      "inputType": "Manually Submitted",
      "authoritativeSource": "Australian DVS"
    },
    "tv:dataObject": {
      "truevaultReference": "6f9a0909-0a56-56cd-8e44-3ee12f202bb8",
      "serviceReference": "9219d2fb-97b4-57f7-941e-5a4ce103c771",
      "verifierReference": "e4015a53-0aa9-4c39-b554-1687dd89c2c2",
      "namesVerified": "Requires 'All names verified from documents' disclosure",
      "dateExpires": "2028-11-30T13:00:00Z"
    }
  }
]
```

`namesVerified` holds the names read off that document, but only for a client
that asked for `trueidentity.names_verified`. Without that disclosure you get the
sentence above in its place - the field is always present, so check its shape
before reading it.

`dateExpires` is dropped from documents that do not expire. The credential's own
`validUntil` is the earliest of the ones that do.

## Australian Right-to-Work Check

`vevortw`

Two shapes, depending on how the entitlement was established. Both produce the
same `vevortw.work_entitlements` claim, which is what most integrations want.

### Checked against a visa

One entry, straight from VEVO.

```json
[
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/vevortw/7c15b8ea-3d04-5297-8f6b-91a0e5d72c4f/result",
    "name": "Australian Right-to-Work Check - VEVO Visa Check",
    "description": "Processed by TrueVault. Reference: VV-771204",
    "type": ["Evidence"],
    "dateCreated": "2026-09-08T02:15:33Z",
    "dateIssued": "2026-09-08T02:15:33Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:dataObject": {
      "workEntitlements": "Work limited to 48 hours per fortnight while course is in session",
      "familyName": "Okafor",
      "givenNames": "Chidi Daniel",
      "birthDate": "1998-02-17",
      "category": "STUDENT",
      "documentNumber": "P*****67",
      "location": "Onshore",
      "workConditionCode": "8105",
      "workConditionDescription": "Work limitation - student visa",
      "reference": "VV-771204",
      "visaClass": "500",
      "visaGrantDate": "2025-01-30",
      "visaExpiryDate": "2027-02-28",
      "visaStream": "Higher Education Sector",
      "visaType": "Student",
      "applicantRole": "Primary"
    }
  }
]
```

The credential can never outlive the visa: `validUntil` is the earlier of ninety
days and `visaExpiryDate`.

`documentNumber` is masked here. The unmasked number is the
`vevortw.document_number` claim, which you have to ask for by name.

### Citizen or permanent resident

No visa to check, so the entitlement comes from the identity documents already
verified. The summary entry is followed by the document evidence, in the same
shape as TrueIdentity above.

```json
[
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/vevortw/7c15b8ea-3d04-5297-8f6b-91a0e5d72c4f/result",
    "name": "Australian Right-to-Work Check - Citizen or Resident",
    "description": "Processed by TrueVault. Reference: VV-771205",
    "type": ["Evidence"],
    "dateCreated": "2026-09-08T02:19:44Z",
    "dateIssued": "2026-09-08T02:19:44Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:dataObject": {
      "workEntitlements": "UNLIMITED",
      "verifiedDocuments": ["PASSPORT", "CITIZENSHIP_CERTIFICATE"],
      "reference": "VV-771205"
    }
  }
]
```

`workEntitlements` is the literal string `UNLIMITED` here. On a visa check it is
whatever VEVO returned, in VEVO's words. Match on the visa shape's
`workConditionCode` if you need something machine-readable.

## Student Credential (Currently Enrolled)

`student`

One entry, the enrolment document itself, in the shared document shape.

```json
[
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/c8f31a90-6e27-5db4-9c05-38b1f7e42a6d/5d0c9b18-4a72-5e30-bf96-2c81d4a07e55",
    "name": "Current student enrolment",
    "description": "Student identifier: A5******P3",
    "type": ["Evidence"],
    "dateCreated": "2026-03-02T04:11:09Z",
    "dateIssued": "2026-03-02T04:11:09Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:evidenceTypes": {
      "docType": "STUDENT",
      "inputType": "Manually Submitted",
      "authoritativeSource": "AAF Student Verification"
    },
    "tv:dataObject": {
      "truevaultReference": "5d0c9b18-4a72-5e30-bf96-2c81d4a07e55",
      "serviceReference": "a41e7c62-9b08-5f14-83d7-6e2a0c95b731",
      "verifierReference": "3f8b21d5-70c4-4e19-9a86-15dc7f043b28",
      "dateExpires": "2026-12-13T13:00:00Z"
    }
  }
]
```

`validUntil` is the enrolment's own end date. There is no rounding and no
minimum - an enrolment ending next week gives you a credential that expires next
week.

## Phone Number (Recently Verified)

`phonenumber`

One entry. The number in the evidence is masked; the full number is the
`phonenumber.phone_number` claim, and only if you asked for it.

```json
[
  {
    "id": "https://app.truevault.com.au/baric/credential/evidence/e2a6d504-8c31-5b79-a04f-91d3c7e685b2/f70b1c93-2d48-5a61-8e05-4b9c2f10d873",
    "name": "Verified Phone Number",
    "description": "Phone number ownership verified with SMS OTP",
    "type": ["Evidence"],
    "dateCreated": "2026-09-08T22:04:51Z",
    "dateIssued": "2026-09-08T22:05:02Z",
    "dateExpires": "2026-09-22T22:05:02Z",
    "issuer": "https://app.truevault.com.au/baric/credential/issuer.json",
    "tv:dataObject": {
      "truevault_reference": "f70b1c93-2d48-5a61-8e05-4b9c2f10d873",
      "verification_type": "SMS OTP Code",
      "number": "+61 4** *** *89"
    }
  }
]
```

This is the only credential that puts `dateExpires` on the evidence entry as well
as `validUntil` on the envelope. They are the same moment.

## What none of this contains

No identity document images. No raw check payloads. No PDF certificates.

A credential is the finding and the trail that supports it, and that is
deliberate - the documents behind a TrueIdentity are gone. Where a source file
does still exist, because a third party issued it and we hold it for you, it is a
separate claim you have to ask for by name: `source_download` for the file and
`source_data` for the payload the credential was built from. Both are available
on `acicncchc` and `vevortw` only.
