On this page
trainingCertificate
query · in the family Training certificate
What it does
Look up one certificate — the holder, the course, the sitting, the score and when it was issued.
A TrainingCertificate by id, within the caller's OWN org-group family; requires authentication. A cross-tenant id reads as null (not-found) AND trips the rootId tripwire server-side.
What happens
Read-only; your own, or anyone’s with the training-manage right.
Who may call it
Capability area: Your own session — What every signed-in person may do for themselves — their session, their profile and their own work.
- Owner
- System Administrator
- Manager
- Associate Manager
- Warehouse Associate
- Sales Associate
- Cashier
- An API key whose scope allows
api:trainingCertificate
Arguments
| Name | Type | Required | Notes |
|---|---|---|---|
id | ID ID! | yes | The id of the record. |
Returns
TrainingCertificate — A TrainingCertificate (🎓 — THE TRAINING PROGRAM, THE WIRE): the platform's own record that a person passed a course — MINTED BY THE API at a passing submit, in the SAME transaction as the attempt's transition, NEVER by a client (no create op exists on the wire). The holder (userId), the course, the passing sitting (attemptId), the score and the pass mark, the issue instant and the course's content version (curriculumVersion). valid (live) → revoked (terminal; manage authority, a reason required) · valid → superseded (terminal; SYSTEM-ONLY — the person's next pass of the same course supersedes it and keeps it as history). expiresAt is null — 's refresh rule sets it. The by-id read answers the holder or the training-manage right; the listing is the manage right's (revoked drops from it, superseded stays as history; both stay point-readable). NOT searchable.
Example request
query ExampleTrainingCertificate($id: ID!) {
trainingCertificate(id: $id) {
id
sysId
type
caption
status
parentId
rootId
createdAt
updatedAt
revisionNum
revision
userId
courseKey
attemptId
score
passMark
issuedAt
curriculumVersion
expiresAt
refreshDue
}
}
Variables:
{
"id": "01900000-0000-7000-8000-37386ae00000"
}
Example response
{
"data": {
"trainingCertificate": {
"id": "01900000-0000-7000-8000-37386ae00000",
"sysId": "TC-EXMP-0000-000F",
"type": "TrainingCertificate",
"caption": "Blue jeans",
"status": "valid",
"parentId": "01900000-0000-7000-8000-065235280000",
"rootId": "01900000-0000-7000-8000-a093dd800000",
"createdAt": "2027-01-31T00:00:00.000Z",
"updatedAt": "2027-01-31T00:00:00.000Z",
"revisionNum": 1,
"revision": "01900000-0000-7000-8000-b7960e180000",
"userId": "01900000-0000-7000-8000-11f967df0000",
"courseKey": "<course key>",
"attemptId": "01900000-0000-7000-8000-ca1745530000",
"score": 1,
"passMark": 1,
"issuedAt": "2027-01-31T00:00:00.000Z",
"curriculumVersion": "<curriculum version>",
"expiresAt": "2027-01-31T00:00:00.000Z",
"refreshDue": true
}
},
"extensions": {
"at": {
"callId": "01EXAMPLE-CALL-ID",
"version": {
"requested": null,
"serviced": {
"name": "genesis",
"number": 0
}
}
}
}
}
Errors this call can answer
VALIDATION/INVALID— Something in the request is not valid. (VALIDATION)AUTHN/REQUIRED— Sign in to do this. (AUTHN)AUTHZ/FORBIDDEN— Your role does not allow this action. (AUTHZ)RATE_LIMIT/THROTTLED— Too many requests in a short time. (RATE_LIMIT)NOT_FOUND/*— That record could not be found. (NOT_FOUND)