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","push","sms", 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 ("bounced","complained","delivered","enqueue-failed","failed","queued","sent","skipped","suppressed", 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","push","sms", 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 every enabled locale (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","push","sms", required).event(string, pattern^[a-z][a-z0-9_.]*$, required).variables(array of string, optional).isEnabled(boolean, optional).sendEnabled(boolean, optional).category("LIFECYCLE","MARKETING","TRANSACTIONAL", optional).
OptionalTranslatableBodyDto
Section titled “OptionalTranslatableBodyDto”fr(string, optional).en(string, optional).ar(string, optional).default(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("ar","en","fr", optional).variables(object, optional).
TranslatableBodyDto
Section titled “TranslatableBodyDto”fr(string, optional).en(string, optional).ar(string, optional).default(string, required).
UpdateNotificationTemplateDto
Section titled “UpdateNotificationTemplateDto”subject(OptionalTranslatableBodyDto, optional).body(OptionalTranslatableBodyDto, optional).variables(array of string, optional).isEnabled(boolean, optional).sendEnabled(boolean, optional).category("LIFECYCLE","MARKETING","TRANSACTIONAL", optional).