UserNotification

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

UserNotification

FieldTypeRequiredDescription
idstring (uuid)yes—
kindstringyes

What pushed it — today one of `trainee_digest`, `manager_digest`, `quiz_sitting_opened`, `quiz_result_released`, `quiz_grading_queued`, `report_ready`, `support_ticket_opened`, `support_ticket_reporter_replied`, `support_ticket_updated`. New kinds are added without notice, so a client should list a notification of a kind it does not know by its title.

titlestringyes—
summarystringyes—
hrefstring | nullyes

The app path the notification as a whole leads to.

sectionsarray of NotificationSectionyes—
created_atstring (date-time)yes—
read_atstring (date-time) | nullyes

Null while unread.

jsonExample
{
  "id": "1b671a64-40d5-491e-99b0-da01ff1f3341",
  "kind": "trainee_digest",
  "title": "Certification deadlines: 1 overdue, 2 due in the next 60 days",
  "summary": "string",
  "href": "/dashboard",
  "sections": [
    {
      "key": "overdue",
      "heading": "Overdue (1)",
      "tone": "danger",
      "entries": [
        {
          "title": "Forklift Certification — Sep 3, 2026 (in 12 days)",
          "detail": "Workplace Safety · required by Forklift Operator (Warehouse) · Acme Corporation",
          "href": "/certifications/0b6c1c9e-08a1-4b55-a3a3-2b0e4bd8d2c1",
          "links": [
            {
              "label": "Take the quiz: Forklift safety",
              "href": "/my-quizzes/7c0b7c4e-5a7e-4d55-9d8b-0a1f1f6f6a10",
              "external": true
            }
          ]
        }
      ]
    }
  ],
  "created_at": "2026-01-01T00:00:00.000Z",
  "read_at": "2026-01-01T00:00:00.000Z"
}