Skip to main content
Version: 1.2

9.4 Notification Event Configurations

Controller: NotificationEventConfigurationsController · Route: api/v1/NotificationEventConfigurations · GroupName: notifications · 9 endpoints · Lets an administrator enable/disable a channel for a specific business event, from the database, with zero code changes or redeploys — see §3.3.

Standard CRUD action set (same shape as §9.2):

Verb + routePermissionRequestResponse (data)
POST GetDataTableNotificationEventConfigurations.ViewAllDtParametersDtResult<NotificationEventConfigurationDto> (unwrapped)
GET GetDetails/{id}NotificationEventConfigurations.ViewNotificationEventConfigurationDetailsDto
GET GetEdit/{id}NotificationEventConfigurations.EditNotificationEventConfigurationEditDto
GET GetDropdownList?findBy=&onlyActive=trueNotificationEventConfigurations.Viewquery stringNotificationEventConfigurationViewListDto[]
POST CreateNotificationEventConfigurations.CreateNotificationEventConfigurationEditDtoGuid
PUT Update/{id}NotificationEventConfigurations.EditNotificationEventConfigurationEditDtoGuid
DELETE Delete?restore=NotificationEventConfigurations.DeleteDeleteDto[]Guid
PUT ActiveNotificationEventConfigurations.ActiveDeleteDto[]Guid
PUT DeactiveNotificationEventConfigurations.DeactiveDeleteDto[]Guid

Field-level detail — NotificationEventConfigurationEditDto

{
"id": "00000000-0000-0000-0000-000000000000",
"isActive": true,
"displayOrder": 0,
"eventKey": "PurchaseInvoicePosted",
"displayName": "تم اعتماد فاتورة شراء",
"fDisplayName": "Purchase invoice posted",
"description": "Fires when a purchase invoice transitions to Approved/Posted status.",
"enableEmail": true,
"enableSms": false,
"enablePush": true,
"enableInApp": true,
"enableSignalR": true,
"enableWhatsApp": false
}

Validation (NotificationEventConfigurationValidator): EventKey NotEmpty + max 100, DisplayName/ FDisplayName max 200, Description max 500 (only when non-null). Note EnableWhatsApp defaults false — WhatsApp must be explicitly opted in per event, unlike every other channel which defaults true.

Business notes: if no row exists for a given EventKey, the dispatch engine treats it as all channels enabled (§6.2 step 2) — this table is opt-out, not opt-in, for every channel except WhatsApp. 41 well-known event keys were seeded with all-channels-enabled defaults (WhatsApp excluded) as part of the original migration — see Chapter 20 — Appendix for the NotificationEventKeys catalog.

Angular: an admin settings screen typically renders this as a matrix (event rows × channel-toggle columns) — GetDataTable for the grid, Update per toggle flip (or batch several toggles into one Update call per row). Flutter: not typically exposed in the end-user mobile app — this is an admin/back-office concern. Backend: consumed by NotificationDispatchService on every dispatch, before template selection — see Chapter 6. Related APIs: App Notification Templates (what actually gets sent once a channel is enabled), Chapter 8.