@oneuptime/common 9.4.11 → 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 (286) 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/Project.ts +29 -0
  14. package/Models/DatabaseModels/UserOnCallLog.ts +48 -0
  15. package/Models/DatabaseModels/UserOnCallLogTimeline.ts +49 -0
  16. package/Models/DatabaseModels/WorkspaceNotificationLog.ts +57 -0
  17. package/Server/API/BillingAPI.ts +78 -1
  18. package/Server/API/IncidentEpisodeAPI.ts +150 -0
  19. package/Server/API/SlackAPI.ts +23 -0
  20. package/Server/API/UserOnCallLogTimelineAPI.ts +24 -4
  21. package/Server/BillingConfig.ts +3 -0
  22. package/Server/EnvironmentConfig.ts +1 -0
  23. package/Server/Infrastructure/Postgres/SchemaMigrations/1769599843642-MigrationName.ts +29 -0
  24. package/Server/Infrastructure/Postgres/SchemaMigrations/1769626069479-MigrationName.ts +729 -0
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/1769629928240-MigrationName.ts +261 -0
  26. package/Server/Infrastructure/Postgres/SchemaMigrations/1769676117342-RenameEvaluateOverTimeInCriteriaFilter.ts +28 -0
  27. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
  28. package/Server/Services/AIBillingService.ts +10 -0
  29. package/Server/Services/BillingService.ts +349 -1
  30. package/Server/Services/CallService.ts +1 -0
  31. package/Server/Services/IncidentEpisodeFeedService.ts +94 -0
  32. package/Server/Services/IncidentEpisodeInternalNoteService.ts +71 -0
  33. package/Server/Services/IncidentEpisodeMemberService.ts +321 -0
  34. package/Server/Services/IncidentEpisodeOwnerTeamService.ts +10 -0
  35. package/Server/Services/IncidentEpisodeOwnerUserService.ts +10 -0
  36. package/Server/Services/IncidentEpisodeService.ts +1045 -0
  37. package/Server/Services/IncidentEpisodeStateTimelineService.ts +566 -0
  38. package/Server/Services/IncidentGroupingEngineService.ts +1047 -0
  39. package/Server/Services/IncidentGroupingRuleService.ts +14 -0
  40. package/Server/Services/IncidentService.ts +11 -0
  41. package/Server/Services/Index.ts +18 -0
  42. package/Server/Services/MailService.ts +1 -0
  43. package/Server/Services/MonitorService.ts +9 -0
  44. package/Server/Services/NotificationService.ts +10 -0
  45. package/Server/Services/OnCallDutyPolicyEscalationRuleService.ts +18 -0
  46. package/Server/Services/OnCallDutyPolicyExecutionLogService.ts +64 -2
  47. package/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.ts +26 -1
  48. package/Server/Services/OnCallDutyPolicyService.ts +15 -0
  49. package/Server/Services/ProjectService.ts +33 -2
  50. package/Server/Services/SmsService.ts +1 -0
  51. package/Server/Services/UserNotificationRuleService.ts +48 -2
  52. package/Server/Services/UserNotificationSettingService.ts +23 -0
  53. package/Server/Services/UserOnCallLogService.ts +41 -4
  54. package/Server/Services/UserService.ts +45 -1
  55. package/Server/Services/WhatsAppService.ts +1 -0
  56. package/Server/Services/WorkspaceNotificationLogService.ts +16 -0
  57. package/Server/Services/WorkspaceNotificationRuleService.ts +116 -0
  58. package/Server/Types/Database/Permissions/TenantPermission.ts +20 -0
  59. package/Server/Utils/AI/IncidentEpisodeAIContextBuilder.ts +490 -0
  60. package/Server/Utils/Monitor/Criteria/APIRequestCriteria.ts +1 -1
  61. package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +1 -1
  62. package/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.ts +1 -1
  63. package/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.ts +1 -1
  64. package/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.ts +2 -2
  65. package/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.ts +182 -0
  66. package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +13 -0
  67. package/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.ts +1 -1
  68. package/Server/Utils/Monitor/MonitorTemplateUtil.ts +37 -0
  69. package/Server/Utils/PushNotificationUtil.ts +31 -0
  70. package/Server/Utils/WhatsAppTemplateUtil.ts +14 -0
  71. package/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.ts +18 -0
  72. package/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.ts +702 -0
  73. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +20 -0
  74. package/Server/Utils/Workspace/Slack/Actions/ActionTypes.ts +11 -0
  75. package/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.ts +918 -0
  76. package/Server/Utils/Workspace/Slack/Messages/IncidentEpisode.ts +120 -0
  77. package/Server/Utils/Workspace/WorkspaceMessages/IncidentEpisode.ts +74 -0
  78. package/Types/Email/EmailTemplateType.ts +7 -0
  79. package/Types/Monitor/CriteriaFilter.ts +24 -4
  80. package/Types/Monitor/MonitorCriteriaInstance.ts +67 -0
  81. package/Types/Monitor/MonitorStep.ts +37 -0
  82. package/Types/Monitor/MonitorStepSnmpMonitor.ts +102 -0
  83. package/Types/Monitor/MonitorType.ts +15 -2
  84. package/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.ts +8 -0
  85. package/Types/Monitor/SnmpMonitor/SnmpDataType.ts +21 -0
  86. package/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.ts +16 -0
  87. package/Types/Monitor/SnmpMonitor/SnmpOid.ts +60 -0
  88. package/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.ts +7 -0
  89. package/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.ts +7 -0
  90. package/Types/Monitor/SnmpMonitor/SnmpV3Auth.ts +12 -0
  91. package/Types/Monitor/SnmpMonitor/SnmpVersion.ts +7 -0
  92. package/Types/NotificationSetting/NotificationSettingEventType.ts +7 -0
  93. package/Types/Permission.ts +311 -0
  94. package/Types/Probe/ProbeMonitorResponse.ts +2 -0
  95. package/Types/UserNotification/UserNotificationEventType.ts +1 -0
  96. package/Types/WhatsApp/WhatsAppTemplates.ts +24 -0
  97. package/Types/Workspace/NotificationRules/EventType.ts +1 -0
  98. package/Types/Workspace/NotificationRules/NotificationRuleCondition.ts +38 -1
  99. package/Utils/Monitor/MonitorMetricType.ts +2 -1
  100. package/build/dist/Models/DatabaseModels/Incident.js +78 -0
  101. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  102. package/build/dist/Models/DatabaseModels/IncidentEpisode.js +1250 -0
  103. package/build/dist/Models/DatabaseModels/IncidentEpisode.js.map +1 -0
  104. package/build/dist/Models/DatabaseModels/IncidentEpisodeFeed.js +555 -0
  105. package/build/dist/Models/DatabaseModels/IncidentEpisodeFeed.js.map +1 -0
  106. package/build/dist/Models/DatabaseModels/IncidentEpisodeInternalNote.js +467 -0
  107. package/build/dist/Models/DatabaseModels/IncidentEpisodeInternalNote.js.map +1 -0
  108. package/build/dist/Models/DatabaseModels/IncidentEpisodeMember.js +607 -0
  109. package/build/dist/Models/DatabaseModels/IncidentEpisodeMember.js.map +1 -0
  110. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerTeam.js +437 -0
  111. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerTeam.js.map +1 -0
  112. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerUser.js +436 -0
  113. package/build/dist/Models/DatabaseModels/IncidentEpisodeOwnerUser.js.map +1 -0
  114. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js +546 -0
  115. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js.map +1 -0
  116. package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js +1437 -0
  117. package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js.map +1 -0
  118. package/build/dist/Models/DatabaseModels/Index.js +16 -0
  119. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  120. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js +69 -0
  121. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js.map +1 -1
  122. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.js +58 -0
  123. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLogTimeline.js.map +1 -1
  124. package/build/dist/Models/DatabaseModels/Project.js +30 -0
  125. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  126. package/build/dist/Models/DatabaseModels/UserOnCallLog.js +47 -0
  127. package/build/dist/Models/DatabaseModels/UserOnCallLog.js.map +1 -1
  128. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js +48 -0
  129. package/build/dist/Models/DatabaseModels/UserOnCallLogTimeline.js.map +1 -1
  130. package/build/dist/Models/DatabaseModels/WorkspaceNotificationLog.js +58 -0
  131. package/build/dist/Models/DatabaseModels/WorkspaceNotificationLog.js.map +1 -1
  132. package/build/dist/Server/API/BillingAPI.js +44 -1
  133. package/build/dist/Server/API/BillingAPI.js.map +1 -1
  134. package/build/dist/Server/API/IncidentEpisodeAPI.js +97 -0
  135. package/build/dist/Server/API/IncidentEpisodeAPI.js.map +1 -0
  136. package/build/dist/Server/API/SlackAPI.js +18 -0
  137. package/build/dist/Server/API/SlackAPI.js.map +1 -1
  138. package/build/dist/Server/API/UserOnCallLogTimelineAPI.js +30 -10
  139. package/build/dist/Server/API/UserOnCallLogTimelineAPI.js.map +1 -1
  140. package/build/dist/Server/BillingConfig.js +2 -0
  141. package/build/dist/Server/BillingConfig.js.map +1 -1
  142. package/build/dist/Server/EnvironmentConfig.js +1 -0
  143. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  144. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769599843642-MigrationName.js +16 -0
  145. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769599843642-MigrationName.js.map +1 -0
  146. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769626069479-MigrationName.js +256 -0
  147. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769626069479-MigrationName.js.map +1 -0
  148. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769629928240-MigrationName.js +96 -0
  149. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769629928240-MigrationName.js.map +1 -0
  150. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769676117342-RenameEvaluateOverTimeInCriteriaFilter.js +25 -0
  151. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1769676117342-RenameEvaluateOverTimeInCriteriaFilter.js.map +1 -0
  152. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
  153. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  154. package/build/dist/Server/Services/AIBillingService.js +10 -1
  155. package/build/dist/Server/Services/AIBillingService.js.map +1 -1
  156. package/build/dist/Server/Services/BillingService.js +224 -5
  157. package/build/dist/Server/Services/BillingService.js.map +1 -1
  158. package/build/dist/Server/Services/CallService.js.map +1 -1
  159. package/build/dist/Server/Services/IncidentEpisodeFeedService.js +83 -0
  160. package/build/dist/Server/Services/IncidentEpisodeFeedService.js.map +1 -0
  161. package/build/dist/Server/Services/IncidentEpisodeInternalNoteService.js +70 -0
  162. package/build/dist/Server/Services/IncidentEpisodeInternalNoteService.js.map +1 -0
  163. package/build/dist/Server/Services/IncidentEpisodeMemberService.js +298 -0
  164. package/build/dist/Server/Services/IncidentEpisodeMemberService.js.map +1 -0
  165. package/build/dist/Server/Services/IncidentEpisodeOwnerTeamService.js +9 -0
  166. package/build/dist/Server/Services/IncidentEpisodeOwnerTeamService.js.map +1 -0
  167. package/build/dist/Server/Services/IncidentEpisodeOwnerUserService.js +9 -0
  168. package/build/dist/Server/Services/IncidentEpisodeOwnerUserService.js.map +1 -0
  169. package/build/dist/Server/Services/IncidentEpisodeService.js +933 -0
  170. package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -0
  171. package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js +498 -0
  172. package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js.map +1 -0
  173. package/build/dist/Server/Services/IncidentGroupingEngineService.js +799 -0
  174. package/build/dist/Server/Services/IncidentGroupingEngineService.js.map +1 -0
  175. package/build/dist/Server/Services/IncidentGroupingRuleService.js +13 -0
  176. package/build/dist/Server/Services/IncidentGroupingRuleService.js.map +1 -0
  177. package/build/dist/Server/Services/IncidentService.js +10 -0
  178. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  179. package/build/dist/Server/Services/Index.js +16 -0
  180. package/build/dist/Server/Services/Index.js.map +1 -1
  181. package/build/dist/Server/Services/MailService.js.map +1 -1
  182. package/build/dist/Server/Services/MonitorService.js +9 -1
  183. package/build/dist/Server/Services/MonitorService.js.map +1 -1
  184. package/build/dist/Server/Services/NotificationService.js +10 -1
  185. package/build/dist/Server/Services/NotificationService.js.map +1 -1
  186. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js +10 -0
  187. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js.map +1 -1
  188. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js +48 -2
  189. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js.map +1 -1
  190. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js +20 -1
  191. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js.map +1 -1
  192. package/build/dist/Server/Services/OnCallDutyPolicyService.js +8 -0
  193. package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
  194. package/build/dist/Server/Services/ProjectService.js +16 -3
  195. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  196. package/build/dist/Server/Services/SmsService.js.map +1 -1
  197. package/build/dist/Server/Services/UserNotificationRuleService.js +39 -2
  198. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  199. package/build/dist/Server/Services/UserNotificationSettingService.js +9 -0
  200. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  201. package/build/dist/Server/Services/UserOnCallLogService.js +35 -3
  202. package/build/dist/Server/Services/UserOnCallLogService.js.map +1 -1
  203. package/build/dist/Server/Services/UserService.js +40 -0
  204. package/build/dist/Server/Services/UserService.js.map +1 -1
  205. package/build/dist/Server/Services/WhatsAppService.js.map +1 -1
  206. package/build/dist/Server/Services/WorkspaceNotificationLogService.js +12 -0
  207. package/build/dist/Server/Services/WorkspaceNotificationLogService.js.map +1 -1
  208. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +95 -1
  209. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
  210. package/build/dist/Server/Types/Database/Permissions/TenantPermission.js +17 -0
  211. package/build/dist/Server/Types/Database/Permissions/TenantPermission.js.map +1 -1
  212. package/build/dist/Server/Utils/AI/IncidentEpisodeAIContextBuilder.js +402 -0
  213. package/build/dist/Server/Utils/AI/IncidentEpisodeAIContextBuilder.js.map +1 -0
  214. package/build/dist/Server/Utils/Monitor/Criteria/APIRequestCriteria.js +1 -1
  215. package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +1 -1
  216. package/build/dist/Server/Utils/Monitor/Criteria/IncomingRequestCriteria.js +1 -1
  217. package/build/dist/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.js +1 -1
  218. package/build/dist/Server/Utils/Monitor/Criteria/ServerMonitorCriteria.js +2 -2
  219. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js +135 -0
  220. package/build/dist/Server/Utils/Monitor/Criteria/SnmpMonitorCriteria.js.map +1 -0
  221. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +10 -0
  222. package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
  223. package/build/dist/Server/Utils/Monitor/MonitorCriteriaExpectationBuilder.js +1 -1
  224. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js +26 -0
  225. package/build/dist/Server/Utils/Monitor/MonitorTemplateUtil.js.map +1 -1
  226. package/build/dist/Server/Utils/PushNotificationUtil.js +20 -0
  227. package/build/dist/Server/Utils/PushNotificationUtil.js.map +1 -1
  228. package/build/dist/Server/Utils/WhatsAppTemplateUtil.js +8 -0
  229. package/build/dist/Server/Utils/WhatsAppTemplateUtil.js.map +1 -1
  230. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.js +17 -0
  231. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/ActionTypes.js.map +1 -1
  232. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.js +547 -0
  233. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/IncidentEpisode.js.map +1 -0
  234. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +15 -0
  235. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  236. package/build/dist/Server/Utils/Workspace/Slack/Actions/ActionTypes.js +10 -0
  237. package/build/dist/Server/Utils/Workspace/Slack/Actions/ActionTypes.js.map +1 -1
  238. package/build/dist/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.js +651 -0
  239. package/build/dist/Server/Utils/Workspace/Slack/Actions/IncidentEpisode.js.map +1 -0
  240. package/build/dist/Server/Utils/Workspace/Slack/Messages/IncidentEpisode.js +100 -0
  241. package/build/dist/Server/Utils/Workspace/Slack/Messages/IncidentEpisode.js.map +1 -0
  242. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/IncidentEpisode.js +70 -0
  243. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/IncidentEpisode.js.map +1 -0
  244. package/build/dist/Types/Email/EmailTemplateType.js +6 -0
  245. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  246. package/build/dist/Types/Monitor/CriteriaFilter.js +16 -3
  247. package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
  248. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +62 -0
  249. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  250. package/build/dist/Types/Monitor/MonitorStep.js +26 -0
  251. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  252. package/build/dist/Types/Monitor/MonitorStepSnmpMonitor.js +77 -0
  253. package/build/dist/Types/Monitor/MonitorStepSnmpMonitor.js.map +1 -0
  254. package/build/dist/Types/Monitor/MonitorType.js +13 -2
  255. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  256. package/build/dist/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.js +9 -0
  257. package/build/dist/Types/Monitor/SnmpMonitor/SnmpAuthProtocol.js.map +1 -0
  258. package/build/dist/Types/Monitor/SnmpMonitor/SnmpDataType.js +22 -0
  259. package/build/dist/Types/Monitor/SnmpMonitor/SnmpDataType.js.map +1 -0
  260. package/build/dist/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.js +2 -0
  261. package/build/dist/Types/Monitor/SnmpMonitor/SnmpMonitorResponse.js.map +1 -0
  262. package/build/dist/Types/Monitor/SnmpMonitor/SnmpOid.js +55 -0
  263. package/build/dist/Types/Monitor/SnmpMonitor/SnmpOid.js.map +1 -0
  264. package/build/dist/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.js +8 -0
  265. package/build/dist/Types/Monitor/SnmpMonitor/SnmpPrivProtocol.js.map +1 -0
  266. package/build/dist/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.js +8 -0
  267. package/build/dist/Types/Monitor/SnmpMonitor/SnmpSecurityLevel.js.map +1 -0
  268. package/build/dist/Types/Monitor/SnmpMonitor/SnmpV3Auth.js +2 -0
  269. package/build/dist/Types/Monitor/SnmpMonitor/SnmpV3Auth.js.map +1 -0
  270. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVersion.js +8 -0
  271. package/build/dist/Types/Monitor/SnmpMonitor/SnmpVersion.js.map +1 -0
  272. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +5 -0
  273. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
  274. package/build/dist/Types/Permission.js +264 -0
  275. package/build/dist/Types/Permission.js.map +1 -1
  276. package/build/dist/Types/UserNotification/UserNotificationEventType.js +1 -0
  277. package/build/dist/Types/UserNotification/UserNotificationEventType.js.map +1 -1
  278. package/build/dist/Types/WhatsApp/WhatsAppTemplates.js +15 -0
  279. package/build/dist/Types/WhatsApp/WhatsAppTemplates.js.map +1 -1
  280. package/build/dist/Types/Workspace/NotificationRules/EventType.js +1 -0
  281. package/build/dist/Types/Workspace/NotificationRules/EventType.js.map +1 -1
  282. package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js +33 -1
  283. package/build/dist/Types/Workspace/NotificationRules/NotificationRuleCondition.js.map +1 -1
  284. package/build/dist/Utils/Monitor/MonitorMetricType.js +2 -1
  285. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  286. package/package.json +1 -1
@@ -0,0 +1,120 @@
1
+ import BadDataException from "../../../../../Types/Exception/BadDataException";
2
+ import ObjectID from "../../../../../Types/ObjectID";
3
+ import {
4
+ WorkspaceMessageBlock,
5
+ WorkspaceMessagePayloadButton,
6
+ WorkspacePayloadButtons,
7
+ WorkspacePayloadDivider,
8
+ } from "../../../../../Types/Workspace/WorkspaceMessagePayload";
9
+ import IncidentEpisodeService from "../../../../Services/IncidentEpisodeService";
10
+ import SlackActionType from "../../../../Utils/Workspace/Slack/Actions/ActionTypes";
11
+ import CaptureSpan from "../../../Telemetry/CaptureSpan";
12
+
13
+ export default class SlackIncidentEpisodeMessages {
14
+ @CaptureSpan()
15
+ public static async getIncidentEpisodeCreateMessageBlocks(data: {
16
+ incidentEpisodeId: ObjectID;
17
+ projectId: ObjectID;
18
+ }): Promise<Array<WorkspaceMessageBlock>> {
19
+ if (!data.incidentEpisodeId) {
20
+ throw new BadDataException("Incident Episode ID is required");
21
+ }
22
+
23
+ // Slack.
24
+
25
+ const blockSlack: Array<WorkspaceMessageBlock> = [];
26
+
27
+ // add divider.
28
+
29
+ const dividerBlock: WorkspacePayloadDivider = {
30
+ _type: "WorkspacePayloadDivider",
31
+ };
32
+
33
+ blockSlack.push(dividerBlock);
34
+
35
+ /*
36
+ * now add buttons.
37
+ * View data.
38
+ * Execute On Call
39
+ * Acknowledge incident episode
40
+ * Resolve data.
41
+ * Change Incident Episode State.
42
+ * Add Note.
43
+ */
44
+
45
+ const buttons: Array<WorkspaceMessagePayloadButton> = [];
46
+
47
+ // view data.
48
+ const viewIncidentEpisodeButton: WorkspaceMessagePayloadButton = {
49
+ _type: "WorkspaceMessagePayloadButton",
50
+ title: "View Episode",
51
+ url: await IncidentEpisodeService.getEpisodeLinkInDashboard(
52
+ data.projectId!,
53
+ data.incidentEpisodeId!,
54
+ ),
55
+ value: data.incidentEpisodeId?.toString() || "",
56
+ actionId: SlackActionType.ViewIncidentEpisode,
57
+ };
58
+
59
+ buttons.push(viewIncidentEpisodeButton);
60
+
61
+ // execute on call.
62
+ const executeOnCallButton: WorkspaceMessagePayloadButton = {
63
+ _type: "WorkspaceMessagePayloadButton",
64
+ title: "Execute On Call",
65
+ value: data.incidentEpisodeId?.toString() || "",
66
+ actionId: SlackActionType.ViewExecuteIncidentEpisodeOnCallPolicy,
67
+ };
68
+
69
+ buttons.push(executeOnCallButton);
70
+
71
+ // acknowledge data.
72
+ const acknowledgeIncidentEpisodeButton: WorkspaceMessagePayloadButton = {
73
+ _type: "WorkspaceMessagePayloadButton",
74
+ title: "Acknowledge Episode",
75
+ value: data.incidentEpisodeId?.toString() || "",
76
+ actionId: SlackActionType.AcknowledgeIncidentEpisode,
77
+ };
78
+
79
+ buttons.push(acknowledgeIncidentEpisodeButton);
80
+
81
+ // resolve data.
82
+ const resolveIncidentEpisodeButton: WorkspaceMessagePayloadButton = {
83
+ _type: "WorkspaceMessagePayloadButton",
84
+ title: "Resolve Episode",
85
+ value: data.incidentEpisodeId?.toString() || "",
86
+ actionId: SlackActionType.ResolveIncidentEpisode,
87
+ };
88
+
89
+ buttons.push(resolveIncidentEpisodeButton);
90
+
91
+ // change incident episode state.
92
+ const changeIncidentEpisodeStateButton: WorkspaceMessagePayloadButton = {
93
+ _type: "WorkspaceMessagePayloadButton",
94
+ title: "Change Episode State",
95
+ value: data.incidentEpisodeId?.toString() || "",
96
+ actionId: SlackActionType.ViewChangeIncidentEpisodeState,
97
+ };
98
+
99
+ buttons.push(changeIncidentEpisodeStateButton);
100
+
101
+ // add note.
102
+ const addNoteButton: WorkspaceMessagePayloadButton = {
103
+ _type: "WorkspaceMessagePayloadButton",
104
+ title: "Add Note",
105
+ value: data.incidentEpisodeId?.toString() || "",
106
+ actionId: SlackActionType.ViewAddIncidentEpisodeNote,
107
+ };
108
+
109
+ buttons.push(addNoteButton);
110
+
111
+ const workspacePayloadButtons: WorkspacePayloadButtons = {
112
+ buttons: buttons,
113
+ _type: "WorkspacePayloadButtons",
114
+ };
115
+
116
+ blockSlack.push(workspacePayloadButtons);
117
+
118
+ return blockSlack;
119
+ }
120
+ }
@@ -0,0 +1,74 @@
1
+ import ObjectID from "../../../../Types/ObjectID";
2
+ import NotificationRuleEventType from "../../../../Types/Workspace/NotificationRules/EventType";
3
+ import NotificationRuleWorkspaceChannel from "../../../../Types/Workspace/NotificationRules/NotificationRuleWorkspaceChannel";
4
+ import { WorkspaceMessageBlock } from "../../../../Types/Workspace/WorkspaceMessagePayload";
5
+ import WorkspaceType from "../../../../Types/Workspace/WorkspaceType";
6
+ import WorkspaceNotificationRuleService, {
7
+ MessageBlocksByWorkspaceType,
8
+ } from "../../../Services/WorkspaceNotificationRuleService";
9
+ import logger from "../../Logger";
10
+ import SlackIncidentEpisodeMessages from "../Slack/Messages/IncidentEpisode";
11
+ import CaptureSpan from "../../Telemetry/CaptureSpan";
12
+
13
+ export default class IncidentEpisodeWorkspaceMessages {
14
+ @CaptureSpan()
15
+ public static async createChannelsAndInviteUsersToChannels(data: {
16
+ projectId: ObjectID;
17
+ incidentEpisodeId: ObjectID;
18
+ episodeNumber: number;
19
+ }): Promise<{
20
+ channelsCreated: NotificationRuleWorkspaceChannel[];
21
+ } | null> {
22
+ try {
23
+ // we will notify the workspace about the incident episode creation with the bot token which is in WorkspaceProjectAuth Table.
24
+ return await WorkspaceNotificationRuleService.createChannelsAndInviteUsersToChannelsBasedOnRules(
25
+ {
26
+ projectId: data.projectId,
27
+ notificationFor: {
28
+ incidentEpisodeId: data.incidentEpisodeId,
29
+ },
30
+ notificationRuleEventType: NotificationRuleEventType.IncidentEpisode,
31
+ channelNameSiffix: data.episodeNumber.toString(),
32
+ },
33
+ );
34
+ } catch (err) {
35
+ // log the error and continue.
36
+ logger.error(
37
+ "Error in IncidentEpisode createChannelsAndInviteUsersToChannels",
38
+ );
39
+ logger.error(err);
40
+ return null;
41
+ }
42
+ }
43
+
44
+ @CaptureSpan()
45
+ public static async getIncidentEpisodeCreateMessageBlocks(data: {
46
+ incidentEpisodeId: ObjectID;
47
+ projectId: ObjectID;
48
+ }): Promise<Array<MessageBlocksByWorkspaceType>> {
49
+ const { incidentEpisodeId, projectId } = data;
50
+
51
+ const slackBlocks: WorkspaceMessageBlock[] =
52
+ await SlackIncidentEpisodeMessages.getIncidentEpisodeCreateMessageBlocks({
53
+ incidentEpisodeId: incidentEpisodeId,
54
+ projectId: projectId!,
55
+ });
56
+
57
+ const microsoftTeamsBlocks: WorkspaceMessageBlock[] =
58
+ await SlackIncidentEpisodeMessages.getIncidentEpisodeCreateMessageBlocks({
59
+ incidentEpisodeId: incidentEpisodeId,
60
+ projectId: projectId!,
61
+ });
62
+
63
+ return [
64
+ {
65
+ workspaceType: WorkspaceType.Slack,
66
+ messageBlocks: slackBlocks,
67
+ },
68
+ {
69
+ workspaceType: WorkspaceType.MicrosoftTeams,
70
+ messageBlocks: microsoftTeamsBlocks,
71
+ },
72
+ ];
73
+ }
74
+ }
@@ -47,6 +47,11 @@ enum EmailTemplateType {
47
47
  AlertEpisodeOwnerNotePosted = "AlertEpisodeOwnerNotePosted.hbs",
48
48
  AlertEpisodeOwnerResourceCreated = "AlertEpisodeOwnerResourceCreated.hbs",
49
49
 
50
+ IncidentEpisodeOwnerAdded = "IncidentEpisodeOwnerAdded.hbs",
51
+ IncidentEpisodeOwnerStateChanged = "IncidentEpisodeOwnerStateChanged.hbs",
52
+ IncidentEpisodeOwnerNotePosted = "IncidentEpisodeOwnerNotePosted.hbs",
53
+ IncidentEpisodeOwnerResourceCreated = "IncidentEpisodeOwnerResourceCreated.hbs",
54
+
50
55
  ScheduledMaintenanceOwnerNotePosted = "ScheduledMaintenanceOwnerNotePosted.hbs",
51
56
  ScheduledMaintenanceOwnerAdded = "ScheduledMaintenanceOwnerAdded.hbs",
52
57
  ScheduledMaintenanceOwnerStateChanged = "ScheduledMaintenanceOwnerStateChanged.hbs",
@@ -59,6 +64,7 @@ enum EmailTemplateType {
59
64
  AcknowledgeIncident = "AcknowledgeIncident.hbs",
60
65
  AcknowledgeAlert = "AcknowledgeAlert.hbs",
61
66
  AcknowledgeAlertEpisode = "AcknowledgeAlertEpisode.hbs",
67
+ AcknowledgeIncidentEpisode = "AcknowledgeIncidentEpisode.hbs",
62
68
 
63
69
  UserAddedToOnCallPolicy = "UserAddedToOnCallPolicy.hbs",
64
70
  UserRemovedFromOnCallPolicy = "UserRemovedFromOnCallPolicy.hbs",
@@ -67,6 +73,7 @@ enum EmailTemplateType {
67
73
  UserNoLongerActiveOnOnCallRoster = "UserNoLongerActiveOnOnCallRoster.hbs",
68
74
 
69
75
  ProjectSubscriptionOverdue = "ProjectSubscriptionOverdue.hbs",
76
+ Invoice = "Invoice.hbs",
70
77
  }
71
78
 
72
79
  export default EmailTemplateType;
@@ -54,12 +54,22 @@ export enum CheckOn {
54
54
  EmailBody = "Email Body",
55
55
  EmailTo = "Email To Address",
56
56
  EmailReceivedAt = "Email Received",
57
+
58
+ // SNMP monitors.
59
+ SnmpOidValue = "SNMP OID Value",
60
+ SnmpOidExists = "SNMP OID Exists",
61
+ SnmpResponseTime = "SNMP Response Time (in ms)",
62
+ SnmpIsOnline = "SNMP Device Is Online",
57
63
  }
58
64
 
59
65
  export interface ServerMonitorOptions {
60
66
  diskPath?: string | undefined;
61
67
  }
62
68
 
69
+ export interface SnmpMonitorOptions {
70
+ oid?: string | undefined;
71
+ }
72
+
63
73
  export enum EvaluateOverTimeType {
64
74
  Average = "Average",
65
75
  Sum = "Sum",
@@ -95,9 +105,10 @@ export interface CriteriaFilter {
95
105
  checkOn: CheckOn;
96
106
  serverMonitorOptions?: ServerMonitorOptions | undefined;
97
107
  metricMonitorOptions?: MetricMonitorOptions | undefined;
108
+ snmpMonitorOptions?: SnmpMonitorOptions | undefined;
98
109
  filterType: FilterType | undefined;
99
110
  value: string | number | undefined;
100
- eveluateOverTime?: boolean | undefined;
111
+ evaluateOverTime?: boolean | undefined;
101
112
  evaluateOverTimeOptions?: EvaluateOverTimeOptions | undefined;
102
113
  }
103
114
 
@@ -130,7 +141,7 @@ export class CriteriaFilterUtil {
130
141
  }): boolean {
131
142
  const { checkOn } = data;
132
143
 
133
- if (checkOn === CheckOn.IsOnline) {
144
+ if (checkOn === CheckOn.IsOnline || checkOn === CheckOn.SnmpIsOnline) {
134
145
  return false;
135
146
  }
136
147
 
@@ -138,6 +149,10 @@ export class CriteriaFilterUtil {
138
149
  return false;
139
150
  }
140
151
 
152
+ if (checkOn === CheckOn.SnmpOidExists) {
153
+ return false;
154
+ }
155
+
141
156
  if (
142
157
  checkOn === CheckOn.IsValidCertificate ||
143
158
  checkOn === CheckOn.IsSelfSignedCertificate ||
@@ -187,7 +202,9 @@ export class CriteriaFilterUtil {
187
202
  checkOn === CheckOn.DiskUsagePercent ||
188
203
  checkOn === CheckOn.CPUUsagePercent ||
189
204
  checkOn === CheckOn.MemoryUsagePercent ||
190
- checkOn === CheckOn.IsOnline
205
+ checkOn === CheckOn.IsOnline ||
206
+ checkOn === CheckOn.SnmpResponseTime ||
207
+ checkOn === CheckOn.SnmpIsOnline
191
208
  );
192
209
  }
193
210
  }
@@ -201,9 +218,12 @@ export const CriteriaFilterSchema: ZodSchema = Zod.object({
201
218
  metricAlias: Zod.string().optional(),
202
219
  metricAggregationType: Zod.string().optional(),
203
220
  }).optional(),
221
+ snmpMonitorOptions: Zod.object({
222
+ oid: Zod.string().optional(),
223
+ }).optional(),
204
224
  filterType: Zod.string().optional(),
205
225
  value: Zod.union([Zod.string(), Zod.number()]).optional(),
206
- eveluateOverTime: Zod.boolean().optional(),
226
+ evaluateOverTime: Zod.boolean().optional(),
207
227
  evaluateOverTimeOptions: Zod.object({
208
228
  timeValueInMinutes: Zod.number().optional(),
209
229
  evaluateOverTimeType: Zod.string().optional(),
@@ -367,6 +367,33 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
367
367
  return monitorCriteriaInstance;
368
368
  }
369
369
 
370
+ if (arg.monitorType === MonitorType.SNMP) {
371
+ const monitorCriteriaInstance: MonitorCriteriaInstance =
372
+ new MonitorCriteriaInstance();
373
+
374
+ monitorCriteriaInstance.data = {
375
+ id: ObjectID.generate().toString(),
376
+ monitorStatusId: arg.monitorStatusId,
377
+ filterCondition: FilterCondition.All,
378
+ filters: [
379
+ {
380
+ checkOn: CheckOn.SnmpIsOnline,
381
+ filterType: FilterType.True,
382
+ value: undefined,
383
+ },
384
+ ],
385
+ incidents: [],
386
+ alerts: [],
387
+ createAlerts: false,
388
+ changeMonitorStatus: true,
389
+ createIncidents: false,
390
+ name: `Check if ${arg.monitorName} is online`,
391
+ description: `This criteria checks if the ${arg.monitorName} SNMP device is online`,
392
+ };
393
+
394
+ return monitorCriteriaInstance;
395
+ }
396
+
370
397
  return null;
371
398
  }
372
399
 
@@ -428,6 +455,46 @@ export default class MonitorCriteriaInstance extends DatabaseProperty {
428
455
  };
429
456
  }
430
457
 
458
+ if (arg.monitorType === MonitorType.SNMP) {
459
+ monitorCriteriaInstance.data = {
460
+ id: ObjectID.generate().toString(),
461
+ monitorStatusId: arg.monitorStatusId,
462
+ filterCondition: FilterCondition.Any,
463
+ filters: [
464
+ {
465
+ checkOn: CheckOn.SnmpIsOnline,
466
+ filterType: FilterType.False,
467
+ value: undefined,
468
+ },
469
+ ],
470
+ incidents: [
471
+ {
472
+ title: `${arg.monitorName} is offline`,
473
+ description: `${arg.monitorName} SNMP device is currently offline.`,
474
+ incidentSeverityId: arg.incidentSeverityId,
475
+ autoResolveIncident: true,
476
+ id: ObjectID.generate().toString(),
477
+ onCallPolicyIds: [],
478
+ },
479
+ ],
480
+ changeMonitorStatus: true,
481
+ createIncidents: true,
482
+ createAlerts: false,
483
+ alerts: [
484
+ {
485
+ title: `${arg.monitorName} is offline`,
486
+ description: `${arg.monitorName} SNMP device is currently offline.`,
487
+ alertSeverityId: arg.alertSeverityId,
488
+ autoResolveAlert: true,
489
+ id: ObjectID.generate().toString(),
490
+ onCallPolicyIds: [],
491
+ },
492
+ ],
493
+ name: `Check if ${arg.monitorName} is offline`,
494
+ description: `This criteria checks if the ${arg.monitorName} SNMP device is offline`,
495
+ };
496
+ }
497
+
431
498
  if (
432
499
  arg.monitorType === MonitorType.API ||
433
500
  arg.monitorType === MonitorType.Website
@@ -26,6 +26,9 @@ import MonitorStepMetricMonitor, {
26
26
  import MonitorStepExceptionMonitor, {
27
27
  MonitorStepExceptionMonitorUtil,
28
28
  } from "./MonitorStepExceptionMonitor";
29
+ import MonitorStepSnmpMonitor, {
30
+ MonitorStepSnmpMonitorUtil,
31
+ } from "./MonitorStepSnmpMonitor";
29
32
  import Zod, { ZodSchema } from "../../Utils/Schema/Zod";
30
33
 
31
34
  export interface MonitorStepType {
@@ -66,6 +69,9 @@ export interface MonitorStepType {
66
69
 
67
70
  // Exception monitor
68
71
  exceptionMonitor?: MonitorStepExceptionMonitor | undefined;
72
+
73
+ // SNMP monitor
74
+ snmpMonitor?: MonitorStepSnmpMonitor | undefined;
69
75
  }
70
76
 
71
77
  export default class MonitorStep extends DatabaseProperty {
@@ -91,6 +97,7 @@ export default class MonitorStep extends DatabaseProperty {
91
97
  traceMonitor: undefined,
92
98
  metricMonitor: undefined,
93
99
  exceptionMonitor: undefined,
100
+ snmpMonitor: undefined,
94
101
  };
95
102
  }
96
103
 
@@ -121,6 +128,7 @@ export default class MonitorStep extends DatabaseProperty {
121
128
  traceMonitor: undefined,
122
129
  metricMonitor: undefined,
123
130
  exceptionMonitor: undefined,
131
+ snmpMonitor: undefined,
124
132
  };
125
133
 
126
134
  return monitorStep;
@@ -211,6 +219,11 @@ export default class MonitorStep extends DatabaseProperty {
211
219
  return this;
212
220
  }
213
221
 
222
+ public setSnmpMonitor(snmpMonitor: MonitorStepSnmpMonitor): MonitorStep {
223
+ this.data!.snmpMonitor = snmpMonitor;
224
+ return this;
225
+ }
226
+
214
227
  public setCustomCode(customCode: string): MonitorStep {
215
228
  this.data!.customCode = customCode;
216
229
  return this;
@@ -302,6 +315,23 @@ export default class MonitorStep extends DatabaseProperty {
302
315
  return "Port is required";
303
316
  }
304
317
 
318
+ if (monitorType === MonitorType.SNMP) {
319
+ if (!value.data.snmpMonitor) {
320
+ return "SNMP configuration is required";
321
+ }
322
+
323
+ if (!value.data.snmpMonitor.hostname) {
324
+ return "SNMP hostname is required";
325
+ }
326
+
327
+ if (
328
+ !value.data.snmpMonitor.oids ||
329
+ value.data.snmpMonitor.oids.length === 0
330
+ ) {
331
+ return "At least one OID is required";
332
+ }
333
+ }
334
+
305
335
  return null;
306
336
  }
307
337
 
@@ -344,6 +374,9 @@ export default class MonitorStep extends DatabaseProperty {
344
374
  MonitorStepExceptionMonitorUtil.getDefault(),
345
375
  )
346
376
  : undefined,
377
+ snmpMonitor: this.data.snmpMonitor
378
+ ? MonitorStepSnmpMonitorUtil.toJSON(this.data.snmpMonitor)
379
+ : undefined,
347
380
  },
348
381
  });
349
382
  }
@@ -446,6 +479,9 @@ export default class MonitorStep extends DatabaseProperty {
446
479
  exceptionMonitor: json["exceptionMonitor"]
447
480
  ? (json["exceptionMonitor"] as JSONObject)
448
481
  : undefined,
482
+ snmpMonitor: json["snmpMonitor"]
483
+ ? (json["snmpMonitor"] as JSONObject)
484
+ : undefined,
449
485
  }) as any;
450
486
 
451
487
  return monitorStep;
@@ -470,6 +506,7 @@ export default class MonitorStep extends DatabaseProperty {
470
506
  logMonitor: Zod.any().optional(),
471
507
  traceMonitor: Zod.any().optional(),
472
508
  metricMonitor: Zod.any().optional(),
509
+ snmpMonitor: Zod.any().optional(),
473
510
  }).openapi({
474
511
  type: "object",
475
512
  example: {
@@ -0,0 +1,102 @@
1
+ import { JSONObject } from "../JSON";
2
+ import SnmpOid from "./SnmpMonitor/SnmpOid";
3
+ import SnmpV3Auth from "./SnmpMonitor/SnmpV3Auth";
4
+ import SnmpVersion from "./SnmpMonitor/SnmpVersion";
5
+ import SnmpSecurityLevel from "./SnmpMonitor/SnmpSecurityLevel";
6
+ import SnmpAuthProtocol from "./SnmpMonitor/SnmpAuthProtocol";
7
+ import SnmpPrivProtocol from "./SnmpMonitor/SnmpPrivProtocol";
8
+
9
+ export default interface MonitorStepSnmpMonitor {
10
+ snmpVersion: SnmpVersion;
11
+ hostname: string;
12
+ port: number;
13
+ communityString?: string | undefined;
14
+ snmpV3Auth?: SnmpV3Auth | undefined;
15
+ oids: Array<SnmpOid>;
16
+ timeout: number;
17
+ retries: number;
18
+ }
19
+
20
+ export class MonitorStepSnmpMonitorUtil {
21
+ public static getDefault(): MonitorStepSnmpMonitor {
22
+ return {
23
+ snmpVersion: SnmpVersion.V2c,
24
+ hostname: "",
25
+ port: 161,
26
+ communityString: "public",
27
+ oids: [],
28
+ timeout: 5000,
29
+ retries: 3,
30
+ };
31
+ }
32
+
33
+ public static fromJSON(json: JSONObject): MonitorStepSnmpMonitor {
34
+ return {
35
+ snmpVersion: (json["snmpVersion"] as SnmpVersion) || SnmpVersion.V2c,
36
+ hostname: (json["hostname"] as string) || "",
37
+ port: (json["port"] as number) || 161,
38
+ communityString: (json["communityString"] as string) || undefined,
39
+ snmpV3Auth: json["snmpV3Auth"]
40
+ ? MonitorStepSnmpMonitorUtil.parseSnmpV3Auth(
41
+ json["snmpV3Auth"] as JSONObject,
42
+ )
43
+ : undefined,
44
+ oids: MonitorStepSnmpMonitorUtil.parseOids(
45
+ (json["oids"] as Array<JSONObject>) || [],
46
+ ),
47
+ timeout: (json["timeout"] as number) || 5000,
48
+ retries: (json["retries"] as number) || 3,
49
+ };
50
+ }
51
+
52
+ private static parseSnmpV3Auth(json: JSONObject): SnmpV3Auth {
53
+ return {
54
+ securityLevel:
55
+ (json["securityLevel"] as SnmpSecurityLevel) ||
56
+ SnmpSecurityLevel.NoAuthNoPriv,
57
+ username: (json["username"] as string) || "",
58
+ authProtocol: (json["authProtocol"] as SnmpAuthProtocol) || undefined,
59
+ authKey: (json["authKey"] as string) || undefined,
60
+ privProtocol: (json["privProtocol"] as SnmpPrivProtocol) || undefined,
61
+ privKey: (json["privKey"] as string) || undefined,
62
+ };
63
+ }
64
+
65
+ private static parseOids(oids: Array<JSONObject>): Array<SnmpOid> {
66
+ return oids.map((oid: JSONObject) => {
67
+ return {
68
+ oid: (oid["oid"] as string) || "",
69
+ name: (oid["name"] as string) || undefined,
70
+ description: (oid["description"] as string) || undefined,
71
+ };
72
+ });
73
+ }
74
+
75
+ public static toJSON(monitor: MonitorStepSnmpMonitor): JSONObject {
76
+ return {
77
+ snmpVersion: monitor.snmpVersion,
78
+ hostname: monitor.hostname,
79
+ port: monitor.port,
80
+ communityString: monitor.communityString,
81
+ snmpV3Auth: monitor.snmpV3Auth
82
+ ? {
83
+ securityLevel: monitor.snmpV3Auth.securityLevel,
84
+ username: monitor.snmpV3Auth.username,
85
+ authProtocol: monitor.snmpV3Auth.authProtocol,
86
+ authKey: monitor.snmpV3Auth.authKey,
87
+ privProtocol: monitor.snmpV3Auth.privProtocol,
88
+ privKey: monitor.snmpV3Auth.privKey,
89
+ }
90
+ : undefined,
91
+ oids: monitor.oids.map((oid: SnmpOid) => {
92
+ return {
93
+ oid: oid.oid,
94
+ name: oid.name,
95
+ description: oid.description,
96
+ };
97
+ }),
98
+ timeout: monitor.timeout,
99
+ retries: monitor.retries,
100
+ };
101
+ }
102
+ }
@@ -23,6 +23,9 @@ enum MonitorType {
23
23
  Metrics = "Metrics",
24
24
  Traces = "Traces",
25
25
  Exceptions = "Exceptions",
26
+
27
+ // Network device monitoring
28
+ SNMP = "SNMP",
26
29
  }
27
30
 
28
31
  export default MonitorType;
@@ -169,6 +172,13 @@ export class MonitorTypeHelper {
169
172
  "This monitor type lets you monitor metrics from any source.",
170
173
  icon: IconProp.Heartbeat,
171
174
  },
175
+ {
176
+ monitorType: MonitorType.SNMP,
177
+ title: "SNMP",
178
+ description:
179
+ "This monitor type lets you monitor network devices like switches, routers, and firewalls via SNMP.",
180
+ icon: IconProp.Signal,
181
+ },
172
182
  ];
173
183
 
174
184
  return monitorTypeProps;
@@ -213,7 +223,8 @@ export class MonitorTypeHelper {
213
223
  monitorType === MonitorType.Port ||
214
224
  monitorType === MonitorType.SSLCertificate ||
215
225
  monitorType === MonitorType.SyntheticMonitor ||
216
- monitorType === MonitorType.CustomJavaScriptCode;
226
+ monitorType === MonitorType.CustomJavaScriptCode ||
227
+ monitorType === MonitorType.SNMP;
217
228
  return isProbeableMonitor;
218
229
  }
219
230
 
@@ -234,6 +245,7 @@ export class MonitorTypeHelper {
234
245
  MonitorType.Metrics,
235
246
  MonitorType.Traces,
236
247
  MonitorType.Exceptions,
248
+ MonitorType.SNMP,
237
249
  ];
238
250
  }
239
251
 
@@ -265,7 +277,8 @@ export class MonitorTypeHelper {
265
277
  monitorType === MonitorType.Server ||
266
278
  monitorType === MonitorType.SSLCertificate ||
267
279
  monitorType === MonitorType.SyntheticMonitor ||
268
- monitorType === MonitorType.CustomJavaScriptCode
280
+ monitorType === MonitorType.CustomJavaScriptCode ||
281
+ monitorType === MonitorType.SNMP
269
282
  ) {
270
283
  return true;
271
284
  }
@@ -0,0 +1,8 @@
1
+ enum SnmpAuthProtocol {
2
+ MD5 = "MD5",
3
+ SHA = "SHA",
4
+ SHA256 = "SHA256",
5
+ SHA512 = "SHA512",
6
+ }
7
+
8
+ export default SnmpAuthProtocol;
@@ -0,0 +1,21 @@
1
+ enum SnmpDataType {
2
+ Integer = "Integer",
3
+ OctetString = "OctetString",
4
+ ObjectIdentifier = "ObjectIdentifier",
5
+ IpAddress = "IpAddress",
6
+ Counter = "Counter",
7
+ Counter32 = "Counter32",
8
+ Gauge = "Gauge",
9
+ Gauge32 = "Gauge32",
10
+ TimeTicks = "TimeTicks",
11
+ Opaque = "Opaque",
12
+ Counter64 = "Counter64",
13
+ NoSuchObject = "NoSuchObject",
14
+ NoSuchInstance = "NoSuchInstance",
15
+ EndOfMibView = "EndOfMibView",
16
+ Null = "Null",
17
+ Boolean = "Boolean",
18
+ Unknown = "Unknown",
19
+ }
20
+
21
+ export default SnmpDataType;
@@ -0,0 +1,16 @@
1
+ import SnmpDataType from "./SnmpDataType";
2
+
3
+ export interface SnmpOidResponse {
4
+ oid: string;
5
+ name?: string | undefined;
6
+ value: string | number | null;
7
+ type: SnmpDataType;
8
+ }
9
+
10
+ export default interface SnmpMonitorResponse {
11
+ isOnline: boolean;
12
+ responseTimeInMs: number;
13
+ failureCause: string;
14
+ oidResponses: Array<SnmpOidResponse>;
15
+ isTimeout?: boolean | undefined;
16
+ }