Credential Type Codes
Every credential carries an identification.credentialType — the machine code that says what kind
of thing it is. This page is the full catalogue of codes the API understands.
The codes are also what compliance runs on: a screening package requirement is satisfied by matching this exact string, and the Compliance Overview groups its rows by it. Sending the right code is the difference between a credential that counts and one that merely sits on a profile.
The table below is generated from the platform's credential catalogue — the same source that backs List supported credential types and the canonicalization applied on every write. It cannot drift from the running system.
Fetch the live list any time:
curl -sS "$OHO_BASE/credentials/types" -H "Authorization: Bearer $OHO_TOKEN"
{
"data": [
{
"code": "WWCC_NSW",
"label": "Working With Children Check (NSW)",
"category": "SCREENING"
},
{
"code": "NDIS_SCREENING",
"label": "NDIS Worker Screening",
"category": "SCREENING"
},
{
"code": "AHPRA_G",
"label": "AHPRA Registration (General)",
"category": "LICENSE"
}
],
"meta": { "page": 1, "pageSize": 42, "total": 42, "requestId": "..." }
}
Categories
Every code belongs to one of four categories, which is also the category you send alongside it on
Create credential and the filter
List supported credential types accepts:
SCREENING · GOVERNMENT_ID · LICENSE · CERTIFICATION
# Just the screening checks
curl -sS "$OHO_BASE/credentials/types?category=SCREENING" \
-H "Authorization: Bearer $OHO_TOKEN"
Codes are matched loosely, then stored strictly
You don't have to send the code exactly as it appears below. Before a credential is stored, Oho folds what you sent — trims it, collapses every run of non-alphanumeric characters to a single underscore, and upper-cases the result — then looks it up against every code, name and alias in the catalogue.
So ahpra, AHPRA and AHPRA_G all store as AHPRA_G, and Driver's Licence,
drivers licence and DRIVERS_LICENCE all store as DRIVERS_LICENSE. What you sent is kept as the
credential's displayName when you didn't set one yourself, so nothing is lost.
This is the failure worth designing against. A code that isn't in the catalogue does not return a
400 — it is normalised to UPPER_SNAKE_CASE and stored as-is.
The credential is created and looks fine on the worker's profile. But because requirements match on the exact stored string, it satisfies nothing, and it mints its own row in the Compliance Overview next to the real one. A typo surfaces as a quiet compliance gap weeks later, not as an error at the call site.
Send a code from this page, or check yours against List supported credential types before you go live.
Your own credential types
Types your organisation defines itself carry a CUSTOM_ prefix. Those are passed through untouched
— never folded, never matched against the catalogue — so a custom code can't collide with a built-in
one. See Custom Credentials.
The catalogue
Each row shows the code to send, the name Oho displays for it, and the other spellings that fold to it. Aliases are a compatibility convenience for existing integrations — send the code, not an alias, in anything you write from scratch.
Screening checks
category=SCREENING
| Code | Name | Also accepted |
|---|---|---|
WWCC_NSW | Working With Children Check (NSW) | nswwwc |
WWCC_VIC | Working With Children Check (VIC) | vicwwc |
WWCC_QLD | Blue Card (QLD) | qldblue, BLUE_CARD, BLUE_CARD_QLD, Queensland Blue Card |
WWCC_WA | Working With Children Check (WA) | wawwc |
WWCC_SA | Working With Children Check (SA) | sawwc |
WWVP_TAS | Working With Vulnerable People Registration (TAS) | taswwvp, taswwc, WWCC_TAS, WWVP |
WWCC_NT | Ochre Card (NT) | ntwwc, OCHRE_CARD |
WWCC_ACT | Working With Vulnerable People Check (ACT) | actwwc |
WWCC | Working With Children Check (generic) | — |
NDIS_SCREENING | NDIS Worker Screening | NDWS, NDIS |
POLICE_CHECK | Police Check | NPC, National Police Check |
NZ_POLICE_CHECK | Police Check (NZ) | nzpolice, NZPC, NZ Police Check, New Zealand Police Check, NZ Police Vetting |
VEVO | Passport | passport_vevo, Passport (VEVO-checked) |
PASSPORT_NO_VEVO | Passport (Not VEVO-checked) | — |
IMMI_CARD | ImmiCard | immicard |
Government ID
category=GOVERNMENT_ID
| Code | Name | Also accepted |
|---|---|---|
PASSPORT | Passport Retired — still accepted on write and still resolves for existing credentials, but no longer offered when authoring new requirements. | — |
DRIVERS_LICENSE | Driver's Licence (generic) | driverslicense, Driver Licence, Driver's Licence, Drivers Licence, DRIVERS_LICENCE |
DRIVERS_LICENSE_NSW | Driver's Licence (NSW) | — |
DRIVERS_LICENSE_VIC | Driver's Licence (VIC) | — |
DRIVERS_LICENSE_QLD | Driver's Licence (QLD) | — |
DRIVERS_LICENSE_WA | Driver's Licence (WA) | — |
DRIVERS_LICENSE_SA | Driver's Licence (SA) | — |
DRIVERS_LICENSE_TAS | Driver's Licence (TAS) | — |
DRIVERS_LICENSE_NT | Driver's Licence (NT) | — |
DRIVERS_LICENSE_ACT | Driver's Licence (ACT) | — |
BIRTH_CERTIFICATE | Australian Birth Certificate | — |
CITIZENSHIP_CERTIFICATE | Australian Citizenship Certificate | — |
Licences (regulated professions)
category=LICENSE
| Code | Name | Also accepted |
|---|---|---|
AHPRA_G | AHPRA Registration (General) | ahpra, AHPRA |
AHPRA_P | AHPRA Registration (Provisional) | — |
AHPRA_L | AHPRA Registration (Limited) | — |
TEACHER | Teacher Registration (generic) | — |
TEACHER_NSW | Teacher Registration (NSW) | nswtrb, NESA |
TEACHER_VIC | Teacher Registration (VIC) | victrb, VITVIC, VIT |
TEACHER_QLD | Teacher Registration (QLD) | qldtrb, QCT |
TEACHER_WA | Teacher Registration (WA) | watrb |
TEACHER_SA | Teacher Registration (SA) | satrb |
TEACHER_TAS | Teacher Registration (TAS) | tastrb |
TEACHER_NT | Teacher Registration (NT) | nttrb |
Certifications
category=CERTIFICATION
| Code | Name | Also accepted |
|---|---|---|
FIRST_AID | First Aid Certificate | First_Aid, First Aid |
CPR | CPR Certificate | — |
USI | Unique Student Identifier | — |
USI_TRANSCRIPT | USI Transcript | usi_transcript, Transcript |
QUALIFICATION | Qualification / Certification | — |
42 selectable codes, plus 1 retained for compatibility.
List supported credential types omits retired codes by default, because
it feeds the pickers that author new requirements. Pass includeRetired=true to see them. They are
still accepted on write and still resolve for the credentials already stored under them — a retired
code is retired from authoring, not from the platform.
Coming from a spreadsheet import
A bulk import uses a different, shorter vocabulary from the API — ndws rather than
NDIS_SCREENING, wwcc plus a State column rather than WWCC_NSW, ahpra rather than
AHPRA_G. Nothing reconciles the two for you, so an integration written from the
import guide will target codes the
API does not use.
This is what each spreadsheet code ends up stored as, and therefore what to send to the API to mean the same thing.
| Spreadsheet code | Stored as |
|---|---|
driverslicense | DRIVERS_LICENSE |
driverslicense_nsw | DRIVERS_LICENSE_NSW |
driverslicense_vic | DRIVERS_LICENSE_VIC |
driverslicense_qld | DRIVERS_LICENSE_QLD |
driverslicense_wa | DRIVERS_LICENSE_WA |
driverslicense_sa | DRIVERS_LICENSE_SA |
driverslicense_tas | DRIVERS_LICENSE_TAS |
driverslicense_nt | DRIVERS_LICENSE_NT |
driverslicense_act | DRIVERS_LICENSE_ACT |
firstaid | FIRST_AID |
cpr | CPR |
ahpra | AHPRA_G |
vevo | VEVO |
passport | PASSPORT |
ndws | NDIS_SCREENING |
The three that depend on the State column
| Spreadsheet code | NSW | VIC | QLD | WA | SA | TAS | NT | ACT | blank |
|---|---|---|---|---|---|---|---|---|---|
wwcc | WWCC_NSW | WWCC_VIC | WWCC_QLD | WWCC_WA | WWCC_SA | WWVP_TAS | WWCC_NT | WWCC_ACT | WWCC |
wwvp | WWVP_NSW ⚠️ | WWVP_VIC ⚠️ | WWVP_QLD ⚠️ | WWVP_WA ⚠️ | WWVP_SA ⚠️ | WWVP_TAS | WWVP_NT ⚠️ | WWVP_ACT ⚠️ | WWVP_TAS |
teacher | TEACHER_NSW | TEACHER_VIC | TEACHER_QLD | TEACHER_WA | TEACHER_SA | TEACHER_TAS | TEACHER_NT | TEACHER_ACT ⚠️ | TEACHER |
⚠️ means the import produces a code that is not in the catalogue. It is still stored — nothing errors — but it matches no requirement. Use the neighbouring column instead.
npc is not in that table, because it isn't a credentialA spreadsheet row with Credential Type npc and State AUS (or blank) doesn't create a credential
at all — it loads a police check you already hold as a completed historic check, which is a
different entity with its own endpoints. The credential that appears on the worker's profile is
written by Oho, under POLICE_CHECK.
So there's nothing to map: send npc in a spreadsheet, and read the result through
Bans, Exemptions & Police Checks. npc with any other State is
not a recognised credential type and the row is skipped.
Where to go next
- Workers & Credentials Tutorial — creating a credential end to end
- Credentials concept pages — what each credential is and what Oho verifies it against
- Spreadsheet column reference — the separate, shorter vocabulary a bulk import accepts