Notifications (admin API)
Admin routes of the notifications module. Every route needs a staff session and the permission named on it; send X-Resolve-Locale: false to receive every locale of a translatable field for editing.
GET /v1/admin/notifications
Section titled “GET /v1/admin/notifications”List notifications for the current admin user
Parameters:
isReadin query (boolean, optional).pagein query (number, min 1, optional).pageSizein query (number, min 1, max 100, optional).
Responses:
200: no description.
PATCH /v1/admin/notifications/{id}/read
Section titled “PATCH /v1/admin/notifications/{id}/read”Mark one notification as read
Parameters:
idin path (string, required).
Responses:
200: no description.
GET /v1/admin/notifications/log
Section titled “GET /v1/admin/notifications/log”List notification send-log entries
Parameters:
channelin query ("email","sms","push", optional).fromin query (string, optional).pagein query (number, min 1, optional).pageSizein query (number, min 1, max 100, optional).recipientin query (string, optional).statusin query ("queued","sent","delivered","bounced","complained","failed","suppressed","skipped","enqueue-failed", optional).templateCodein query (string, optional).toin query (string, optional).
Responses:
200: Log retrieved.
POST /v1/admin/notifications/log/{id}/resend
Section titled “POST /v1/admin/notifications/log/{id}/resend”Resend a notification log entry
Parameters:
idin path (string, required).
Responses:
200: Resend queued.404: Log entry not found.
PATCH /v1/admin/notifications/read-all
Section titled “PATCH /v1/admin/notifications/read-all”Mark all notifications as read
Responses:
200: no description.
GET /v1/admin/notifications/templates
Section titled “GET /v1/admin/notifications/templates”List notification templates
Parameters:
channelin query ("email","sms","push", optional).eventin query (string, optional).isEnabledin query (boolean, optional).pagein query (number, min 1, optional).pageSizein query (number, min 1, max 100, optional).
Responses:
200: Templates retrieved.
POST /v1/admin/notifications/templates
Section titled “POST /v1/admin/notifications/templates”Create notification template
Request body: CreateNotificationTemplateDto.
Responses:
201: Created.400: Invalid input.409: Code already in use.
DELETE /v1/admin/notifications/templates/{id}
Section titled “DELETE /v1/admin/notifications/templates/{id}”Delete notification template
Parameters:
idin path (string, required).
Responses:
204: Deleted.404: Template not found.
GET /v1/admin/notifications/templates/{id}
Section titled “GET /v1/admin/notifications/templates/{id}”Get template
Parameters:
idin path (string, required).
Responses:
200: Template retrieved.404: Template not found.
PATCH /v1/admin/notifications/templates/{id}
Section titled “PATCH /v1/admin/notifications/templates/{id}”Update notification template
Parameters:
idin path (string, required).
Request body: UpdateNotificationTemplateDto.
Responses:
200: Updated.400: Invalid input.404: Template not found.
POST /v1/admin/notifications/templates/{id}/preview
Section titled “POST /v1/admin/notifications/templates/{id}/preview”Render a draft template for both locales (no send, no persist)
Parameters:
idin path (string, required).
Request body: PreviewTemplateDto.
Responses:
200: Rendered preview.400: Body references an undeclared variable.404: Template not found.
POST /v1/admin/notifications/templates/{id}/send-test
Section titled “POST /v1/admin/notifications/templates/{id}/send-test”Send a test of this template to your own inbox
Parameters:
idin path (string, required).
Request body: SendTestTemplateDto.
Responses:
200: Test enqueued (honest outcome).400: Non-email template or no recipient email.404: Template not found.
GET /v1/admin/notifications/unread-count
Section titled “GET /v1/admin/notifications/unread-count”Get unread notification count
Responses:
200: no description.
Schemas
Section titled “Schemas”CreateNotificationTemplateDto
Section titled “CreateNotificationTemplateDto”code(string, pattern/^[a-z][a-z0-9_.]*$/, min length 2, max length 100, required).subject(OptionalTranslatableBodyDto, optional).body(TranslatableBodyDto, required).channel("email","sms","push", required).event(string, pattern/^[a-z][a-z0-9_.]*$/, required).variables(array of string, optional).isEnabled(boolean, optional).sendEnabled(boolean, optional).category("TRANSACTIONAL","LIFECYCLE","MARKETING", optional).
OptionalTranslatableBodyDto
Section titled “OptionalTranslatableBodyDto”default(string, optional).fr(string, optional).en(string, optional).ar(string, optional).
PreviewTemplateDto
Section titled “PreviewTemplateDto”subject(OptionalTranslatableBodyDto, optional).body(OptionalTranslatableBodyDto, optional).variables(array of string, optional).sampleVariables(object, optional).
SendTestTemplateDto
Section titled “SendTestTemplateDto”locale("fr","en","ar", optional).variables(object, optional).
TranslatableBodyDto
Section titled “TranslatableBodyDto”default(string, required).fr(string, optional).en(string, optional).ar(string, optional).
UpdateNotificationTemplateDto
Section titled “UpdateNotificationTemplateDto”subject(OptionalTranslatableBodyDto, optional).body(OptionalTranslatableBodyDto, optional).variables(array of string, optional).isEnabled(boolean, optional).sendEnabled(boolean, optional).category("TRANSACTIONAL","LIFECYCLE","MARKETING", optional).