Notifications API
7 endpoints, generated from packages/core/openapi/v1.snapshot.json (OpenAPI 3.1.0, contract version 1.0). Conventions for lists, errors, money and authentication are on the API conventions page.
GET/api/v1/notifications
List my notifications
Every response carries `cursor`, the position of the newest item in this view. Pass it back as `since` to get only newer notifications, oldest first (`sort` is then ignored); `cursor` then points at the last item returned, so a client pages forward with it until `items` is empty. `cursor` is null only when there is nothing to point at.
Parameters
| Name | In | Type | Required |
|---|---|---|---|
page | query | integer | no |
pageSize | query | integer | no |
sort | query | enum | no |
unread | query | enum | no |
sinceA `cursor` from an earlier response. | query | string | no |
Responses
200 Success. object
itemsarray of objectrequiredidstring (uuid)requiredkindstringrequiredcategorystringrequiredtitlestringrequiredbodystring | nullrequiredlinkstringrequiredcreatedAtstring (date-time)requiredreadAtstring (date-time) or nullrequired
pageintegerrequiredmin -9007199254740991
pageSizeintegerrequiredmin -9007199254740991
totalintegerrequiredmin -9007199254740991
unreadintegerrequiredmin -9007199254740991
cursorstring | nullrequiredOpaque. Pass as `since` for newer notifications.
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
mfa_enrolment_required
POST/api/v1/notifications/{id}/read
Mark a notification read
Parameters
| Name | In | Type | Required |
|---|---|---|---|
id | path | string (uuid) | yes |
Responses
204 No content.
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,mfa_enrolment_required - 404
not_found
GET/api/v1/notifications/delivery
Email delivery status
Whether email is configured, outbox counts, and emails that failed after every retry.
Responses
200 Success. object
emailConfiguredbooleanrequiredsetupHelpstring | nullrequiredcountsobjectrequiredqueuedintegerrequiredmin -9007199254740991
sentintegerrequiredmin -9007199254740991
failedintegerrequiredmin -9007199254740991
suppressedintegerrequiredmin -9007199254740991
failedarray of objectrequiredidstring (uuid)requiredtostringrequiredkindstringrequiredattemptsintegerrequiredmin -9007199254740991
lastErrorstring | nullrequiredcreatedAtstring (date-time)required
- 401
session_expired,session_revoked,unauthenticated - 403
forbidden,mfa_enrolment_required
GET/api/v1/notifications/preferences
Get my email preferences
Responses
200 Success. object
emailConfiguredbooleanrequiredcategoriesarray of objectrequiredcategoryenumrequiredone of "approvals", "requests", "reminders", "updates", "security"
labelstringrequireddescriptionstringrequiredemailEnabledbooleanrequiredlockedbooleanrequired
- 401
session_expired,session_revoked,unauthenticated - 403
mfa_enrolment_required
PUT/api/v1/notifications/preferences
Set my email preferences
Per category; security emails cannot be turned off.
Request body
application/json, object, required
emailobjectrequired
Responses
200 Success. object
updatedintegerrequiredmin -9007199254740991
- 400
validation_failed - 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,mfa_enrolment_required
POST/api/v1/notifications/read-all
Mark all my notifications read
Responses
200 Success. object
updatedintegerrequiredmin -9007199254740991
- 401
session_expired,session_revoked,unauthenticated - 403
csrf_rejected,mfa_enrolment_required
GET/api/v1/notifications/unread-count
Count my unread notifications
Cheap enough to poll; the top bar shows it.
Responses
200 Success. object
unreadintegerrequiredmin -9007199254740991
- 401
session_expired,session_revoked,unauthenticated - 403
mfa_enrolment_required