@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
@@ -0,0 +1,524 @@
1
+ import IncidentEpisode from "./IncidentEpisode";
2
+ import IncidentState from "./IncidentState";
3
+ import Project from "./Project";
4
+ import User from "./User";
5
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
6
+ import Route from "../../Types/API/Route";
7
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
8
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
9
+ import CanAccessIfCanReadOn from "../../Types/Database/CanAccessIfCanReadOn";
10
+ import ColumnType from "../../Types/Database/ColumnType";
11
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
12
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
13
+ import EnableWorkflow from "../../Types/Database/EnableWorkflow";
14
+ import TableColumn from "../../Types/Database/TableColumn";
15
+ import TableColumnType from "../../Types/Database/TableColumnType";
16
+ import TableMetadata from "../../Types/Database/TableMetadata";
17
+ import TenantColumn from "../../Types/Database/TenantColumn";
18
+ import IconProp from "../../Types/Icon/IconProp";
19
+ import { JSONObject } from "../../Types/JSON";
20
+ import ObjectID from "../../Types/ObjectID";
21
+ import Permission from "../../Types/Permission";
22
+ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
23
+
24
+ @EnableDocumentation()
25
+ @CanAccessIfCanReadOn("incidentEpisode")
26
+ @TenantColumn("projectId")
27
+ @TableAccessControl({
28
+ create: [
29
+ Permission.ProjectOwner,
30
+ Permission.ProjectAdmin,
31
+ Permission.ProjectMember,
32
+ Permission.CreateIncidentEpisodeStateTimeline,
33
+ ],
34
+ read: [
35
+ Permission.ProjectOwner,
36
+ Permission.ProjectAdmin,
37
+ Permission.ProjectMember,
38
+ Permission.ReadIncidentEpisodeStateTimeline,
39
+ ],
40
+ delete: [
41
+ Permission.ProjectOwner,
42
+ Permission.ProjectAdmin,
43
+ Permission.ProjectMember,
44
+ Permission.DeleteIncidentEpisodeStateTimeline,
45
+ ],
46
+ update: [
47
+ Permission.ProjectOwner,
48
+ Permission.ProjectAdmin,
49
+ Permission.ProjectMember,
50
+ Permission.EditIncidentEpisodeStateTimeline,
51
+ ],
52
+ })
53
+ @EnableWorkflow({
54
+ create: true,
55
+ delete: true,
56
+ update: true,
57
+ read: true,
58
+ })
59
+ @CrudApiEndpoint(new Route("/incident-episode-state-timeline"))
60
+ @Entity({
61
+ name: "IncidentEpisodeStateTimeline",
62
+ })
63
+ @Index(["incidentEpisodeId", "startsAt"])
64
+ @TableMetadata({
65
+ tableName: "IncidentEpisodeStateTimeline",
66
+ singularName: "Incident Episode State Timeline",
67
+ pluralName: "Incident Episode State Timelines",
68
+ icon: IconProp.List,
69
+ tableDescription:
70
+ "Change state of the incident episodes (Created to Acknowledged for example)",
71
+ })
72
+ export default class IncidentEpisodeStateTimeline extends BaseModel {
73
+ @ColumnAccessControl({
74
+ create: [
75
+ Permission.ProjectOwner,
76
+ Permission.ProjectAdmin,
77
+ Permission.ProjectMember,
78
+ Permission.CreateIncidentEpisodeStateTimeline,
79
+ ],
80
+ read: [
81
+ Permission.ProjectOwner,
82
+ Permission.ProjectAdmin,
83
+ Permission.ProjectMember,
84
+ Permission.ReadIncidentEpisodeStateTimeline,
85
+ ],
86
+ update: [],
87
+ })
88
+ @TableColumn({
89
+ manyToOneRelationColumn: "projectId",
90
+ type: TableColumnType.Entity,
91
+ modelType: Project,
92
+ title: "Project",
93
+ description: "Relation to Project Resource in which this object belongs",
94
+ })
95
+ @ManyToOne(
96
+ () => {
97
+ return Project;
98
+ },
99
+ {
100
+ eager: false,
101
+ nullable: true,
102
+ onDelete: "CASCADE",
103
+ orphanedRowAction: "nullify",
104
+ },
105
+ )
106
+ @JoinColumn({ name: "projectId" })
107
+ public project?: Project = undefined;
108
+
109
+ @ColumnAccessControl({
110
+ create: [
111
+ Permission.ProjectOwner,
112
+ Permission.ProjectAdmin,
113
+ Permission.ProjectMember,
114
+ Permission.CreateIncidentEpisodeStateTimeline,
115
+ ],
116
+ read: [
117
+ Permission.ProjectOwner,
118
+ Permission.ProjectAdmin,
119
+ Permission.ProjectMember,
120
+ Permission.ReadIncidentEpisodeStateTimeline,
121
+ ],
122
+ update: [],
123
+ })
124
+ @Index()
125
+ @TableColumn({
126
+ type: TableColumnType.ObjectID,
127
+ required: true,
128
+ canReadOnRelationQuery: true,
129
+ title: "Project ID",
130
+ description: "ID of your OneUptime Project in which this object belongs",
131
+ })
132
+ @Column({
133
+ type: ColumnType.ObjectID,
134
+ nullable: false,
135
+ transformer: ObjectID.getDatabaseTransformer(),
136
+ })
137
+ public projectId?: ObjectID = undefined;
138
+
139
+ @ColumnAccessControl({
140
+ create: [
141
+ Permission.ProjectOwner,
142
+ Permission.ProjectAdmin,
143
+ Permission.ProjectMember,
144
+ Permission.CreateIncidentEpisodeStateTimeline,
145
+ ],
146
+ read: [
147
+ Permission.ProjectOwner,
148
+ Permission.ProjectAdmin,
149
+ Permission.ProjectMember,
150
+ Permission.ReadIncidentEpisodeStateTimeline,
151
+ ],
152
+ update: [],
153
+ })
154
+ @TableColumn({
155
+ manyToOneRelationColumn: "incidentEpisodeId",
156
+ type: TableColumnType.Entity,
157
+ modelType: IncidentEpisode,
158
+ title: "Incident Episode",
159
+ description: "Relation to Incident Episode in which this resource belongs",
160
+ })
161
+ @ManyToOne(
162
+ () => {
163
+ return IncidentEpisode;
164
+ },
165
+ {
166
+ eager: false,
167
+ nullable: true,
168
+ onDelete: "CASCADE",
169
+ orphanedRowAction: "nullify",
170
+ },
171
+ )
172
+ @JoinColumn({ name: "incidentEpisodeId" })
173
+ public incidentEpisode?: IncidentEpisode = undefined;
174
+
175
+ @ColumnAccessControl({
176
+ create: [
177
+ Permission.ProjectOwner,
178
+ Permission.ProjectAdmin,
179
+ Permission.ProjectMember,
180
+ Permission.CreateIncidentEpisodeStateTimeline,
181
+ ],
182
+ read: [
183
+ Permission.ProjectOwner,
184
+ Permission.ProjectAdmin,
185
+ Permission.ProjectMember,
186
+ Permission.ReadIncidentEpisodeStateTimeline,
187
+ ],
188
+ update: [],
189
+ })
190
+ @Index()
191
+ @TableColumn({
192
+ type: TableColumnType.ObjectID,
193
+ required: true,
194
+ title: "Incident Episode ID",
195
+ description:
196
+ "Relation to Incident Episode ID in which this resource belongs",
197
+ })
198
+ @Column({
199
+ type: ColumnType.ObjectID,
200
+ nullable: false,
201
+ transformer: ObjectID.getDatabaseTransformer(),
202
+ })
203
+ public incidentEpisodeId?: ObjectID = undefined;
204
+
205
+ @ColumnAccessControl({
206
+ create: [
207
+ Permission.ProjectOwner,
208
+ Permission.ProjectAdmin,
209
+ Permission.ProjectMember,
210
+ Permission.CreateIncidentEpisodeStateTimeline,
211
+ ],
212
+ read: [
213
+ Permission.ProjectOwner,
214
+ Permission.ProjectAdmin,
215
+ Permission.ProjectMember,
216
+ Permission.ReadIncidentEpisodeStateTimeline,
217
+ ],
218
+ update: [],
219
+ })
220
+ @TableColumn({
221
+ manyToOneRelationColumn: "createdByUserId",
222
+ type: TableColumnType.Entity,
223
+ modelType: User,
224
+ title: "Created by User",
225
+ description:
226
+ "Relation to User who created this object (if this object was created by a User)",
227
+ })
228
+ @ManyToOne(
229
+ () => {
230
+ return User;
231
+ },
232
+ {
233
+ eager: false,
234
+ nullable: true,
235
+ onDelete: "SET NULL",
236
+ orphanedRowAction: "nullify",
237
+ },
238
+ )
239
+ @JoinColumn({ name: "createdByUserId" })
240
+ public createdByUser?: User = undefined;
241
+
242
+ @ColumnAccessControl({
243
+ create: [
244
+ Permission.ProjectOwner,
245
+ Permission.ProjectAdmin,
246
+ Permission.ProjectMember,
247
+ Permission.CreateIncidentEpisodeStateTimeline,
248
+ ],
249
+ read: [
250
+ Permission.ProjectOwner,
251
+ Permission.ProjectAdmin,
252
+ Permission.ProjectMember,
253
+ Permission.ReadIncidentEpisodeStateTimeline,
254
+ ],
255
+ update: [],
256
+ })
257
+ @TableColumn({
258
+ type: TableColumnType.ObjectID,
259
+ title: "Created by User ID",
260
+ description:
261
+ "User ID who created this object (if this object was created by a User)",
262
+ })
263
+ @Column({
264
+ type: ColumnType.ObjectID,
265
+ nullable: true,
266
+ transformer: ObjectID.getDatabaseTransformer(),
267
+ })
268
+ public createdByUserId?: ObjectID = undefined;
269
+
270
+ @ColumnAccessControl({
271
+ create: [],
272
+ read: [],
273
+ update: [],
274
+ })
275
+ @TableColumn({
276
+ manyToOneRelationColumn: "deletedByUserId",
277
+ type: TableColumnType.Entity,
278
+ title: "Deleted by User",
279
+ modelType: User,
280
+ description:
281
+ "Relation to User who deleted this object (if this object was deleted by a User)",
282
+ })
283
+ @ManyToOne(
284
+ () => {
285
+ return User;
286
+ },
287
+ {
288
+ cascade: false,
289
+ eager: false,
290
+ nullable: true,
291
+ onDelete: "SET NULL",
292
+ orphanedRowAction: "nullify",
293
+ },
294
+ )
295
+ @JoinColumn({ name: "deletedByUserId" })
296
+ public deletedByUser?: User = undefined;
297
+
298
+ @ColumnAccessControl({
299
+ create: [],
300
+ read: [],
301
+ update: [],
302
+ })
303
+ @TableColumn({
304
+ type: TableColumnType.ObjectID,
305
+ title: "Deleted by User ID",
306
+ description:
307
+ "User ID who deleted this object (if this object was deleted by a User)",
308
+ })
309
+ @Column({
310
+ type: ColumnType.ObjectID,
311
+ nullable: true,
312
+ transformer: ObjectID.getDatabaseTransformer(),
313
+ })
314
+ public deletedByUserId?: ObjectID = undefined;
315
+
316
+ @ColumnAccessControl({
317
+ create: [
318
+ Permission.ProjectOwner,
319
+ Permission.ProjectAdmin,
320
+ Permission.ProjectMember,
321
+ Permission.CreateIncidentEpisodeStateTimeline,
322
+ ],
323
+ read: [
324
+ Permission.ProjectOwner,
325
+ Permission.ProjectAdmin,
326
+ Permission.ProjectMember,
327
+ Permission.ReadIncidentEpisodeStateTimeline,
328
+ ],
329
+ update: [
330
+ Permission.ProjectOwner,
331
+ Permission.ProjectAdmin,
332
+ Permission.ProjectMember,
333
+ Permission.EditIncidentEpisodeStateTimeline,
334
+ ],
335
+ })
336
+ @TableColumn({
337
+ manyToOneRelationColumn: "incidentStateId",
338
+ type: TableColumnType.Entity,
339
+ modelType: IncidentState,
340
+ title: "Incident State",
341
+ description:
342
+ "Incident State Relation. Which incident state does this episode change to?",
343
+ })
344
+ @ManyToOne(
345
+ () => {
346
+ return IncidentState;
347
+ },
348
+ {
349
+ eager: false,
350
+ nullable: true,
351
+ orphanedRowAction: "nullify",
352
+ },
353
+ )
354
+ @JoinColumn({ name: "incidentStateId" })
355
+ public incidentState?: IncidentState = undefined;
356
+
357
+ @ColumnAccessControl({
358
+ create: [
359
+ Permission.ProjectOwner,
360
+ Permission.ProjectAdmin,
361
+ Permission.ProjectMember,
362
+ Permission.CreateIncidentEpisodeStateTimeline,
363
+ ],
364
+ read: [
365
+ Permission.ProjectOwner,
366
+ Permission.ProjectAdmin,
367
+ Permission.ProjectMember,
368
+ Permission.ReadIncidentEpisodeStateTimeline,
369
+ ],
370
+ update: [
371
+ Permission.ProjectOwner,
372
+ Permission.ProjectAdmin,
373
+ Permission.ProjectMember,
374
+ Permission.EditIncidentEpisodeStateTimeline,
375
+ ],
376
+ })
377
+ @Index()
378
+ @TableColumn({
379
+ type: TableColumnType.ObjectID,
380
+ required: true,
381
+ title: "Incident State ID",
382
+ description:
383
+ "Incident State ID Relation. Which incident state does this episode change to?",
384
+ })
385
+ @Column({
386
+ type: ColumnType.ObjectID,
387
+ nullable: false,
388
+ transformer: ObjectID.getDatabaseTransformer(),
389
+ })
390
+ public incidentStateId?: ObjectID = undefined;
391
+
392
+ @ColumnAccessControl({
393
+ create: [],
394
+ read: [
395
+ Permission.ProjectOwner,
396
+ Permission.ProjectAdmin,
397
+ Permission.ProjectMember,
398
+ Permission.ReadIncidentEpisodeStateTimeline,
399
+ ],
400
+ update: [],
401
+ })
402
+ @Index()
403
+ @TableColumn({
404
+ type: TableColumnType.Boolean,
405
+ required: true,
406
+ isDefaultValueColumn: true,
407
+ title: "Are Owners Notified",
408
+ description: "Are owners notified of state change?",
409
+ defaultValue: false,
410
+ })
411
+ @Column({
412
+ type: ColumnType.Boolean,
413
+ nullable: false,
414
+ default: false,
415
+ })
416
+ public isOwnerNotified?: boolean = undefined;
417
+
418
+ @ColumnAccessControl({
419
+ create: [],
420
+ read: [
421
+ Permission.ProjectOwner,
422
+ Permission.ProjectAdmin,
423
+ Permission.ProjectMember,
424
+ Permission.ReadIncidentEpisodeStateTimeline,
425
+ ],
426
+ update: [],
427
+ })
428
+ @TableColumn({
429
+ isDefaultValueColumn: false,
430
+ required: false,
431
+ type: TableColumnType.JSON,
432
+ })
433
+ @Column({
434
+ type: ColumnType.JSON,
435
+ nullable: true,
436
+ unique: false,
437
+ })
438
+ public stateChangeLog?: JSONObject = undefined;
439
+
440
+ @ColumnAccessControl({
441
+ create: [
442
+ Permission.ProjectOwner,
443
+ Permission.ProjectAdmin,
444
+ Permission.ProjectMember,
445
+ Permission.CreateIncidentEpisodeStateTimeline,
446
+ ],
447
+ read: [
448
+ Permission.ProjectOwner,
449
+ Permission.ProjectAdmin,
450
+ Permission.ProjectMember,
451
+ Permission.ReadIncidentEpisodeStateTimeline,
452
+ ],
453
+ update: [],
454
+ })
455
+ @Index()
456
+ @TableColumn({
457
+ type: TableColumnType.Markdown,
458
+ required: false,
459
+ isDefaultValueColumn: false,
460
+ title: "Root Cause",
461
+ description: "What is the root cause of this status change?",
462
+ })
463
+ @Column({
464
+ type: ColumnType.Markdown,
465
+ nullable: true,
466
+ })
467
+ public rootCause?: string = undefined;
468
+
469
+ @Index()
470
+ @ColumnAccessControl({
471
+ create: [
472
+ Permission.ProjectOwner,
473
+ Permission.ProjectAdmin,
474
+ Permission.ProjectMember,
475
+ Permission.CreateIncidentEpisodeStateTimeline,
476
+ ],
477
+ read: [
478
+ Permission.ProjectOwner,
479
+ Permission.ProjectAdmin,
480
+ Permission.ProjectMember,
481
+ Permission.ReadIncidentEpisodeStateTimeline,
482
+ ],
483
+ update: [],
484
+ })
485
+ @TableColumn({
486
+ type: TableColumnType.Date,
487
+ title: "Ends At",
488
+ description: "When did this status change end?",
489
+ })
490
+ @Column({
491
+ type: ColumnType.Date,
492
+ nullable: true,
493
+ unique: false,
494
+ })
495
+ public endsAt?: Date = undefined;
496
+
497
+ @Index()
498
+ @ColumnAccessControl({
499
+ create: [
500
+ Permission.ProjectOwner,
501
+ Permission.ProjectAdmin,
502
+ Permission.ProjectMember,
503
+ Permission.CreateIncidentEpisodeStateTimeline,
504
+ ],
505
+ read: [
506
+ Permission.ProjectOwner,
507
+ Permission.ProjectAdmin,
508
+ Permission.ProjectMember,
509
+ Permission.ReadIncidentEpisodeStateTimeline,
510
+ ],
511
+ update: [],
512
+ })
513
+ @TableColumn({
514
+ type: TableColumnType.Date,
515
+ title: "Starts At",
516
+ description: "When did this status change?",
517
+ })
518
+ @Column({
519
+ type: ColumnType.Date,
520
+ nullable: true,
521
+ unique: false,
522
+ })
523
+ public startsAt?: Date = undefined;
524
+ }