UserNotification
A request or response body; the type column links to the schemas it refers to.
UserNotification
| Field | Type | Required | Description |
|---|---|---|---|
| id | string (uuid) | yes | — |
| kind | string | yes | 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. |
| title | string | yes | — |
| summary | string | yes | — |
| href | string | null | yes | The app path the notification as a whole leads to. |
| sections | array of NotificationSection | yes | — |
| created_at | string (date-time) | yes | — |
| read_at | string (date-time) | null | yes | 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"
}