@oneuptime/common 9.4.12 → 9.4.13

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 (256) hide show
  1. package/Models/DatabaseModels/Incident.ts +77 -0
  2. package/Models/DatabaseModels/IncidentEpisode.ts +1223 -0
  3. package/Models/DatabaseModels/IncidentEpisodeFeed.ts +533 -0
  4. package/Models/DatabaseModels/IncidentEpisodeInternalNote.ts +456 -0
  5. package/Models/DatabaseModels/IncidentEpisodeMember.ts +587 -0
  6. package/Models/DatabaseModels/IncidentEpisodeOwnerTeam.ts +421 -0
  7. package/Models/DatabaseModels/IncidentEpisodeOwnerUser.ts +419 -0
  8. package/Models/DatabaseModels/IncidentEpisodeStateTimeline.ts +524 -0
  9. package/Models/DatabaseModels/IncidentGroupingRule.ts +1430 -0
  10. package/Models/DatabaseModels/Index.ts +18 -0
  11. package/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.ts +70 -0
  12. package/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.ts +59 -0
  13. package/Models/DatabaseModels/UserOnCallLog.ts +48 -0
  14. package/Models/DatabaseModels/UserOnCallLogTimeline.ts +49 -0
  15. package/Models/DatabaseModels/WorkspaceNotificationLog.ts +57 -0
  16. package/Server/API/IncidentEpisodeAPI.ts +150 -0
  17. package/Server/API/SlackAPI.ts +23 -0
  18. package/Server/API/UserOnCallLogTimelineAPI.ts +24 -4
  19. package/Server/Infrastructure/Postgres/SchemaMigrations/1769626069479-MigrationName.ts +729 -0
  20. package/Server/Infrastructure/Postgres/SchemaMigrations/1769629928240-MigrationName.ts +261 -0
  21. package/Server/Infrastructure/Postgres/SchemaMigrations/1769676117342-RenameEvaluateOverTimeInCriteriaFilter.ts +28 -0
  22. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  23. package/Server/Services/BillingService.ts +1 -3
  24. package/Server/Services/CallService.ts +1 -0
  25. package/Server/Services/IncidentEpisodeFeedService.ts +94 -0
  26. package/Server/Services/IncidentEpisodeInternalNoteService.ts +71 -0
  27. package/Server/Services/IncidentEpisodeMemberService.ts +321 -0
  28. package/Server/Services/IncidentEpisodeOwnerTeamService.ts +10 -0
  29. package/Server/Services/IncidentEpisodeOwnerUserService.ts +10 -0
  30. package/Server/Services/IncidentEpisodeService.ts +1045 -0
  31. package/Server/Services/IncidentEpisodeStateTimelineService.ts +566 -0
  32. package/Server/Services/IncidentGroupingEngineService.ts +1047 -0
  33. package/Server/Services/IncidentGroupingRuleService.ts +14 -0
  34. package/Server/Services/IncidentService.ts +11 -0
  35. package/Server/Services/Index.ts +18 -0
  36. package/Server/Services/MailService.ts +1 -0
  37. package/Server/Services/MonitorService.ts +9 -0
  38. package/Server/Services/OnCallDutyPolicyEscalationRuleService.ts +18 -0
  39. package/Server/Services/OnCallDutyPolicyExecutionLogService.ts +64 -2
  40. package/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.ts +26 -1
  41. package/Server/Services/OnCallDutyPolicyService.ts +15 -0
  42. package/Server/Services/SmsService.ts +1 -0
  43. package/Server/Services/UserNotificationRuleService.ts +48 -2
  44. package/Server/Services/UserNotificationSettingService.ts +23 -0
  45. package/Server/Services/UserOnCallLogService.ts +41 -4
  46. package/Server/Services/WhatsAppService.ts +1 -0
  47. package/Server/Services/WorkspaceNotificationLogService.ts +16 -0
  48. package/Server/Services/WorkspaceNotificationRuleService.ts +116 -0
  49. package/Server/Utils/AI/IncidentEpisodeAIContextBuilder.ts +490 -0
  50. package/Server/Utils/Monitor/Criteria/APIRequestCriteria.ts +1 -1
  51. package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +1 -1
  52. package/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts +1 -1
  53. package/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.ts +1 -1
  54. package/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.ts +2 -2
  55. package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +182 -0
  56. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +13 -0
  57. package/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.ts +1 -1
  58. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +37 -0
  59. package/Server/Utils/PushNotificationUtil.ts +31 -0
  60. package/Server/Utils/WhatsAppTemplateUtil.ts +14 -0
  61. package/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.ts +18 -0
  62. package/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.ts +702 -0
  63. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +20 -0
  64. package/Server/Utils/Workspace/Slack/Actions/ActionTypes.ts +11 -0
  65. package/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.ts +918 -0
  66. package/Server/Utils/Workspace/Slack/Messages/IncidentEpisode.ts +120 -0
  67. package/Server/Utils/Workspace/WorkspaceMessages/IncidentEpisode.ts +74 -0
  68. package/Types/Email/EmailTemplateType.ts +6 -0
  69. package/Types/Monitor/CriteriaFilter.ts +24 -4
  70. package/Types/Monitor/MonitorCriteriaInstance.ts +67 -0
  71. package/Types/Monitor/MonitorStep.ts +37 -0
  72. package/Types/Monitor/MonitorStepSnmpMonitor.ts +102 -0
  73. package/Types/Monitor/MonitorType.ts +15 -2
  74. package/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.ts +8 -0
  75. package/Types/Monitor/SnmpMonitor/SnmpDataType.ts +21 -0
  76. package/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.ts +16 -0
  77. package/Types/Monitor/SnmpMonitor/SnmpOid.ts +60 -0
  78. package/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.ts +7 -0
  79. package/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.ts +7 -0
  80. package/Types/Monitor/SnmpMonitor/SnmpV3Auth.ts +12 -0
  81. package/Types/Monitor/SnmpMonitor/SnmpVersion.ts +7 -0
  82. package/Types/NotificationSetting/NotificationSettingEventType.ts +7 -0
  83. package/Types/Permission.ts +311 -0
  84. package/Types/Probe/ProbeMonitorResponse.ts +2 -0
  85. package/Types/UserNotification/UserNotificationEventType.ts +1 -0
  86. package/Types/WhatsApp/WhatsAppTemplates.ts +24 -0
  87. package/Types/Workspace/NotificationRules/EventType.ts +1 -0
  88. package/Types/Workspace/NotificationRules/NotificationRuleCondition.ts +38 -1
  89. package/Utils/Monitor/MonitorMetricType.ts +2 -1
  90. package/build/dist/Models/DatabaseModels/Incident.js +78 -0
  91. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  92. package/build/dist/Models/DatabaseModels/IncidentEpisode.js +1250 -0
  93. package/build/dist/Models/DatabaseModels/IncidentEpisode.js.map +1 -0
  94. package/build/dist/Models/DatabaseModels/IncidentEpisodeFeed.js +555 -0
  95. package/build/dist/Models/DatabaseModels/IncidentEpisodeFeed.js.map +1 -0
  96. package/build/dist/Models/DatabaseModels/IncidentEpisodeInternalNote.js +467 -0
  97. package/build/dist/Models/DatabaseModels/IncidentEpisodeInternalNote.js.map +1 -0
  98. package/build/dist/Models/DatabaseModels/IncidentEpisodeMember.js +607 -0
  99. package/build/dist/Models/DatabaseModels/IncidentEpisodeMember.js.map +1 -0
  100. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerTeam.js +437 -0
  101. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerTeam.js.map +1 -0
  102. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerUser.js +436 -0
  103. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerUser.js.map +1 -0
  104. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js +546 -0
  105. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js.map +1 -0
  106. package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js +1437 -0
  107. package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js.map +1 -0
  108. package/build/dist/Models/DatabaseModels/Index.js +16 -0
  109. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  110. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js +69 -0
  111. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js.map +1 -1
  112. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.js +58 -0
  113. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.js.map +1 -1
  114. package/build/dist/Models/DatabaseModels/UserOnCallLog.js +47 -0
  115. package/build/dist/Models/DatabaseModels/UserOnCallLog.js.map +1 -1
  116. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +48 -0
  117. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
  118. package/build/dist/Models/DatabaseModels/WorkspaceNotificationLog.js +58 -0
  119. package/build/dist/Models/DatabaseModels/WorkspaceNotificationLog.js.map +1 -1
  120. package/build/dist/Server/API/IncidentEpisodeAPI.js +97 -0
  121. package/build/dist/Server/API/IncidentEpisodeAPI.js.map +1 -0
  122. package/build/dist/Server/API/SlackAPI.js +18 -0
  123. package/build/dist/Server/API/SlackAPI.js.map +1 -1
  124. package/build/dist/Server/API/UserOnCallLogTimelineAPI.js +30 -10
  125. package/build/dist/Server/API/UserOnCallLogTimelineAPI.js.map +1 -1
  126. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769626069479-MigrationName.js +256 -0
  127. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769626069479-MigrationName.js.map +1 -0
  128. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769629928240-MigrationName.js +96 -0
  129. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769629928240-MigrationName.js.map +1 -0
  130. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769676117342-RenameEvaluateOverTimeInCriteriaFilter.js +25 -0
  131. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769676117342-RenameEvaluateOverTimeInCriteriaFilter.js.map +1 -0
  132. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  133. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  134. package/build/dist/Server/Services/BillingService.js +1 -2
  135. package/build/dist/Server/Services/BillingService.js.map +1 -1
  136. package/build/dist/Server/Services/CallService.js.map +1 -1
  137. package/build/dist/Server/Services/IncidentEpisodeFeedService.js +83 -0
  138. package/build/dist/Server/Services/IncidentEpisodeFeedService.js.map +1 -0
  139. package/build/dist/Server/Services/IncidentEpisodeInternalNoteService.js +70 -0
  140. package/build/dist/Server/Services/IncidentEpisodeInternalNoteService.js.map +1 -0
  141. package/build/dist/Server/Services/IncidentEpisodeMemberService.js +298 -0
  142. package/build/dist/Server/Services/IncidentEpisodeMemberService.js.map +1 -0
  143. package/build/dist/Server/Services/IncidentEpisodeOwnerTeamService.js +9 -0
  144. package/build/dist/Server/Services/IncidentEpisodeOwnerTeamService.js.map +1 -0
  145. package/build/dist/Server/Services/IncidentEpisodeOwnerUserService.js +9 -0
  146. package/build/dist/Server/Services/IncidentEpisodeOwnerUserService.js.map +1 -0
  147. package/build/dist/Server/Services/IncidentEpisodeService.js +933 -0
  148. package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -0
  149. package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js +498 -0
  150. package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js.map +1 -0
  151. package/build/dist/Server/Services/IncidentGroupingEngineService.js +799 -0
  152. package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -0
  153. package/build/dist/Server/Services/IncidentGroupingRuleService.js +13 -0
  154. package/build/dist/Server/Services/IncidentGroupingRuleService.js.map +1 -0
  155. package/build/dist/Server/Services/IncidentService.js +10 -0
  156. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  157. package/build/dist/Server/Services/Index.js +16 -0
  158. package/build/dist/Server/Services/Index.js.map +1 -1
  159. package/build/dist/Server/Services/MailService.js.map +1 -1
  160. package/build/dist/Server/Services/MonitorService.js +9 -1
  161. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  162. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js +10 -0
  163. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js.map +1 -1
  164. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js +48 -2
  165. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js.map +1 -1
  166. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js +20 -1
  167. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js.map +1 -1
  168. package/build/dist/Server/Services/OnCallDutyPolicyService.js +8 -0
  169. package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
  170. package/build/dist/Server/Services/SmsService.js.map +1 -1
  171. package/build/dist/Server/Services/UserNotificationRuleService.js +39 -2
  172. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  173. package/build/dist/Server/Services/UserNotificationSettingService.js +9 -0
  174. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  175. package/build/dist/Server/Services/UserOnCallLogService.js +35 -3
  176. package/build/dist/Server/Services/UserOnCallLogService.js.map +1 -1
  177. package/build/dist/Server/Services/WhatsAppService.js.map +1 -1
  178. package/build/dist/Server/Services/WorkspaceNotificationLogService.js +12 -0
  179. package/build/dist/Server/Services/WorkspaceNotificationLogService.js.map +1 -1
  180. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +95 -1
  181. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
  182. package/build/dist/Server/Utils/AI/IncidentEpisodeAIContextBuilder.js +402 -0
  183. package/build/dist/Server/Utils/AI/IncidentEpisodeAIContextBuilder.js.map +1 -0
  184. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js +1 -1
  185. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +1 -1
  186. package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js +1 -1
  187. package/build/dist/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.js +1 -1
  188. package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js +2 -2
  189. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +135 -0
  190. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -0
  191. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +10 -0
  192. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  193. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js +1 -1
  194. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +26 -0
  195. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  196. package/build/dist/Server/Utils/PushNotificationUtil.js +20 -0
  197. package/build/dist/Server/Utils/PushNotificationUtil.js.map +1 -1
  198. package/build/dist/Server/Utils/WhatsAppTemplateUtil.js +8 -0
  199. package/build/dist/Server/Utils/WhatsAppTemplateUtil.js.map +1 -1
  200. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.js +17 -0
  201. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.js.map +1 -1
  202. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.js +547 -0
  203. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.js.map +1 -0
  204. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +15 -0
  205. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  206. package/build/dist/Server/Utils/Workspace/Slack/Actions/ActionTypes.js +10 -0
  207. package/build/dist/Server/Utils/Workspace/Slack/Actions/ActionTypes.js.map +1 -1
  208. package/build/dist/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.js +651 -0
  209. package/build/dist/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.js.map +1 -0
  210. package/build/dist/Server/Utils/Workspace/Slack/Messages/IncidentEpisode.js +100 -0
  211. package/build/dist/Server/Utils/Workspace/Slack/Messages/IncidentEpisode.js.map +1 -0
  212. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/IncidentEpisode.js +70 -0
  213. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/IncidentEpisode.js.map +1 -0
  214. package/build/dist/Types/Email/EmailTemplateType.js +5 -0
  215. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  216. package/build/dist/Types/Monitor/CriteriaFilter.js +16 -3
  217. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  218. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +62 -0
  219. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  220. package/build/dist/Types/Monitor/MonitorStep.js +26 -0
  221. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  222. package/build/dist/Types/Monitor/MonitorStepSnmpMonitor.js +77 -0
  223. package/build/dist/Types/Monitor/MonitorStepSnmpMonitor.js.map +1 -0
  224. package/build/dist/Types/Monitor/MonitorType.js +13 -2
  225. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  226. package/build/dist/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.js +9 -0
  227. package/build/dist/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.js.map +1 -0
  228. package/build/dist/Types/Monitor/SnmpMonitor/SnmpDataType.js +22 -0
  229. package/build/dist/Types/Monitor/SnmpMonitor/SnmpDataType.js.map +1 -0
  230. package/build/dist/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.js +2 -0
  231. package/build/dist/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.js.map +1 -0
  232. package/build/dist/Types/Monitor/SnmpMonitor/SnmpOid.js +55 -0
  233. package/build/dist/Types/Monitor/SnmpMonitor/SnmpOid.js.map +1 -0
  234. package/build/dist/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.js +8 -0
  235. package/build/dist/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.js.map +1 -0
  236. package/build/dist/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.js +8 -0
  237. package/build/dist/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.js.map +1 -0
  238. package/build/dist/Types/Monitor/SnmpMonitor/SnmpV3Auth.js +2 -0
  239. package/build/dist/Types/Monitor/SnmpMonitor/SnmpV3Auth.js.map +1 -0
  240. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVersion.js +8 -0
  241. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVersion.js.map +1 -0
  242. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +5 -0
  243. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
  244. package/build/dist/Types/Permission.js +264 -0
  245. package/build/dist/Types/Permission.js.map +1 -1
  246. package/build/dist/Types/UserNotification/UserNotificationEventType.js +1 -0
  247. package/build/dist/Types/UserNotification/UserNotificationEventType.js.map +1 -1
  248. package/build/dist/Types/WhatsApp/WhatsAppTemplates.js +15 -0
  249. package/build/dist/Types/WhatsApp/WhatsAppTemplates.js.map +1 -1
  250. package/build/dist/Types/Workspace/NotificationRules/EventType.js +1 -0
  251. package/build/dist/Types/Workspace/NotificationRules/EventType.js.map +1 -1
  252. package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js +33 -1
  253. package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js.map +1 -1
  254. package/build/dist/Utils/Monitor/MonitorMetricType.js +2 -1
  255. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  256. package/package.json +1 -1
@@ -27,7 +27,7 @@ export default class APIRequestCriteria {
27
27
  undefined;
28
28
 
29
29
  if (
30
- input.criteriaFilter.eveluateOverTime &&
30
+ input.criteriaFilter.evaluateOverTime &&
31
31
  input.criteriaFilter.evaluateOverTimeOptions
32
32
  ) {
33
33
  try {
@@ -553,7 +553,7 @@ export default class CompareCriteria {
553
553
  }
554
554
 
555
555
  if (
556
- data.criteriaFilter.eveluateOverTime &&
556
+ data.criteriaFilter.evaluateOverTime &&
557
557
  data.criteriaFilter.evaluateOverTimeOptions?.timeValueInMinutes
558
558
  ) {
559
559
  message += ` over the last ${data.criteriaFilter.evaluateOverTimeOptions.timeValueInMinutes} minutes`;
@@ -41,7 +41,7 @@ export default class IncomingRequestCriteria {
41
41
  undefined;
42
42
 
43
43
  if (
44
- input.criteriaFilter.eveluateOverTime &&
44
+ input.criteriaFilter.evaluateOverTime &&
45
45
  input.criteriaFilter.evaluateOverTimeOptions
46
46
  ) {
47
47
  try {
@@ -31,7 +31,7 @@ export default class ServerMonitorCriteria {
31
31
  undefined;
32
32
 
33
33
  if (
34
- input.criteriaFilter.eveluateOverTime &&
34
+ input.criteriaFilter.evaluateOverTime &&
35
35
  input.criteriaFilter.evaluateOverTimeOptions
36
36
  ) {
37
37
  try {
@@ -29,7 +29,7 @@ export default class ServerMonitorCriteria {
29
29
  undefined;
30
30
 
31
31
  if (
32
- input.criteriaFilter.eveluateOverTime &&
32
+ input.criteriaFilter.evaluateOverTime &&
33
33
  input.criteriaFilter.evaluateOverTimeOptions
34
34
  ) {
35
35
  try {
@@ -69,7 +69,7 @@ export default class ServerMonitorCriteria {
69
69
 
70
70
  // check evaluate over time.
71
71
  if (
72
- input.criteriaFilter.eveluateOverTime &&
72
+ input.criteriaFilter.evaluateOverTime &&
73
73
  input.criteriaFilter.evaluateOverTimeOptions
74
74
  ) {
75
75
  offlineIfNotCheckedInMinutes =
@@ -0,0 +1,182 @@
1
+ import DataToProcess from "../DataToProcess";
2
+ import CompareCriteria from "./CompareCriteria";
3
+ import {
4
+ CheckOn,
5
+ CriteriaFilter,
6
+ FilterType,
7
+ } from "../../../../Types/Monitor/CriteriaFilter";
8
+ import SnmpMonitorResponse, {
9
+ SnmpOidResponse,
10
+ } from "../../../../Types/Monitor/SnmpMonitor/SnmpMonitorResponse";
11
+ import ProbeMonitorResponse from "../../../../Types/Probe/ProbeMonitorResponse";
12
+ import EvaluateOverTime from "./EvaluateOverTime";
13
+ import CaptureSpan from "../../Telemetry/CaptureSpan";
14
+ import logger from "../../Logger";
15
+
16
+ export default class SnmpMonitorCriteria {
17
+ @CaptureSpan()
18
+ public static async isMonitorInstanceCriteriaFilterMet(input: {
19
+ dataToProcess: DataToProcess;
20
+ criteriaFilter: CriteriaFilter;
21
+ }): Promise<string | null> {
22
+ let threshold: number | string | undefined | null =
23
+ input.criteriaFilter.value;
24
+
25
+ const dataToProcess: ProbeMonitorResponse =
26
+ input.dataToProcess as ProbeMonitorResponse;
27
+
28
+ const snmpResponse: SnmpMonitorResponse | undefined =
29
+ dataToProcess.snmpResponse;
30
+
31
+ let overTimeValue: Array<number | boolean> | number | boolean | undefined =
32
+ undefined;
33
+
34
+ if (
35
+ input.criteriaFilter.evaluateOverTime &&
36
+ input.criteriaFilter.evaluateOverTimeOptions
37
+ ) {
38
+ try {
39
+ overTimeValue = await EvaluateOverTime.getValueOverTime({
40
+ projectId: (input.dataToProcess as ProbeMonitorResponse).projectId,
41
+ monitorId: input.dataToProcess.monitorId!,
42
+ evaluateOverTimeOptions: input.criteriaFilter.evaluateOverTimeOptions,
43
+ metricType: input.criteriaFilter.checkOn,
44
+ });
45
+
46
+ if (Array.isArray(overTimeValue) && overTimeValue.length === 0) {
47
+ overTimeValue = undefined;
48
+ }
49
+ } catch (err) {
50
+ logger.error(
51
+ `Error in getting over time value for ${input.criteriaFilter.checkOn}`,
52
+ );
53
+ logger.error(err);
54
+ overTimeValue = undefined;
55
+ }
56
+ }
57
+
58
+ // Check if SNMP device is online
59
+ if (input.criteriaFilter.checkOn === CheckOn.SnmpIsOnline) {
60
+ const currentIsOnline: boolean | Array<boolean> =
61
+ (overTimeValue as Array<boolean>) ||
62
+ (input.dataToProcess as ProbeMonitorResponse).isOnline;
63
+
64
+ return CompareCriteria.compareCriteriaBoolean({
65
+ value: currentIsOnline,
66
+ criteriaFilter: input.criteriaFilter,
67
+ });
68
+ }
69
+
70
+ // Check SNMP response time
71
+ if (input.criteriaFilter.checkOn === CheckOn.SnmpResponseTime) {
72
+ threshold = CompareCriteria.convertToNumber(threshold);
73
+
74
+ if (threshold === null || threshold === undefined) {
75
+ return null;
76
+ }
77
+
78
+ const currentResponseTime: number | Array<number> =
79
+ (overTimeValue as Array<number>) ||
80
+ snmpResponse?.responseTimeInMs ||
81
+ (input.dataToProcess as ProbeMonitorResponse).responseTimeInMs;
82
+
83
+ if (currentResponseTime === null || currentResponseTime === undefined) {
84
+ return null;
85
+ }
86
+
87
+ return CompareCriteria.compareCriteriaNumbers({
88
+ value: currentResponseTime,
89
+ threshold: threshold as number,
90
+ criteriaFilter: input.criteriaFilter,
91
+ });
92
+ }
93
+
94
+ // Check if a specific OID exists (returns a value)
95
+ if (input.criteriaFilter.checkOn === CheckOn.SnmpOidExists) {
96
+ const oid: string | undefined =
97
+ input.criteriaFilter.snmpMonitorOptions?.oid;
98
+
99
+ if (!oid) {
100
+ return null;
101
+ }
102
+
103
+ const oidResponse: SnmpOidResponse | undefined =
104
+ snmpResponse?.oidResponses?.find((response: SnmpOidResponse) => {
105
+ return response.oid === oid;
106
+ });
107
+
108
+ const exists: boolean = Boolean(
109
+ oidResponse && oidResponse.value !== null,
110
+ );
111
+
112
+ const isTrue: boolean =
113
+ input.criteriaFilter.filterType === FilterType.True;
114
+ const isFalse: boolean =
115
+ input.criteriaFilter.filterType === FilterType.False;
116
+
117
+ if (exists && isTrue) {
118
+ return `SNMP OID ${oid} exists and returned a value.`;
119
+ }
120
+
121
+ if (!exists && isFalse) {
122
+ return `SNMP OID ${oid} does not exist or returned no value.`;
123
+ }
124
+
125
+ return null;
126
+ }
127
+
128
+ // Check the value of a specific OID
129
+ if (input.criteriaFilter.checkOn === CheckOn.SnmpOidValue) {
130
+ const oid: string | undefined =
131
+ input.criteriaFilter.snmpMonitorOptions?.oid;
132
+
133
+ if (!oid) {
134
+ return null;
135
+ }
136
+
137
+ const oidResponse: SnmpOidResponse | undefined =
138
+ snmpResponse?.oidResponses?.find((response: SnmpOidResponse) => {
139
+ return response.oid === oid;
140
+ });
141
+
142
+ if (!oidResponse || oidResponse.value === null) {
143
+ return null;
144
+ }
145
+
146
+ const oidValue: string | number = oidResponse.value;
147
+
148
+ // Numeric comparison
149
+ if (typeof oidValue === "number" || !isNaN(Number(oidValue))) {
150
+ const numericValue: number =
151
+ typeof oidValue === "number" ? oidValue : Number(oidValue);
152
+ const numericThreshold: number | null =
153
+ CompareCriteria.convertToNumber(threshold);
154
+
155
+ if (numericThreshold !== null) {
156
+ const result: string | null = CompareCriteria.compareCriteriaNumbers({
157
+ value: numericValue,
158
+ threshold: numericThreshold,
159
+ criteriaFilter: input.criteriaFilter,
160
+ });
161
+
162
+ if (result) {
163
+ return `SNMP OID ${oid} (${oidResponse.name || oid}): ${result}`;
164
+ }
165
+ }
166
+ }
167
+
168
+ // String comparison
169
+ const result: string | null = CompareCriteria.compareCriteriaStrings({
170
+ value: String(oidValue),
171
+ threshold: String(threshold),
172
+ criteriaFilter: input.criteriaFilter,
173
+ });
174
+
175
+ if (result) {
176
+ return `SNMP OID ${oid} (${oidResponse.name || oid}): ${result}`;
177
+ }
178
+ }
179
+
180
+ return null;
181
+ }
182
+ }
@@ -11,6 +11,7 @@ import LogMonitorCriteria from "./Criteria/LogMonitorCriteria";
11
11
  import MetricMonitorCriteria from "./Criteria/MetricMonitorCriteria";
12
12
  import TraceMonitorCriteria from "./Criteria/TraceMonitorCriteria";
13
13
  import ExceptionMonitorCriteria from "./Criteria/ExceptionMonitorCriteria";
14
+ import SnmpMonitorCriteria from "./Criteria/SnmpMonitorCriteria";
14
15
  import MonitorCriteriaMessageBuilder from "./MonitorCriteriaMessageBuilder";
15
16
  import MonitorCriteriaDataExtractor from "./MonitorCriteriaDataExtractor";
16
17
  import MonitorCriteriaMessageFormatter from "./MonitorCriteriaMessageFormatter";
@@ -480,6 +481,18 @@ ${contextBlock}
480
481
  }
481
482
  }
482
483
 
484
+ if (input.monitor.monitorType === MonitorType.SNMP) {
485
+ const snmpMonitorResult: string | null =
486
+ await SnmpMonitorCriteria.isMonitorInstanceCriteriaFilterMet({
487
+ dataToProcess: input.dataToProcess,
488
+ criteriaFilter: input.criteriaFilter,
489
+ });
490
+
491
+ if (snmpMonitorResult) {
492
+ return snmpMonitorResult;
493
+ }
494
+ }
495
+
483
496
  return null;
484
497
  }
485
498
 
@@ -116,7 +116,7 @@ export default class MonitorCriteriaExpectationBuilder {
116
116
  const parts: Array<string> = [];
117
117
 
118
118
  if (
119
- criteriaFilter.eveluateOverTime &&
119
+ criteriaFilter.evaluateOverTime &&
120
120
  criteriaFilter.evaluateOverTimeOptions?.timeValueInMinutes
121
121
  ) {
122
122
  parts.push(
@@ -11,6 +11,9 @@ import BasicInfrastructureMetrics, {
11
11
  import SslMonitorResponse from "../../../Types/Monitor/SSLMonitor/SslMonitorResponse";
12
12
  import CustomCodeMonitorResponse from "../../../Types/Monitor/CustomCodeMonitor/CustomCodeMonitorResponse";
13
13
  import SyntheticMonitorResponse from "../../../Types/Monitor/SyntheticMonitors/SyntheticMonitorResponse";
14
+ import SnmpMonitorResponse, {
15
+ SnmpOidResponse,
16
+ } from "../../../Types/Monitor/SnmpMonitor/SnmpMonitorResponse";
14
17
  import Typeof from "../../../Types/Typeof";
15
18
  import VMUtil from "../VM/VMAPI";
16
19
  import DataToProcess from "./DataToProcess";
@@ -203,6 +206,40 @@ export default class MonitorTemplateUtil {
203
206
  }
204
207
  }
205
208
  }
209
+
210
+ if (data.monitorType === MonitorType.SNMP) {
211
+ const snmpResponse: SnmpMonitorResponse | undefined = (
212
+ data.dataToProcess as ProbeMonitorResponse
213
+ ).snmpResponse;
214
+
215
+ storageMap = {
216
+ isOnline: (data.dataToProcess as ProbeMonitorResponse).isOnline,
217
+ responseTimeInMs: snmpResponse?.responseTimeInMs,
218
+ failureCause: snmpResponse?.failureCause,
219
+ isTimeout: snmpResponse?.isTimeout,
220
+ } as JSONObject;
221
+
222
+ // Add OID responses as key-value pairs
223
+ if (snmpResponse?.oidResponses) {
224
+ storageMap["oidResponses"] = snmpResponse.oidResponses.map(
225
+ (oidResponse: SnmpOidResponse) => {
226
+ return {
227
+ oid: oidResponse.oid,
228
+ name: oidResponse.name,
229
+ value: oidResponse.value,
230
+ type: oidResponse.type,
231
+ };
232
+ },
233
+ );
234
+
235
+ // Also add OIDs by name for easier templating
236
+ for (const oidResponse of snmpResponse.oidResponses) {
237
+ if (oidResponse.name) {
238
+ storageMap[oidResponse.name] = oidResponse.value;
239
+ }
240
+ }
241
+ }
242
+ }
206
243
  } catch (err) {
207
244
  logger.error(err);
208
245
  }
@@ -174,6 +174,37 @@ export default class PushNotificationUtil {
174
174
  });
175
175
  }
176
176
 
177
+ public static createIncidentEpisodeCreatedNotification(params: {
178
+ incidentEpisodeTitle: string;
179
+ projectName: string;
180
+ incidentEpisodeViewLink: string;
181
+ episodeNumber?: number;
182
+ }): PushNotificationMessage {
183
+ const {
184
+ incidentEpisodeTitle,
185
+ projectName,
186
+ incidentEpisodeViewLink,
187
+ episodeNumber,
188
+ } = params;
189
+ const episodeIdentifier: string = episodeNumber
190
+ ? `#${episodeNumber} (${incidentEpisodeTitle})`
191
+ : incidentEpisodeTitle;
192
+ return PushNotificationUtil.applyDefaults({
193
+ title: `New Incident Episode${episodeNumber ? ` #${episodeNumber}` : ""}: ${incidentEpisodeTitle}`,
194
+ body: `A new incident episode has been created: ${episodeIdentifier} in ${projectName}. Click to view details.`,
195
+ clickAction: incidentEpisodeViewLink,
196
+ url: incidentEpisodeViewLink,
197
+ tag: "incident-episode-created",
198
+ requireInteraction: true,
199
+ data: {
200
+ type: "incident-episode-created",
201
+ incidentEpisodeTitle: incidentEpisodeTitle,
202
+ projectName: projectName,
203
+ url: incidentEpisodeViewLink,
204
+ },
205
+ });
206
+ }
207
+
177
208
  public static createMonitorStatusChangedNotification(params: {
178
209
  monitorName: string;
179
210
  projectName: string;
@@ -23,6 +23,12 @@ const templateDashboardLinkVariableMap: Partial<
23
23
  [WhatsAppTemplateIds.AlertEpisodeStateChangedOwnerNotification]:
24
24
  "episode_link",
25
25
  [WhatsAppTemplateIds.AlertEpisodeOwnerAddedNotification]: "episode_link",
26
+ [WhatsAppTemplateIds.IncidentEpisodeCreatedOwnerNotification]: "episode_link",
27
+ [WhatsAppTemplateIds.IncidentEpisodeNotePostedOwnerNotification]:
28
+ "episode_link",
29
+ [WhatsAppTemplateIds.IncidentEpisodeStateChangedOwnerNotification]:
30
+ "episode_link",
31
+ [WhatsAppTemplateIds.IncidentEpisodeOwnerAddedNotification]: "episode_link",
26
32
  [WhatsAppTemplateIds.IncidentCreated]: "incident_link",
27
33
  [WhatsAppTemplateIds.IncidentCreatedOwnerNotification]: "incident_link",
28
34
  [WhatsAppTemplateIds.IncidentNotePostedOwnerNotification]: "incident_link",
@@ -85,6 +91,14 @@ const templateIdByEventType: Record<
85
91
  WhatsAppTemplateIds.AlertEpisodeStateChangedOwnerNotification,
86
92
  [NotificationSettingEventType.SEND_ALERT_EPISODE_OWNER_ADDED_NOTIFICATION]:
87
93
  WhatsAppTemplateIds.AlertEpisodeOwnerAddedNotification,
94
+ [NotificationSettingEventType.SEND_INCIDENT_EPISODE_CREATED_OWNER_NOTIFICATION]:
95
+ WhatsAppTemplateIds.IncidentEpisodeCreatedOwnerNotification,
96
+ [NotificationSettingEventType.SEND_INCIDENT_EPISODE_NOTE_POSTED_OWNER_NOTIFICATION]:
97
+ WhatsAppTemplateIds.IncidentEpisodeNotePostedOwnerNotification,
98
+ [NotificationSettingEventType.SEND_INCIDENT_EPISODE_STATE_CHANGED_OWNER_NOTIFICATION]:
99
+ WhatsAppTemplateIds.IncidentEpisodeStateChangedOwnerNotification,
100
+ [NotificationSettingEventType.SEND_INCIDENT_EPISODE_OWNER_ADDED_NOTIFICATION]:
101
+ WhatsAppTemplateIds.IncidentEpisodeOwnerAddedNotification,
88
102
  [NotificationSettingEventType.SEND_MONITOR_OWNER_ADDED_NOTIFICATION]:
89
103
  WhatsAppTemplateIds.MonitorOwnerAddedNotification,
90
104
  [NotificationSettingEventType.SEND_MONITOR_CREATED_OWNER_NOTIFICATION]:
@@ -54,6 +54,23 @@ export enum MicrosoftTeamsAlertEpisodeActionType {
54
54
  SubmitChangeAlertEpisodeState = "SubmitChangeAlertEpisodeState",
55
55
  }
56
56
 
57
+ // Incident Episode Actions
58
+ export enum MicrosoftTeamsIncidentEpisodeActionType {
59
+ AckIncidentEpisode = "AckIncidentEpisode",
60
+ ResolveIncidentEpisode = "ResolveIncidentEpisode",
61
+ ViewIncidentEpisode = "ViewIncidentEpisode",
62
+ IncidentEpisodeCreated = "IncidentEpisodeCreated",
63
+ IncidentEpisodeStateChanged = "IncidentEpisodeStateChanged",
64
+ AddIncidentEpisodeNote = "AddIncidentEpisodeNote",
65
+ ExecuteIncidentEpisodeOnCallPolicy = "ExecuteIncidentEpisodeOnCallPolicy",
66
+ ViewAddIncidentEpisodeNote = "ViewAddIncidentEpisodeNote",
67
+ SubmitIncidentEpisodeNote = "SubmitIncidentEpisodeNote",
68
+ ViewExecuteIncidentEpisodeOnCallPolicy = "ViewExecuteIncidentEpisodeOnCallPolicy",
69
+ SubmitExecuteIncidentEpisodeOnCallPolicy = "SubmitExecuteIncidentEpisodeOnCallPolicy",
70
+ ViewChangeIncidentEpisodeState = "ViewChangeIncidentEpisodeState",
71
+ SubmitChangeIncidentEpisodeState = "SubmitChangeIncidentEpisodeState",
72
+ }
73
+
57
74
  // Monitor Actions
58
75
  export enum MicrosoftTeamsMonitorActionType {
59
76
  ViewMonitor = "ViewMonitor",
@@ -107,6 +124,7 @@ export type MicrosoftTeamsActionType =
107
124
  | MicrosoftTeamsIncidentActionType
108
125
  | MicrosoftTeamsAlertActionType
109
126
  | MicrosoftTeamsAlertEpisodeActionType
127
+ | MicrosoftTeamsIncidentEpisodeActionType
110
128
  | MicrosoftTeamsMonitorActionType
111
129
  | MicrosoftTeamsScheduledMaintenanceActionType
112
130
  | MicrosoftTeamsOnCallDutyActionType