Pushes a notification to the user's device — application web push, a Synapse event, or both, depending on the user's notification settings. It exists to reach the user when the turn is not enough: a background task finished, something broke, or a decision is needed before work can continue.
It is not a progress log. A notification interrupts; each one should be something the user would want to know now.
| Parameter | Required | Description | ||
|---|---|---|---|---|
message |
yes | One plain sentence or two. | ||
level |
no | info (default) \ |
warning \ |
intervention. |
{"message": "Backup finished: 4.2 GB, no errors.", "level": "info"}
{"message": "Deploy failed at the migration step — the DB is still on the old schema.", "level": "warning"}
{"message": "Delete the 12 archived sessions on prod? Two of them are referenced by open tasks. Need an answer before I continue.", "level": "intervention"}
Levels map to delivery priority and to the push title:
level |
Meaning | Priority |
|---|---|---|
info |
FYI — the result is in, nothing needed | normal |
warning |
Something went wrong or degraded | high |
intervention |
The user's decision is needed now | critical |
The notification titles are localised by level ("Navi: уведомление" / "Navi: предупреждение" / "Navi: нужно ваше решение") — that is the app's wording, not yours; the message is what you write.
Delivery follows the user's push_target setting, and the result says exactly what happened:
navi-notification event through Synapse, with the level as the action and a dedup key derived from the message. Skipped if the Synapse source key is not configured.A successful call returns success: true and a report such as Delivered: app, synapse. or Skipped: synapse (source key not configured). A skipped leg is not a failure — the notification went where it could. Do not retry to force the other leg; the configuration is a user choice.
The call fails only when there is genuinely nothing to send: no user context in the run (No user context), an empty message, or a level outside the three above.
intervention must state the decision. Say what you need decided and what happens next, so the user can answer from the notification without opening the session. "Please advise" is not a request.