UserCertificationStatus

A request or response body; the type column links to the schemas it refers to.

UserCertificationStatus

FieldTypeRequiredDescription
certification_typeobjectyes—
subject_mattersarray of objectyes

The type's subject-matter tags, alphabetically; a record filed under any of them counts toward its record-based rules.

required_by_rolesarray of CertificationRequiredByRoleyes

Every unexpired role grant of the user that requires this type.

current_awardCertificationAwardyes—
due_atstring (date-time) | nullyes

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_sourcestring | nullyes

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

overduebooleanyes—
rulesarray of CertificationRuleProgressyes

Progress per proof rule, evaluated since the current award (or over all history while uncertified).

all_rules_satisfiedbooleanyes—
pending_request_idstring (uuid) | nullyes

The user's pending request for this type, if one is open.

pending_submission_countintegeryes

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_countintegeryes

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.

jsonExample
{
  "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
}