@oneuptime/common 7.0.3148 → 7.0.3153

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/Models/DatabaseModels/Alert.ts +1010 -0
  2. package/Models/DatabaseModels/AlertCustomField.ts +340 -0
  3. package/Models/DatabaseModels/AlertInternalNote.ts +371 -0
  4. package/Models/DatabaseModels/AlertNoteTemplate.ts +352 -0
  5. package/Models/DatabaseModels/AlertOwnerTeam.ts +416 -0
  6. package/Models/DatabaseModels/AlertOwnerUser.ts +415 -0
  7. package/Models/DatabaseModels/AlertSeverity.ts +426 -0
  8. package/Models/DatabaseModels/AlertState.ts +502 -0
  9. package/Models/DatabaseModels/AlertStateTimeline.ts +525 -0
  10. package/Models/DatabaseModels/Incident.ts +2 -11
  11. package/Models/DatabaseModels/Index.ts +34 -12
  12. package/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.ts +55 -0
  13. package/Models/DatabaseModels/TableView.ts +452 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1727894983857-MigrationName.ts +51 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/1727906598804-MigrationName.ts +553 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  17. package/Server/Services/AlertCustomFieldService.ts +9 -0
  18. package/Server/Services/AlertInternalNoteService.ts +10 -0
  19. package/Server/Services/AlertNoteTemplateService.ts +9 -0
  20. package/Server/Services/AlertOwnerTeamService.ts +10 -0
  21. package/Server/Services/AlertOwnerUserService.ts +10 -0
  22. package/Server/Services/AlertService.ts +568 -0
  23. package/Server/Services/AlertSeverityService.ts +154 -0
  24. package/Server/Services/AlertStateService.ts +227 -0
  25. package/Server/Services/AlertStateTimelineService.ts +334 -0
  26. package/Server/Services/CallLogService.ts +4 -1
  27. package/Server/Services/DatabaseService.ts +17 -20
  28. package/Server/Services/EmailLogService.ts +4 -1
  29. package/Server/Services/IncidentService.ts +4 -1
  30. package/Server/Services/IncidentStateTimelineService.ts +4 -1
  31. package/Server/Services/Index.ts +23 -0
  32. package/Server/Services/MonitorStatusTimelineService.ts +4 -1
  33. package/Server/Services/OnCallDutyPolicyExecutionLogService.ts +4 -1
  34. package/Server/Services/OnCallDutyPolicyService.ts +15 -0
  35. package/Server/Services/ProjectService.ts +99 -1
  36. package/Server/Services/ScheduledMaintenanceService.ts +4 -1
  37. package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +4 -1
  38. package/Server/Services/ShortLinkService.ts +4 -1
  39. package/Server/Services/SmsLogService.ts +4 -1
  40. package/Server/Services/TableViewService.ts +10 -0
  41. package/Server/Services/TelemetryUsageBillingService.ts +4 -1
  42. package/Server/Services/UserNotificationSettingService.ts +58 -0
  43. package/Server/Services/UserOnCallLogService.ts +4 -1
  44. package/Server/Services/WorkflowLogService.ts +4 -1
  45. package/Server/Types/Workflow/Components/API/Post.ts +25 -0
  46. package/Server/Utils/Monitor/MonitorAlert.ts +273 -0
  47. package/Server/Utils/Monitor/MonitorIncident.ts +298 -0
  48. package/Server/Utils/Monitor/MonitorResource.ts +67 -387
  49. package/Server/Utils/Monitor/MonitorStatusTimeline.ts +120 -0
  50. package/Server/Utils/Realtime.ts +1 -35
  51. package/Types/Email/EmailTemplateType.ts +7 -0
  52. package/Types/Icon/IconProp.ts +1 -0
  53. package/Types/Monitor/CriteriaAlert.ts +11 -0
  54. package/Types/Monitor/MonitorCriteria.ts +2 -0
  55. package/Types/Monitor/MonitorCriteriaInstance.ts +134 -1
  56. package/Types/Monitor/MonitorStep.ts +1 -0
  57. package/Types/Monitor/MonitorSteps.ts +1 -0
  58. package/Types/NotificationSetting/NotificationSettingEventType.ts +7 -0
  59. package/Types/Permission.ts +369 -1
  60. package/Types/Telemetry/TelemetryQuery.ts +10 -0
  61. package/Types/UserNotification/UserNotificationEventType.ts +1 -0
  62. package/UI/Components/Card/Card.tsx +40 -31
  63. package/UI/Components/Card/CardButtons/MoreButton.ts +15 -0
  64. package/UI/Components/HeaderAlert/HeaderAlert.tsx +75 -16
  65. package/UI/Components/HeaderAlert/HeaderAlertGroup.tsx +50 -0
  66. package/UI/Components/HeaderAlert/HeaderModelAlert.tsx +5 -1
  67. package/UI/Components/Icon/Icon.tsx +8 -0
  68. package/UI/Components/ModelDetail/CardModelDetail.tsx +4 -2
  69. package/UI/Components/ModelTable/BaseModelTable.tsx +70 -2
  70. package/UI/Components/ModelTable/TableView.tsx +317 -0
  71. package/UI/Components/MoreMenu/Divider.tsx +7 -0
  72. package/UI/Components/MoreMenu/MoreMenu.tsx +54 -0
  73. package/UI/Components/MoreMenu/MoreMenuItem.tsx +37 -0
  74. package/UI/Components/MoreMenu/MoreMenuSection.tsx +22 -0
  75. package/UI/Components/Toggle/Toggle.tsx +14 -0
  76. package/build/dist/Models/DatabaseModels/Alert.js +1028 -0
  77. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -0
  78. package/build/dist/Models/DatabaseModels/AlertCustomField.js +360 -0
  79. package/build/dist/Models/DatabaseModels/AlertCustomField.js.map +1 -0
  80. package/build/dist/Models/DatabaseModels/AlertInternalNote.js +391 -0
  81. package/build/dist/Models/DatabaseModels/AlertInternalNote.js.map +1 -0
  82. package/build/dist/Models/DatabaseModels/AlertNoteTemplate.js +372 -0
  83. package/build/dist/Models/DatabaseModels/AlertNoteTemplate.js.map +1 -0
  84. package/build/dist/Models/DatabaseModels/AlertOwnerTeam.js +434 -0
  85. package/build/dist/Models/DatabaseModels/AlertOwnerTeam.js.map +1 -0
  86. package/build/dist/Models/DatabaseModels/AlertOwnerUser.js +433 -0
  87. package/build/dist/Models/DatabaseModels/AlertOwnerUser.js.map +1 -0
  88. package/build/dist/Models/DatabaseModels/AlertSeverity.js +450 -0
  89. package/build/dist/Models/DatabaseModels/AlertSeverity.js.map +1 -0
  90. package/build/dist/Models/DatabaseModels/AlertState.js +530 -0
  91. package/build/dist/Models/DatabaseModels/AlertState.js.map +1 -0
  92. package/build/dist/Models/DatabaseModels/AlertStateTimeline.js +548 -0
  93. package/build/dist/Models/DatabaseModels/AlertStateTimeline.js.map +1 -0
  94. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  95. package/build/dist/Models/DatabaseModels/Index.js +29 -9
  96. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  97. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js +55 -0
  98. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js.map +1 -1
  99. package/build/dist/Models/DatabaseModels/TableView.js +475 -0
  100. package/build/dist/Models/DatabaseModels/TableView.js.map +1 -0
  101. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1727894983857-MigrationName.js +24 -0
  102. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1727894983857-MigrationName.js.map +1 -0
  103. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1727906598804-MigrationName.js +198 -0
  104. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1727906598804-MigrationName.js.map +1 -0
  105. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  106. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  107. package/build/dist/Server/Services/AlertCustomFieldService.js +9 -0
  108. package/build/dist/Server/Services/AlertCustomFieldService.js.map +1 -0
  109. package/build/dist/Server/Services/AlertInternalNoteService.js +9 -0
  110. package/build/dist/Server/Services/AlertInternalNoteService.js.map +1 -0
  111. package/build/dist/Server/Services/AlertNoteTemplateService.js +9 -0
  112. package/build/dist/Server/Services/AlertNoteTemplateService.js.map +1 -0
  113. package/build/dist/Server/Services/AlertOwnerTeamService.js +9 -0
  114. package/build/dist/Server/Services/AlertOwnerTeamService.js.map +1 -0
  115. package/build/dist/Server/Services/AlertOwnerUserService.js +9 -0
  116. package/build/dist/Server/Services/AlertOwnerUserService.js.map +1 -0
  117. package/build/dist/Server/Services/AlertService.js +418 -0
  118. package/build/dist/Server/Services/AlertService.js.map +1 -0
  119. package/build/dist/Server/Services/AlertSeverityService.js +108 -0
  120. package/build/dist/Server/Services/AlertSeverityService.js.map +1 -0
  121. package/build/dist/Server/Services/AlertStateService.js +158 -0
  122. package/build/dist/Server/Services/AlertStateService.js.map +1 -0
  123. package/build/dist/Server/Services/AlertStateTimelineService.js +267 -0
  124. package/build/dist/Server/Services/AlertStateTimelineService.js.map +1 -0
  125. package/build/dist/Server/Services/CallLogService.js +4 -1
  126. package/build/dist/Server/Services/CallLogService.js.map +1 -1
  127. package/build/dist/Server/Services/DatabaseService.js +9 -9
  128. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  129. package/build/dist/Server/Services/EmailLogService.js +4 -1
  130. package/build/dist/Server/Services/EmailLogService.js.map +1 -1
  131. package/build/dist/Server/Services/IncidentService.js +4 -1
  132. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  133. package/build/dist/Server/Services/IncidentStateTimelineService.js +4 -1
  134. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  135. package/build/dist/Server/Services/Index.js +21 -0
  136. package/build/dist/Server/Services/Index.js.map +1 -1
  137. package/build/dist/Server/Services/MonitorStatusTimelineService.js +4 -1
  138. package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
  139. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js +4 -1
  140. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js.map +1 -1
  141. package/build/dist/Server/Services/OnCallDutyPolicyService.js +8 -0
  142. package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
  143. package/build/dist/Server/Services/ProjectService.js +80 -1
  144. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  145. package/build/dist/Server/Services/ScheduledMaintenanceService.js +4 -1
  146. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  147. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +4 -1
  148. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
  149. package/build/dist/Server/Services/ShortLinkService.js +4 -1
  150. package/build/dist/Server/Services/ShortLinkService.js.map +1 -1
  151. package/build/dist/Server/Services/SmsLogService.js +4 -1
  152. package/build/dist/Server/Services/SmsLogService.js.map +1 -1
  153. package/build/dist/Server/Services/TableViewService.js +9 -0
  154. package/build/dist/Server/Services/TableViewService.js.map +1 -0
  155. package/build/dist/Server/Services/TelemetryUsageBillingService.js +4 -1
  156. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  157. package/build/dist/Server/Services/UserNotificationSettingService.js +49 -0
  158. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  159. package/build/dist/Server/Services/UserOnCallLogService.js +4 -1
  160. package/build/dist/Server/Services/UserOnCallLogService.js.map +1 -1
  161. package/build/dist/Server/Services/WorkflowLogService.js +4 -1
  162. package/build/dist/Server/Services/WorkflowLogService.js.map +1 -1
  163. package/build/dist/Server/Types/Workflow/Components/API/Post.js +14 -0
  164. package/build/dist/Server/Types/Workflow/Components/API/Post.js.map +1 -1
  165. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +177 -0
  166. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -0
  167. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +187 -0
  168. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -0
  169. package/build/dist/Server/Utils/Monitor/MonitorResource.js +46 -254
  170. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  171. package/build/dist/Server/Utils/Monitor/MonitorStatusTimeline.js +79 -0
  172. package/build/dist/Server/Utils/Monitor/MonitorStatusTimeline.js.map +1 -0
  173. package/build/dist/Server/Utils/Realtime.js +3 -28
  174. package/build/dist/Server/Utils/Realtime.js.map +1 -1
  175. package/build/dist/Types/Email/EmailTemplateType.js +4 -0
  176. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  177. package/build/dist/Types/Icon/IconProp.js +1 -0
  178. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  179. package/build/dist/Types/Monitor/CriteriaAlert.js +2 -0
  180. package/build/dist/Types/Monitor/CriteriaAlert.js.map +1 -0
  181. package/build/dist/Types/Monitor/MonitorCriteria.js +1 -0
  182. package/build/dist/Types/Monitor/MonitorCriteria.js.map +1 -1
  183. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +120 -1
  184. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  185. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  186. package/build/dist/Types/Monitor/MonitorSteps.js.map +1 -1
  187. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +5 -0
  188. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
  189. package/build/dist/Types/Permission.js +323 -1
  190. package/build/dist/Types/Permission.js.map +1 -1
  191. package/build/dist/Types/Telemetry/TelemetryQuery.js +2 -0
  192. package/build/dist/Types/Telemetry/TelemetryQuery.js.map +1 -0
  193. package/build/dist/Types/UserNotification/UserNotificationEventType.js +1 -0
  194. package/build/dist/Types/UserNotification/UserNotificationEventType.js.map +1 -1
  195. package/build/dist/UI/Components/Card/Card.js +3 -2
  196. package/build/dist/UI/Components/Card/Card.js.map +1 -1
  197. package/build/dist/UI/Components/Card/CardButtons/MoreButton.js +12 -0
  198. package/build/dist/UI/Components/Card/CardButtons/MoreButton.js.map +1 -0
  199. package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js +53 -9
  200. package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js.map +1 -1
  201. package/build/dist/UI/Components/HeaderAlert/HeaderAlertGroup.js +25 -0
  202. package/build/dist/UI/Components/HeaderAlert/HeaderAlertGroup.js.map +1 -0
  203. package/build/dist/UI/Components/HeaderAlert/HeaderModelAlert.js +1 -1
  204. package/build/dist/UI/Components/HeaderAlert/HeaderModelAlert.js.map +1 -1
  205. package/build/dist/UI/Components/Icon/Icon.js +3 -0
  206. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  207. package/build/dist/UI/Components/ModelDetail/CardModelDetail.js.map +1 -1
  208. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +46 -0
  209. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  210. package/build/dist/UI/Components/ModelTable/TableView.js +183 -0
  211. package/build/dist/UI/Components/ModelTable/TableView.js.map +1 -0
  212. package/build/dist/UI/Components/MoreMenu/Divider.js +6 -0
  213. package/build/dist/UI/Components/MoreMenu/Divider.js.map +1 -0
  214. package/build/dist/UI/Components/MoreMenu/MoreMenu.js +19 -0
  215. package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -0
  216. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js +13 -0
  217. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js.map +1 -0
  218. package/build/dist/UI/Components/MoreMenu/MoreMenuSection.js +10 -0
  219. package/build/dist/UI/Components/MoreMenu/MoreMenuSection.js.map +1 -0
  220. package/build/dist/UI/Components/Toggle/Toggle.js +7 -1
  221. package/build/dist/UI/Components/Toggle/Toggle.js.map +1 -1
  222. package/package.json +2 -2
@@ -15,7 +15,6 @@ import Permission, {
15
15
  } from "../../Types/Permission";
16
16
  import { getModelTypeByName } from "../../Models/DatabaseModels/Index";
17
17
  import { getModelTypeByName as getAnalyticsModelTypeByname } from "../../Models/AnalyticsModels/Index";
18
- import DatabaseRequestType from "../Types/BaseDatabase/DatabaseRequestType";
19
18
  import ModelPermission from "../../Types/BaseDatabase/ModelPermission";
20
19
  import ModelEventType from "../../Types/Realtime/ModelEventType";
21
20
  import ListenToModelEventJSON from "../../Types/Realtime/ListenToModelEventJSON";
@@ -161,30 +160,12 @@ export default abstract class Realtime {
161
160
  projectId,
162
161
  );
163
162
 
164
- let databaseRequestType: DatabaseRequestType = DatabaseRequestType.Read;
165
-
166
- if (data.eventType === ModelEventType.Create) {
167
- logger.debug("Event type is Create, setting request type to Create");
168
- databaseRequestType = DatabaseRequestType.Create;
169
- }
170
-
171
- if (data.eventType === ModelEventType.Update) {
172
- logger.debug("Event type is Update, setting request type to Update");
173
- databaseRequestType = DatabaseRequestType.Update;
174
- }
175
-
176
- if (data.eventType === ModelEventType.Delete) {
177
- logger.debug("Event type is Delete, setting request type to Delete");
178
- databaseRequestType = DatabaseRequestType.Delete;
179
- }
180
-
181
163
  // check if the user has access to this model
182
164
  if (
183
165
  userTenantAccessPermission &&
184
166
  this.hasPermissionsByModelName(
185
167
  userTenantAccessPermission,
186
168
  data.modelName,
187
- databaseRequestType,
188
169
  )
189
170
  ) {
190
171
  logger.debug("User has access to the model, granting access");
@@ -297,7 +278,6 @@ export default abstract class Realtime {
297
278
  public static hasPermissionsByModelName(
298
279
  userProjectPermissions: UserTenantAccessPermission | Array<Permission>,
299
280
  modelName: string,
300
- requestType: DatabaseRequestType,
301
281
  ): boolean {
302
282
  let modelPermissions: Array<Permission> = [];
303
283
 
@@ -315,21 +295,7 @@ export default abstract class Realtime {
315
295
  }
316
296
  }
317
297
 
318
- if (requestType === DatabaseRequestType.Create) {
319
- modelPermissions = new modelType().getCreatePermissions();
320
- }
321
-
322
- if (requestType === DatabaseRequestType.Read) {
323
- modelPermissions = new modelType().getReadPermissions();
324
- }
325
-
326
- if (requestType === DatabaseRequestType.Update) {
327
- modelPermissions = new modelType().getUpdatePermissions();
328
- }
329
-
330
- if (requestType === DatabaseRequestType.Delete) {
331
- modelPermissions = new modelType().getDeletePermissions();
332
- }
298
+ modelPermissions = new modelType().getReadPermissions();
333
299
 
334
300
  return ModelPermission.hasPermissions(
335
301
  userProjectPermissions,
@@ -25,10 +25,17 @@ enum EmailTemplateType {
25
25
  MonitorOwnerResourceCreated = "MonitorOwnerResourceCreated.hbs",
26
26
  MonitorProbesStatus = "MonitorProbesStatus.hbs",
27
27
  MonitorOwnerStatusChanged = "MonitorOwnerStatusChanged.hbs",
28
+
28
29
  IncidentOwnerAdded = "IncidentOwnerAdded.hbs",
29
30
  IncidentOwnerStateChanged = "IncidentOwnerStateChanged.hbs",
30
31
  IncidentOwnerNotePosted = "IncidentOwnerNotePosted.hbs",
31
32
  IncidentOwnerResourceCreated = "IncidentOwnerResourceCreated.hbs",
33
+
34
+ AlertOwnerAdded = "AlertOwnerAdded.hbs",
35
+ AlertOwnerStateChanged = "AlertOwnerStateChanged.hbs",
36
+ AlertOwnerNotePosted = "AlertOwnerNotePosted.hbs",
37
+ AlertOwnerResourceCreated = "AlertOwnerResourceCreated.hbs",
38
+
32
39
  ScheduledMaintenanceOwnerNotePosted = "ScheduledMaintenanceOwnerNotePosted.hbs",
33
40
  ScheduledMaintenanceOwnerAdded = "ScheduledMaintenanceOwnerAdded.hbs",
34
41
  ScheduledMaintenanceOwnerStateChanged = "ScheduledMaintenanceOwnerStateChanged.hbs",
@@ -128,6 +128,7 @@ enum IconProp {
128
128
  NoSignal = "NoSignal",
129
129
  EyeSlash = "EyeSlash",
130
130
  SquareStack3D = "SquareStack3D",
131
+ ExclaimationCircle = "ExclaimationCircle",
131
132
  }
132
133
 
133
134
  export default IconProp;
@@ -0,0 +1,11 @@
1
+ import ObjectID from "../ObjectID";
2
+
3
+ export interface CriteriaAlert {
4
+ title: string;
5
+ description: string;
6
+ alertSeverityId?: ObjectID | undefined;
7
+ autoResolveAlert?: boolean | undefined;
8
+ remediationNotes?: string | undefined;
9
+ id: string;
10
+ onCallPolicyIds?: Array<ObjectID> | undefined;
11
+ }
@@ -27,6 +27,7 @@ export default class MonitorCriteria extends DatabaseProperty {
27
27
  onlineMonitorStatusId: ObjectID;
28
28
  offlineMonitorStatusId: ObjectID;
29
29
  defaultIncidentSeverityId: ObjectID;
30
+ defaultAlertSeverityId: ObjectID;
30
31
  }): MonitorCriteria {
31
32
  const monitorCriteria: MonitorCriteria = new MonitorCriteria();
32
33
  const offlineCriteria: MonitorCriteriaInstance =
@@ -34,6 +35,7 @@ export default class MonitorCriteria extends DatabaseProperty {
34
35
  monitorType: arg.monitorType,
35
36
  monitorStatusId: arg.offlineMonitorStatusId,
36
37
  incidentSeverityId: arg.defaultIncidentSeverityId,
38
+ alertSeverityId: arg.defaultAlertSeverityId,
37
39
  monitorName: arg.monitorName,
38
40
  });
39
41
 
@@ -4,6 +4,7 @@ import { JSONObject, ObjectType } from "../JSON";
4
4
  import JSONFunctions from "../JSONFunctions";
5
5
  import ObjectID from "../ObjectID";
6
6
  import Typeof from "../Typeof";
7
+ import { CriteriaAlert } from "./CriteriaAlert";
7
8
  import {
8
9
  CheckOn,
9
10
  CriteriaFilter,
@@ -19,10 +20,12 @@ export interface MonitorCriteriaInstanceType {
19
20
  filterCondition: FilterCondition;
20
21
  filters: Array<CriteriaFilter>;
21
22
  incidents: Array<CriteriaIncident>;
23
+ alerts: Array<CriteriaAlert>;
22
24
  name: string;
23
25
  description: string;
24
26
  changeMonitorStatus?: boolean | undefined;
25
27
  createIncidents?: boolean | undefined;
28
+ createAlerts?: boolean | undefined;
26
29
  id: string;
27
30
  }
28
31
 
@@ -43,8 +46,10 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
43
46
  },
44
47
  ],
45
48
  createIncidents: false,
49
+ createAlerts: false,
46
50
  changeMonitorStatus: false,
47
51
  incidents: [],
52
+ alerts: [],
48
53
  name: "",
49
54
  description: "",
50
55
  };
@@ -71,6 +76,8 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
71
76
  },
72
77
  ],
73
78
  incidents: [],
79
+ alerts: [],
80
+ createAlerts: false,
74
81
  changeMonitorStatus: true,
75
82
  createIncidents: false,
76
83
  name: `Check if ${arg.monitorName} is online`,
@@ -96,8 +103,10 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
96
103
  },
97
104
  ],
98
105
  incidents: [],
106
+ alerts: [],
99
107
  changeMonitorStatus: true,
100
108
  createIncidents: false,
109
+ createAlerts: false,
101
110
  name: `Check if ${arg.monitorName} is online`,
102
111
  description: `This criteria checks if the ${arg.monitorName} is online`,
103
112
  };
@@ -121,6 +130,8 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
121
130
  },
122
131
  ],
123
132
  incidents: [],
133
+ alerts: [],
134
+ createAlerts: false,
124
135
  changeMonitorStatus: true,
125
136
  createIncidents: false,
126
137
  name: `Check if ${arg.monitorName} is online`,
@@ -146,6 +157,8 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
146
157
  },
147
158
  ],
148
159
  incidents: [],
160
+ alerts: [],
161
+ createAlerts: false,
149
162
  changeMonitorStatus: true,
150
163
  createIncidents: false,
151
164
  name: `Check if ${arg.monitorName} is online`,
@@ -174,6 +187,8 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
174
187
  },
175
188
  ],
176
189
  incidents: [],
190
+ alerts: [],
191
+ createAlerts: false,
177
192
  changeMonitorStatus: true,
178
193
  createIncidents: false,
179
194
  name: `Check if ${arg.monitorName} is online`,
@@ -199,6 +214,8 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
199
214
  },
200
215
  ],
201
216
  incidents: [],
217
+ alerts: [],
218
+ createAlerts: false,
202
219
  changeMonitorStatus: true,
203
220
  createIncidents: false,
204
221
  name: `Check if ${arg.monitorName} is online`,
@@ -230,6 +247,8 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
230
247
  },
231
248
  ],
232
249
  incidents: [],
250
+ alerts: [],
251
+ createAlerts: false,
233
252
  changeMonitorStatus: true,
234
253
  createIncidents: false,
235
254
  name: `Check if ${arg.monitorName} is online`,
@@ -257,6 +276,7 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
257
276
  monitorType: MonitorType;
258
277
  monitorStatusId: ObjectID;
259
278
  incidentSeverityId: ObjectID;
279
+ alertSeverityId: ObjectID;
260
280
  monitorName: string;
261
281
  }): MonitorCriteriaInstance {
262
282
  const monitorCriteriaInstance: MonitorCriteriaInstance =
@@ -291,6 +311,17 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
291
311
  ],
292
312
  changeMonitorStatus: true,
293
313
  createIncidents: true,
314
+ createAlerts: false,
315
+ alerts: [
316
+ {
317
+ title: `${arg.monitorName} is offline`,
318
+ description: `${arg.monitorName} is currently offline.`,
319
+ alertSeverityId: arg.alertSeverityId,
320
+ autoResolveAlert: true,
321
+ id: ObjectID.generate().toString(),
322
+ onCallPolicyIds: [],
323
+ },
324
+ ],
294
325
  name: `Check if ${arg.monitorName} is offline`,
295
326
  description: `This criteria checks if the ${arg.monitorName} is offline`,
296
327
  };
@@ -316,6 +347,17 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
316
347
  value: 200,
317
348
  },
318
349
  ],
350
+ alerts: [
351
+ {
352
+ title: `${arg.monitorName} is offline`,
353
+ description: `${arg.monitorName} is currently offline.`,
354
+ alertSeverityId: arg.alertSeverityId,
355
+ autoResolveAlert: true,
356
+ id: ObjectID.generate().toString(),
357
+ onCallPolicyIds: [],
358
+ },
359
+ ],
360
+ createAlerts: false,
319
361
  incidents: [
320
362
  {
321
363
  title: `${arg.monitorName} is offline`,
@@ -355,6 +397,17 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
355
397
  onCallPolicyIds: [],
356
398
  },
357
399
  ],
400
+ alerts: [
401
+ {
402
+ title: `${arg.monitorName} is offline`,
403
+ description: `${arg.monitorName} is currently offline.`,
404
+ alertSeverityId: arg.alertSeverityId,
405
+ autoResolveAlert: true,
406
+ id: ObjectID.generate().toString(),
407
+ onCallPolicyIds: [],
408
+ },
409
+ ],
410
+ createAlerts: false,
358
411
  changeMonitorStatus: true,
359
412
  createIncidents: true,
360
413
  name: `Check if ${arg.monitorName} is offline`,
@@ -374,6 +427,17 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
374
427
  value: 0, // if there are no logs then the monitor is offline
375
428
  },
376
429
  ],
430
+ alerts: [
431
+ {
432
+ title: `${arg.monitorName} is offline`,
433
+ description: `${arg.monitorName} is currently offline.`,
434
+ alertSeverityId: arg.alertSeverityId,
435
+ autoResolveAlert: true,
436
+ id: ObjectID.generate().toString(),
437
+ onCallPolicyIds: [],
438
+ },
439
+ ],
440
+ createAlerts: false,
377
441
  incidents: [
378
442
  {
379
443
  title: `${arg.monitorName} is offline`,
@@ -403,6 +467,17 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
403
467
  value: 30, // if the request is not recieved in 30 minutes, then the monitor is offline
404
468
  },
405
469
  ],
470
+ alerts: [
471
+ {
472
+ title: `${arg.monitorName} is offline`,
473
+ description: `${arg.monitorName} is currently offline.`,
474
+ alertSeverityId: arg.alertSeverityId,
475
+ autoResolveAlert: true,
476
+ id: ObjectID.generate().toString(),
477
+ onCallPolicyIds: [],
478
+ },
479
+ ],
480
+ createAlerts: false,
406
481
  incidents: [
407
482
  {
408
483
  title: `${arg.monitorName} is offline`,
@@ -435,6 +510,17 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
435
510
  value: undefined,
436
511
  },
437
512
  ],
513
+ alerts: [
514
+ {
515
+ title: `${arg.monitorName} is offline`,
516
+ description: `${arg.monitorName} is currently offline.`,
517
+ alertSeverityId: arg.alertSeverityId,
518
+ autoResolveAlert: true,
519
+ id: ObjectID.generate().toString(),
520
+ onCallPolicyIds: [],
521
+ },
522
+ ],
523
+ createAlerts: false,
438
524
  incidents: [
439
525
  {
440
526
  title: `${arg.monitorName} is offline`,
@@ -457,6 +543,17 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
457
543
  id: ObjectID.generate().toString(),
458
544
  monitorStatusId: arg.monitorStatusId,
459
545
  filterCondition: FilterCondition.Any,
546
+ alerts: [
547
+ {
548
+ title: `${arg.monitorName} is offline`,
549
+ description: `${arg.monitorName} is currently offline.`,
550
+ alertSeverityId: arg.alertSeverityId,
551
+ autoResolveAlert: true,
552
+ id: ObjectID.generate().toString(),
553
+ onCallPolicyIds: [],
554
+ },
555
+ ],
556
+ createAlerts: false,
460
557
  filters: [
461
558
  {
462
559
  checkOn: CheckOn.IsNotAValidCertificate,
@@ -626,6 +723,14 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
626
723
  return this;
627
724
  }
628
725
 
726
+ public setAlerts(alerts: Array<CriteriaAlert>): MonitorCriteriaInstance {
727
+ if (this.data) {
728
+ this.data.alerts = [...alerts];
729
+ }
730
+
731
+ return this;
732
+ }
733
+
629
734
  public setChangeMonitorStatus(
630
735
  changeMonitorStatus: boolean | undefined,
631
736
  ): MonitorCriteriaInstance {
@@ -646,6 +751,16 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
646
751
  return this;
647
752
  }
648
753
 
754
+ public setCreateAlerts(
755
+ createAlerts: boolean | undefined,
756
+ ): MonitorCriteriaInstance {
757
+ if (this.data) {
758
+ this.data.createAlerts = createAlerts;
759
+ }
760
+
761
+ return this;
762
+ }
763
+
649
764
  public override toJSON(): JSONObject {
650
765
  if (!this.data) {
651
766
  return MonitorCriteriaInstance.getNewMonitorCriteriaInstanceAsJSON();
@@ -659,6 +774,8 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
659
774
  filterCondition: this.data.filterCondition,
660
775
  filters: this.data.filters,
661
776
  incidents: this.data.incidents,
777
+ alerts: this.data.alerts,
778
+ createAlerts: this.data.createAlerts,
662
779
  changeMonitorStatus: this.data.changeMonitorStatus,
663
780
  createIncidents: this.data.createIncidents,
664
781
  name: this.data.name,
@@ -705,13 +822,21 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
705
822
  }
706
823
 
707
824
  if (!json["incidents"]) {
708
- throw new BadDataException("json.incidents is null");
825
+ json["incidents"] = [];
709
826
  }
710
827
 
711
828
  if (!Array.isArray(json["incidents"])) {
712
829
  throw new BadDataException("json.incidents should be an array");
713
830
  }
714
831
 
832
+ if (!json["alerts"]) {
833
+ json["alerts"] = [];
834
+ }
835
+
836
+ if (!Array.isArray(json["alerts"])) {
837
+ throw new BadDataException("json.alerts should be an array");
838
+ }
839
+
715
840
  let monitorStatusId: ObjectID | undefined = undefined;
716
841
 
717
842
  if (
@@ -744,6 +869,12 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
744
869
  incidents.push({ ...(incident as any) });
745
870
  }
746
871
 
872
+ const alerts: Array<CriteriaAlert> = [];
873
+
874
+ for (const alert of json["alerts"]) {
875
+ alerts.push({ ...(alert as any) });
876
+ }
877
+
747
878
  const monitorCriteriaInstance: MonitorCriteriaInstance =
748
879
  new MonitorCriteriaInstance();
749
880
 
@@ -753,8 +884,10 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
753
884
  filterCondition,
754
885
  changeMonitorStatus: (json["changeMonitorStatus"] as boolean) || false,
755
886
  createIncidents: (json["createIncidents"] as boolean) || false,
887
+ createAlerts: (json["createAlerts"] as boolean) || false,
756
888
  filters: filters as any,
757
889
  incidents: incidents as any,
890
+ alerts: alerts as any,
758
891
  name: (json["name"] as string) || "",
759
892
  description: (json["description"] as string) || "",
760
893
  }) as any;
@@ -77,6 +77,7 @@ export default class MonitorStep extends DatabaseProperty {
77
77
  onlineMonitorStatusId: ObjectID;
78
78
  offlineMonitorStatusId: ObjectID;
79
79
  defaultIncidentSeverityId: ObjectID;
80
+ defaultAlertSeverityId: ObjectID;
80
81
  }): MonitorStep {
81
82
  const monitorStep: MonitorStep = new MonitorStep();
82
83
 
@@ -40,6 +40,7 @@ export default class MonitorSteps extends DatabaseProperty {
40
40
  onlineMonitorStatusId: ObjectID;
41
41
  offlineMonitorStatusId: ObjectID;
42
42
  defaultIncidentSeverityId: ObjectID;
43
+ defaultAlertSeverityId: ObjectID;
43
44
  }): MonitorSteps {
44
45
  const monitorSteps: MonitorSteps = new MonitorSteps();
45
46
 
@@ -5,6 +5,13 @@ enum NotificationSettingEventType {
5
5
  SEND_INCIDENT_STATE_CHANGED_OWNER_NOTIFICATION = "Send incident state changed notification when I am the owner of the incident",
6
6
  SEND_INCIDENT_OWNER_ADDED_NOTIFICATION = "Send notification when I am added as a owner to the incident",
7
7
 
8
+ // Alerts
9
+
10
+ SEND_ALERT_CREATED_OWNER_NOTIFICATION = "Send alert created notification when I am the owner of the alert",
11
+ SEND_ALERT_NOTE_POSTED_OWNER_NOTIFICATION = "Send alert note posted notification when I am the owner of the alert",
12
+ SEND_ALERT_STATE_CHANGED_OWNER_NOTIFICATION = "Send alert state changed notification when I am the owner of the alert",
13
+ SEND_ALERT_OWNER_ADDED_NOTIFICATION = "Send notification when I am added as a owner to the alert",
14
+
8
15
  // Monitors
9
16
  SEND_MONITOR_OWNER_ADDED_NOTIFICATION = "Send notification when I am added as a owner to the monitor",
10
17
  SEND_MONITOR_CREATED_OWNER_NOTIFICATION = "Send monitor created notification when I am the owner of the monitor",