# NotificationRef

object type

One platform notice to YOUR account. Month-bucketed at the occasion's own instant; the occasion facts are immutable; readAt stamps first-read-wins.

## Fields

| Field | Type | Notes |
| --- | --- | --- |
| `id` | [ID](/types/#scalars) `ID!` | The deterministic occasion id — <occasionAt>#<kind>#<subjectId> (pass verbatim to markNotificationRead). |
| `kind` | [NotificationKind](/types/NotificationKind/) `NotificationKind!` | No further notes. |
| `severity` | [NotificationSeverity](/types/NotificationSeverity/) `NotificationSeverity!` | The attention class: DERIVED from the kind through the contracts NOTIFICATION_SEVERITY map at read time, never stored — the attention box, the badge and the mail words derive from it. |
| `occasionAt` | [String](/types/#scalars) `String!` | WHEN it happened — burn_breach: the UTC day; low_balance: the episode-start instant; fraud_alert: the raise instant; the search kinds: the job's finish instant; the export kinds: the export job's finish instant; release: the wave's flip instant. |
| `tokenAccountId` | [ID](/types/#scalars) | WHICH kernel wallet (the /costs door target) — the alarm kinds' subject; null on fraud_alert. |
| `fraudAlertId` | [ID](/types/#scalars) | WHICH fraud alert (the /fraud-alerts door target) — the fraud_alert subject; null on the alarm kinds. |
| `searchJobId` | [ID](/types/#scalars) | WHICH background search (the /search-jobs/<id>/matches door target) — the search_finished · search_expired · search_failed subject; null on the other kinds. |
| `exportJobId` | [ID](/types/#scalars) | WHICH background export (📤 — the /profile door today; ’s export room re-points it to /exports/<id>) — the export_finished · export_expired · export_failed subject; null on the other kinds. |
| `trainingCertificateId` | [ID](/types/#scalars) | WHICH training certificate (🎓 — the training_certificate_issued subject; the office notice's door is the Learn view /playbook?learn=1 — the design note; 🎓 — ALSO the training_refresh_due subject: the certificate whose course changed) — null on the other kinds. |
| `trainingRequirementId` | [ID](/types/#scalars) | WHICH training requirement (🎓 — the training_required subject, the eighth exclusive axis: the rule that binds you and stands unmet; the door is the Learn view /playbook?learn=1) — null on the other kinds. |
| `changeTag` | [String](/types/#scalars) | WHICH wave (🆕 — THE CHANGES TAB slice 2 THE FEED; the design note) — the release subject, the NINTH exclusive axis: the wave tag the office words the notice from through its bundled changes table (the wave’s first title; “and N more”); the door is What’s new (/?tab=CHANGES) — null on the other kinds. |
| `fillDraftId` | [ID](/types/#scalars) | WHICH wizard draft (🤖 — THE FILL CONVERSATION slice; the design note) — the fill_draft_finished subject, the TENTH exclusive axis: the draft that became READY (read it with fillDraft; the office door is the landing '/' until opens the wizard on it); null on the other kinds. |
| `createdAt` | [String](/types/#scalars) `String!` | No further notes. |
| `readAt` | [String](/types/#scalars) | null = unread. |

## Used by

- [markNotificationRead](/reference/your-own-session/markNotificationRead/)
