UserCertificationStatus
A request or response body; the type column links to the schemas it refers to.
UserCertificationStatus
| Field | Type | Required | Description |
|---|---|---|---|
| certification_type | object | yes | — |
| subject_matters | array of object | yes | The type's subject-matter tags, alphabetically; a record filed under any of them counts toward its record-based rules. |
| required_by_roles | array of CertificationRequiredByRole | yes | Every unexpired role grant of the user that requires this type. |
| current_award | CertificationAward | yes | — |
| due_at | string (date-time) | null | yes | When the certification (or the next recertification) falls due; null when no initial due date is set or inherited, and no recert scheme applies. |
| due_source | string | null | yes | initial: the admin-set per-person due date. role: inherited from the earliest role-level initial due date across the requiring roles. recert: computed from the current award and the strictest recert scheme across the requiring roles. one of "initial" | "role" | "recert" | null |
| overdue | boolean | yes | — |
| rules | array of CertificationRuleProgress | yes | Progress per proof rule, evaluated since the current award (or over all history while uncertified). |
| all_rules_satisfied | boolean | yes | — |
| pending_request_id | string (uuid) | null | yes | The user's pending request for this type, if one is open. |
| pending_submission_count | integer | yes | The user's learning-record submissions on the type's subjects still awaiting a manager's approval, within the evaluation window — counting only submissions whose approval would advance at least one of the type's rules. The progress they would grant is carried per rule as pending_current / pending_evidence_present. |
| rejected_submission_count | integer | yes | The user's learning-record submissions on the type's subjects a manager sent back (status rejected), within the evaluation window — counting only submissions that would have advanced at least one of the type's rules. They count for nothing until the learner fixes and resubmits them. |
{
"certification_type": {
"id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"owner_organization_id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"owner_department_id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"slug": "string",
"name": "string",
"description": "string",
"awarding_mode": "automatic"
},
"subject_matters": [
{
"id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"slug": "string",
"name": "string"
}
],
"required_by_roles": [
{
"link_id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"role_id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"role_name": "string",
"department_id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"department_name": "string",
"organization_id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"organization_name": "string",
"recert_scheme": "none",
"recert_interval_months": 0,
"recert_anchor_month": 0,
"recert_anchor_day": 0,
"initial_due_at": "2026-01-01T00:00:00.000Z"
}
],
"current_award": {
"id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"organization_id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"user_id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"certification_type_id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"award_kind": "claimed",
"awarded_at": "2026-01-01T00:00:00.000Z",
"awarded_by": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"revoked_at": "2026-01-01T00:00:00.000Z",
"revoked_by": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"created_at": "2026-01-01T00:00:00.000Z"
},
"due_at": "2026-01-01T00:00:00.000Z",
"due_source": "initial",
"overdue": true,
"rules": [
{
"rule_id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"rule_kind": "subject_hours",
"label": "string",
"current": 0,
"pending_current": 0,
"target": 0,
"subject_matter_id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"subject_name": "string",
"evidence_type": "score",
"evidence_present": true,
"pending_evidence_present": true,
"last_sign_off_at": "2026-01-01T00:00:00.000Z",
"quiz_id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"quiz_slug": "string",
"quiz_name": "string",
"last_quiz_pass_at": "2026-01-01T00:00:00.000Z",
"external_course_id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"external_course_name": "string",
"external_course_code": "string",
"external_server_name": "string",
"external_course_url": "string",
"last_course_pass_at": "2026-01-01T00:00:00.000Z",
"scorm_course_id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"scorm_course_name": "string",
"scorm_course_archived": true,
"last_scorm_complete_at": "2026-01-01T00:00:00.000Z",
"scorm_course_recertification_required_at": "2026-01-01T00:00:00.000Z",
"scorm_completion_superseded": true,
"job_aid_id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"job_aid_title": "string",
"job_aid_archived": true,
"last_job_aid_view_at": "2026-01-01T00:00:00.000Z",
"job_aid_recertification_required_at": "2026-01-01T00:00:00.000Z",
"supporting_records": [
{
"id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"title": "string",
"redacted": true,
"status": "completed",
"completed_at": "2026-01-01T00:00:00.000Z",
"hours": 0,
"evidence_types": [
"score"
]
}
],
"satisfied": true
}
],
"all_rules_satisfied": true,
"pending_request_id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
"pending_submission_count": 0,
"rejected_submission_count": 0
}