@oneuptime/common 11.3.20 → 11.3.22

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 (212) hide show
  1. package/Models/AnalyticsModels/AnalyticsBaseModel/CommonModel.ts +2 -0
  2. package/Models/AnalyticsModels/ExceptionInstance.ts +1 -0
  3. package/Models/AnalyticsModels/Log.ts +1 -0
  4. package/Models/AnalyticsModels/Metric.ts +1 -0
  5. package/Models/AnalyticsModels/MonitorLog.ts +1 -0
  6. package/Models/AnalyticsModels/Span.ts +1 -0
  7. package/Models/DatabaseModels/Alert.ts +100 -0
  8. package/Models/DatabaseModels/AlertInternalNote.ts +2 -0
  9. package/Models/DatabaseModels/AlertReminderRule.ts +597 -0
  10. package/Models/DatabaseModels/AlertSeverity.ts +2 -0
  11. package/Models/DatabaseModels/AlertState.ts +2 -0
  12. package/Models/DatabaseModels/AlertStateTimeline.ts +2 -0
  13. package/Models/DatabaseModels/EnterpriseLicenseInstance.ts +173 -0
  14. package/Models/DatabaseModels/GlobalConfig.ts +19 -0
  15. package/Models/DatabaseModels/Incident.ts +100 -0
  16. package/Models/DatabaseModels/IncidentInternalNote.ts +2 -0
  17. package/Models/DatabaseModels/IncidentPublicNote.ts +2 -0
  18. package/Models/DatabaseModels/IncidentReminderRule.ts +597 -0
  19. package/Models/DatabaseModels/IncidentSeverity.ts +2 -0
  20. package/Models/DatabaseModels/IncidentStateTimeline.ts +2 -0
  21. package/Models/DatabaseModels/Index.ts +8 -0
  22. package/Models/DatabaseModels/Label.ts +2 -0
  23. package/Models/DatabaseModels/MonitorStatusTimeline.ts +2 -0
  24. package/Models/DatabaseModels/ScheduledMaintenance.ts +100 -0
  25. package/Models/DatabaseModels/ScheduledMaintenanceReminderRule.ts +585 -0
  26. package/Models/DatabaseModels/ScheduledMaintenanceState.ts +2 -0
  27. package/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.ts +2 -0
  28. package/Models/DatabaseModels/StatusPageAnnouncement.ts +2 -0
  29. package/Server/API/DashboardAPI.ts +221 -0
  30. package/Server/API/EnterpriseLicenseAPI.ts +279 -12
  31. package/Server/API/GlobalConfigAPI.ts +81 -16
  32. package/Server/API/StatusPageAPI.ts +894 -791
  33. package/Server/EnvironmentConfig.ts +9 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1783226868418-AddEnterpriseLicenseInstance.ts +47 -0
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/1783234451106-AddIncidentAlertReminderRules.ts +211 -0
  36. package/Server/Infrastructure/Postgres/SchemaMigrations/1783320000000-AddScheduledMaintenanceReminderRules.ts +113 -0
  37. package/Server/Infrastructure/Postgres/SchemaMigrations/1783330000000-AddRemindWhileScheduledToScheduledMaintenanceReminderRule.ts +20 -0
  38. package/Server/Infrastructure/Postgres/SchemaMigrations/1783340000000-AddLabelsToIncidentAndAlertReminderRules.ts +69 -0
  39. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
  40. package/Server/Services/AlertReminderRuleService.ts +253 -0
  41. package/Server/Services/AlertService.ts +106 -0
  42. package/Server/Services/EnterpriseLicenseInstanceService.ts +10 -0
  43. package/Server/Services/IncidentReminderRuleService.ts +256 -0
  44. package/Server/Services/IncidentService.ts +143 -0
  45. package/Server/Services/Index.ts +8 -0
  46. package/Server/Services/IoTDeviceService.ts +99 -4
  47. package/Server/Services/ScheduledMaintenanceReminderRuleService.ts +236 -0
  48. package/Server/Services/ScheduledMaintenanceService.ts +127 -0
  49. package/Server/Services/StatusPageService.ts +104 -45
  50. package/Server/Services/TelemetryExceptionService.ts +123 -0
  51. package/Server/Services/UserNotificationSettingService.ts +24 -0
  52. package/Server/Utils/AnalyticsDatabase/Statement.ts +7 -3
  53. package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +35 -0
  54. package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +6 -4
  55. package/Server/Utils/Monitor/MonitorCriteriaDataExtractor.ts +7 -6
  56. package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +6 -4
  57. package/Server/Utils/Telemetry/IoTSnapshotScan.ts +45 -7
  58. package/Server/Utils/WhatsAppTemplateUtil.ts +10 -0
  59. package/ServiceRoute.ts +4 -0
  60. package/Tests/Server/Services/IoTDeviceService.test.ts +280 -0
  61. package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +49 -0
  62. package/Tests/Server/Utils/Monitor/Criteria/TelemetryStepMetricAlias.test.ts +390 -0
  63. package/Tests/Server/Utils/Telemetry/IoTSnapshotScan.test.ts +202 -0
  64. package/Tests/Utils/EnterpriseLicenseUsage.test.ts +165 -0
  65. package/Types/Email/EmailTemplateType.ts +3 -0
  66. package/Types/EnterpriseLicense/EnterpriseLicenseInstanceSummary.ts +18 -0
  67. package/Types/Monitor/MonitorStep.ts +32 -0
  68. package/Types/NotificationSetting/NotificationSettingEventType.ts +3 -0
  69. package/Types/Permission.ts +144 -0
  70. package/Types/Reminder/ReminderStopState.ts +6 -0
  71. package/Types/Reminder/ScheduledMaintenanceReminderStopState.ts +6 -0
  72. package/Types/WhatsApp/WhatsAppTemplates.ts +14 -0
  73. package/UI/Components/EditionLabel/EditionLabel.tsx +172 -0
  74. package/Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts +125 -0
  75. package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/CommonModel.js.map +1 -1
  76. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +1 -0
  77. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
  78. package/build/dist/Models/AnalyticsModels/Log.js +1 -0
  79. package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
  80. package/build/dist/Models/AnalyticsModels/Metric.js +1 -0
  81. package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
  82. package/build/dist/Models/AnalyticsModels/MonitorLog.js +1 -0
  83. package/build/dist/Models/AnalyticsModels/MonitorLog.js.map +1 -1
  84. package/build/dist/Models/AnalyticsModels/Span.js +1 -0
  85. package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
  86. package/build/dist/Models/DatabaseModels/Alert.js +103 -0
  87. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  88. package/build/dist/Models/DatabaseModels/AlertInternalNote.js +2 -0
  89. package/build/dist/Models/DatabaseModels/AlertInternalNote.js.map +1 -1
  90. package/build/dist/Models/DatabaseModels/AlertReminderRule.js +605 -0
  91. package/build/dist/Models/DatabaseModels/AlertReminderRule.js.map +1 -0
  92. package/build/dist/Models/DatabaseModels/AlertSeverity.js +2 -0
  93. package/build/dist/Models/DatabaseModels/AlertSeverity.js.map +1 -1
  94. package/build/dist/Models/DatabaseModels/AlertState.js +2 -0
  95. package/build/dist/Models/DatabaseModels/AlertState.js.map +1 -1
  96. package/build/dist/Models/DatabaseModels/AlertStateTimeline.js +2 -0
  97. package/build/dist/Models/DatabaseModels/AlertStateTimeline.js.map +1 -1
  98. package/build/dist/Models/DatabaseModels/EnterpriseLicenseInstance.js +197 -0
  99. package/build/dist/Models/DatabaseModels/EnterpriseLicenseInstance.js.map +1 -0
  100. package/build/dist/Models/DatabaseModels/GlobalConfig.js +18 -0
  101. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  102. package/build/dist/Models/DatabaseModels/Incident.js +103 -0
  103. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  104. package/build/dist/Models/DatabaseModels/IncidentInternalNote.js +2 -0
  105. package/build/dist/Models/DatabaseModels/IncidentInternalNote.js.map +1 -1
  106. package/build/dist/Models/DatabaseModels/IncidentPublicNote.js +2 -0
  107. package/build/dist/Models/DatabaseModels/IncidentPublicNote.js.map +1 -1
  108. package/build/dist/Models/DatabaseModels/IncidentReminderRule.js +605 -0
  109. package/build/dist/Models/DatabaseModels/IncidentReminderRule.js.map +1 -0
  110. package/build/dist/Models/DatabaseModels/IncidentSeverity.js +2 -0
  111. package/build/dist/Models/DatabaseModels/IncidentSeverity.js.map +1 -1
  112. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js +2 -0
  113. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js.map +1 -1
  114. package/build/dist/Models/DatabaseModels/Index.js +8 -0
  115. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  116. package/build/dist/Models/DatabaseModels/Label.js +2 -0
  117. package/build/dist/Models/DatabaseModels/Label.js.map +1 -1
  118. package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js +2 -0
  119. package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js.map +1 -1
  120. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +103 -0
  121. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  122. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceReminderRule.js +596 -0
  123. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceReminderRule.js.map +1 -0
  124. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceState.js +2 -0
  125. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceState.js.map +1 -1
  126. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js +2 -0
  127. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js.map +1 -1
  128. package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js +2 -0
  129. package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js.map +1 -1
  130. package/build/dist/Server/API/DashboardAPI.js +166 -16
  131. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  132. package/build/dist/Server/API/EnterpriseLicenseAPI.js +203 -13
  133. package/build/dist/Server/API/EnterpriseLicenseAPI.js.map +1 -1
  134. package/build/dist/Server/API/GlobalConfigAPI.js +62 -15
  135. package/build/dist/Server/API/GlobalConfigAPI.js.map +1 -1
  136. package/build/dist/Server/API/StatusPageAPI.js +74 -31
  137. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  138. package/build/dist/Server/EnvironmentConfig.js +6 -0
  139. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  140. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783226868418-AddEnterpriseLicenseInstance.js +22 -0
  141. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783226868418-AddEnterpriseLicenseInstance.js.map +1 -0
  142. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783234451106-AddIncidentAlertReminderRules.js +78 -0
  143. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783234451106-AddIncidentAlertReminderRules.js.map +1 -0
  144. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783320000000-AddScheduledMaintenanceReminderRules.js +44 -0
  145. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783320000000-AddScheduledMaintenanceReminderRules.js.map +1 -0
  146. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783330000000-AddRemindWhileScheduledToScheduledMaintenanceReminderRule.js +12 -0
  147. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783330000000-AddRemindWhileScheduledToScheduledMaintenanceReminderRule.js.map +1 -0
  148. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783340000000-AddLabelsToIncidentAndAlertReminderRules.js +30 -0
  149. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783340000000-AddLabelsToIncidentAndAlertReminderRules.js.map +1 -0
  150. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
  151. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  152. package/build/dist/Server/Services/AlertReminderRuleService.js +228 -0
  153. package/build/dist/Server/Services/AlertReminderRuleService.js.map +1 -0
  154. package/build/dist/Server/Services/AlertService.js +87 -0
  155. package/build/dist/Server/Services/AlertService.js.map +1 -1
  156. package/build/dist/Server/Services/EnterpriseLicenseInstanceService.js +9 -0
  157. package/build/dist/Server/Services/EnterpriseLicenseInstanceService.js.map +1 -0
  158. package/build/dist/Server/Services/IncidentReminderRuleService.js +231 -0
  159. package/build/dist/Server/Services/IncidentReminderRuleService.js.map +1 -0
  160. package/build/dist/Server/Services/IncidentService.js +116 -0
  161. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  162. package/build/dist/Server/Services/Index.js +8 -0
  163. package/build/dist/Server/Services/Index.js.map +1 -1
  164. package/build/dist/Server/Services/IoTDeviceService.js +66 -4
  165. package/build/dist/Server/Services/IoTDeviceService.js.map +1 -1
  166. package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js +214 -0
  167. package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js.map +1 -0
  168. package/build/dist/Server/Services/ScheduledMaintenanceService.js +102 -0
  169. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  170. package/build/dist/Server/Services/StatusPageService.js +91 -43
  171. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  172. package/build/dist/Server/Services/TelemetryExceptionService.js +101 -0
  173. package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
  174. package/build/dist/Server/Services/UserNotificationSettingService.js +6 -0
  175. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  176. package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js +4 -2
  177. package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js.map +1 -1
  178. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +29 -0
  179. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
  180. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +4 -5
  181. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
  182. package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js +6 -5
  183. package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js.map +1 -1
  184. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +9 -9
  185. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
  186. package/build/dist/Server/Utils/Telemetry/IoTSnapshotScan.js +33 -2
  187. package/build/dist/Server/Utils/Telemetry/IoTSnapshotScan.js.map +1 -1
  188. package/build/dist/Server/Utils/WhatsAppTemplateUtil.js +6 -0
  189. package/build/dist/Server/Utils/WhatsAppTemplateUtil.js.map +1 -1
  190. package/build/dist/ServiceRoute.js +1 -0
  191. package/build/dist/ServiceRoute.js.map +1 -1
  192. package/build/dist/Types/Email/EmailTemplateType.js +3 -0
  193. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  194. package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseInstanceSummary.js +2 -0
  195. package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseInstanceSummary.js.map +1 -0
  196. package/build/dist/Types/Monitor/MonitorStep.js +25 -0
  197. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  198. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +3 -0
  199. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
  200. package/build/dist/Types/Permission.js +126 -0
  201. package/build/dist/Types/Permission.js.map +1 -1
  202. package/build/dist/Types/Reminder/ReminderStopState.js +7 -0
  203. package/build/dist/Types/Reminder/ReminderStopState.js.map +1 -0
  204. package/build/dist/Types/Reminder/ScheduledMaintenanceReminderStopState.js +7 -0
  205. package/build/dist/Types/Reminder/ScheduledMaintenanceReminderStopState.js.map +1 -0
  206. package/build/dist/Types/WhatsApp/WhatsAppTemplates.js +9 -0
  207. package/build/dist/Types/WhatsApp/WhatsAppTemplates.js.map +1 -1
  208. package/build/dist/UI/Components/EditionLabel/EditionLabel.js +92 -0
  209. package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
  210. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js +83 -0
  211. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js.map +1 -0
  212. package/package.json +1 -1
@@ -0,0 +1,597 @@
1
+ import AlertSeverity from "./AlertSeverity";
2
+ import Label from "./Label";
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 ColumnLength from "../../Types/Database/ColumnLength";
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 ObjectID from "../../Types/ObjectID";
20
+ import Permission from "../../Types/Permission";
21
+ import ReminderStopState from "../../Types/Reminder/ReminderStopState";
22
+ import {
23
+ Column,
24
+ Entity,
25
+ Index,
26
+ JoinColumn,
27
+ JoinTable,
28
+ ManyToMany,
29
+ ManyToOne,
30
+ } from "typeorm";
31
+
32
+ @EnableDocumentation()
33
+ @TenantColumn("projectId")
34
+ @TableAccessControl({
35
+ create: [
36
+ Permission.ProjectOwner,
37
+ Permission.ProjectAdmin,
38
+ Permission.CreateAlertReminderRule,
39
+ ],
40
+ read: [
41
+ Permission.ProjectOwner,
42
+ Permission.ProjectAdmin,
43
+ Permission.ProjectMember,
44
+ Permission.Viewer,
45
+ Permission.AlertAdmin,
46
+ Permission.AlertMember,
47
+ Permission.AlertViewer,
48
+ Permission.ReadAlertReminderRule,
49
+ ],
50
+ delete: [
51
+ Permission.ProjectOwner,
52
+ Permission.ProjectAdmin,
53
+ Permission.DeleteAlertReminderRule,
54
+ ],
55
+ update: [
56
+ Permission.ProjectOwner,
57
+ Permission.ProjectAdmin,
58
+ Permission.EditAlertReminderRule,
59
+ ],
60
+ })
61
+ @CrudApiEndpoint(new Route("/alert-reminder-rule"))
62
+ @Entity({
63
+ name: "AlertReminderRule",
64
+ })
65
+ @EnableWorkflow({
66
+ create: true,
67
+ delete: true,
68
+ update: true,
69
+ read: true,
70
+ })
71
+ @TableMetadata({
72
+ tableName: "AlertReminderRule",
73
+ singularName: "Alert Reminder Rule",
74
+ pluralName: "Alert Reminder Rules",
75
+ icon: IconProp.Bell,
76
+ tableDescription:
77
+ "Configure reminder rules to periodically notify alert owners while an alert is still open",
78
+ })
79
+ export default class AlertReminderRule extends BaseModel {
80
+ @ColumnAccessControl({
81
+ create: [
82
+ Permission.ProjectOwner,
83
+ Permission.ProjectAdmin,
84
+ Permission.CreateAlertReminderRule,
85
+ ],
86
+ read: [
87
+ Permission.ProjectOwner,
88
+ Permission.ProjectAdmin,
89
+ Permission.ProjectMember,
90
+ Permission.Viewer,
91
+ Permission.AlertAdmin,
92
+ Permission.AlertMember,
93
+ Permission.AlertViewer,
94
+ Permission.ReadAlertReminderRule,
95
+ ],
96
+ update: [],
97
+ })
98
+ @TableColumn({
99
+ manyToOneRelationColumn: "projectId",
100
+ type: TableColumnType.Entity,
101
+ modelType: Project,
102
+ title: "Project",
103
+ description: "Relation to Project Resource in which this object belongs",
104
+ })
105
+ @ManyToOne(
106
+ () => {
107
+ return Project;
108
+ },
109
+ {
110
+ eager: false,
111
+ nullable: true,
112
+ onDelete: "CASCADE",
113
+ orphanedRowAction: "nullify",
114
+ },
115
+ )
116
+ @JoinColumn({ name: "projectId" })
117
+ public project?: Project = undefined;
118
+
119
+ @ColumnAccessControl({
120
+ create: [
121
+ Permission.ProjectOwner,
122
+ Permission.ProjectAdmin,
123
+ Permission.CreateAlertReminderRule,
124
+ ],
125
+ read: [
126
+ Permission.ProjectOwner,
127
+ Permission.ProjectAdmin,
128
+ Permission.ProjectMember,
129
+ Permission.Viewer,
130
+ Permission.AlertAdmin,
131
+ Permission.AlertMember,
132
+ Permission.AlertViewer,
133
+ Permission.ReadAlertReminderRule,
134
+ ],
135
+ update: [],
136
+ })
137
+ @Index()
138
+ @TableColumn({
139
+ type: TableColumnType.ObjectID,
140
+ required: true,
141
+ canReadOnRelationQuery: true,
142
+ title: "Project ID",
143
+ description: "ID of your OneUptime Project in which this object belongs",
144
+ })
145
+ @Column({
146
+ type: ColumnType.ObjectID,
147
+ nullable: false,
148
+ transformer: ObjectID.getDatabaseTransformer(),
149
+ })
150
+ public projectId?: ObjectID = undefined;
151
+
152
+ @ColumnAccessControl({
153
+ create: [
154
+ Permission.ProjectOwner,
155
+ Permission.ProjectAdmin,
156
+ Permission.CreateAlertReminderRule,
157
+ ],
158
+ read: [
159
+ Permission.ProjectOwner,
160
+ Permission.ProjectAdmin,
161
+ Permission.ProjectMember,
162
+ Permission.Viewer,
163
+ Permission.AlertAdmin,
164
+ Permission.AlertMember,
165
+ Permission.AlertViewer,
166
+ Permission.ReadAlertReminderRule,
167
+ ],
168
+ update: [
169
+ Permission.ProjectOwner,
170
+ Permission.ProjectAdmin,
171
+ Permission.EditAlertReminderRule,
172
+ ],
173
+ })
174
+ @Index()
175
+ @TableColumn({
176
+ required: true,
177
+ type: TableColumnType.ShortText,
178
+ canReadOnRelationQuery: true,
179
+ title: "Name",
180
+ description: "Name of this reminder rule",
181
+ })
182
+ @Column({
183
+ nullable: false,
184
+ type: ColumnType.ShortText,
185
+ length: ColumnLength.ShortText,
186
+ })
187
+ public name?: string = undefined;
188
+
189
+ @ColumnAccessControl({
190
+ create: [
191
+ Permission.ProjectOwner,
192
+ Permission.ProjectAdmin,
193
+ Permission.CreateAlertReminderRule,
194
+ ],
195
+ read: [
196
+ Permission.ProjectOwner,
197
+ Permission.ProjectAdmin,
198
+ Permission.ProjectMember,
199
+ Permission.Viewer,
200
+ Permission.AlertAdmin,
201
+ Permission.AlertMember,
202
+ Permission.AlertViewer,
203
+ Permission.ReadAlertReminderRule,
204
+ ],
205
+ update: [
206
+ Permission.ProjectOwner,
207
+ Permission.ProjectAdmin,
208
+ Permission.EditAlertReminderRule,
209
+ ],
210
+ })
211
+ @TableColumn({
212
+ required: false,
213
+ type: TableColumnType.LongText,
214
+ title: "Description",
215
+ description: "Description of this reminder rule",
216
+ canReadOnRelationQuery: true,
217
+ })
218
+ @Column({
219
+ nullable: true,
220
+ type: ColumnType.LongText,
221
+ length: ColumnLength.LongText,
222
+ })
223
+ public description?: string = undefined;
224
+
225
+ @ColumnAccessControl({
226
+ create: [
227
+ Permission.ProjectOwner,
228
+ Permission.ProjectAdmin,
229
+ Permission.CreateAlertReminderRule,
230
+ ],
231
+ read: [
232
+ Permission.ProjectOwner,
233
+ Permission.ProjectAdmin,
234
+ Permission.ProjectMember,
235
+ Permission.Viewer,
236
+ Permission.AlertAdmin,
237
+ Permission.AlertMember,
238
+ Permission.AlertViewer,
239
+ Permission.ReadAlertReminderRule,
240
+ ],
241
+ update: [
242
+ Permission.ProjectOwner,
243
+ Permission.ProjectAdmin,
244
+ Permission.EditAlertReminderRule,
245
+ ],
246
+ })
247
+ @Index()
248
+ @TableColumn({
249
+ required: true,
250
+ type: TableColumnType.Number,
251
+ title: "Order",
252
+ description:
253
+ "Order/priority of this rule. Rules are evaluated in order (lowest first). First matching rule wins.",
254
+ defaultValue: 1,
255
+ isDefaultValueColumn: true,
256
+ })
257
+ @Column({
258
+ type: ColumnType.Number,
259
+ nullable: false,
260
+ default: 1,
261
+ })
262
+ public order?: number = undefined;
263
+
264
+ @ColumnAccessControl({
265
+ create: [
266
+ Permission.ProjectOwner,
267
+ Permission.ProjectAdmin,
268
+ Permission.CreateAlertReminderRule,
269
+ ],
270
+ read: [
271
+ Permission.ProjectOwner,
272
+ Permission.ProjectAdmin,
273
+ Permission.ProjectMember,
274
+ Permission.Viewer,
275
+ Permission.AlertAdmin,
276
+ Permission.AlertMember,
277
+ Permission.AlertViewer,
278
+ Permission.ReadAlertReminderRule,
279
+ ],
280
+ update: [
281
+ Permission.ProjectOwner,
282
+ Permission.ProjectAdmin,
283
+ Permission.EditAlertReminderRule,
284
+ ],
285
+ })
286
+ @Index()
287
+ @TableColumn({
288
+ required: true,
289
+ type: TableColumnType.Boolean,
290
+ title: "Is Enabled",
291
+ description: "Whether this reminder rule is enabled",
292
+ defaultValue: true,
293
+ isDefaultValueColumn: true,
294
+ })
295
+ @Column({
296
+ type: ColumnType.Boolean,
297
+ nullable: false,
298
+ default: true,
299
+ })
300
+ public isEnabled?: boolean = undefined;
301
+
302
+ @ColumnAccessControl({
303
+ create: [
304
+ Permission.ProjectOwner,
305
+ Permission.ProjectAdmin,
306
+ Permission.CreateAlertReminderRule,
307
+ ],
308
+ read: [
309
+ Permission.ProjectOwner,
310
+ Permission.ProjectAdmin,
311
+ Permission.ProjectMember,
312
+ Permission.Viewer,
313
+ Permission.AlertAdmin,
314
+ Permission.AlertMember,
315
+ Permission.AlertViewer,
316
+ Permission.ReadAlertReminderRule,
317
+ ],
318
+ update: [
319
+ Permission.ProjectOwner,
320
+ Permission.ProjectAdmin,
321
+ Permission.EditAlertReminderRule,
322
+ ],
323
+ })
324
+ @TableColumn({
325
+ required: true,
326
+ type: TableColumnType.Number,
327
+ title: "Reminder Interval (Minutes)",
328
+ description:
329
+ "How often (in minutes) to remind alert owners while the alert is still open. For example, set to 30 to remind owners every 30 minutes.",
330
+ canReadOnRelationQuery: true,
331
+ })
332
+ @Column({
333
+ type: ColumnType.Number,
334
+ nullable: false,
335
+ })
336
+ public reminderIntervalInMinutes?: number = undefined;
337
+
338
+ @ColumnAccessControl({
339
+ create: [
340
+ Permission.ProjectOwner,
341
+ Permission.ProjectAdmin,
342
+ Permission.CreateAlertReminderRule,
343
+ ],
344
+ read: [
345
+ Permission.ProjectOwner,
346
+ Permission.ProjectAdmin,
347
+ Permission.ProjectMember,
348
+ Permission.Viewer,
349
+ Permission.AlertAdmin,
350
+ Permission.AlertMember,
351
+ Permission.AlertViewer,
352
+ Permission.ReadAlertReminderRule,
353
+ ],
354
+ update: [
355
+ Permission.ProjectOwner,
356
+ Permission.ProjectAdmin,
357
+ Permission.EditAlertReminderRule,
358
+ ],
359
+ })
360
+ @TableColumn({
361
+ required: true,
362
+ type: TableColumnType.ShortText,
363
+ title: "Stop Reminders When",
364
+ description:
365
+ "Stop sending reminders once the alert reaches this state. Select Acknowledged to stop reminders when the alert is acknowledged, or Resolved to keep reminding until the alert is resolved.",
366
+ defaultValue: ReminderStopState.Resolved,
367
+ isDefaultValueColumn: true,
368
+ canReadOnRelationQuery: true,
369
+ })
370
+ @Column({
371
+ type: ColumnType.ShortText,
372
+ nullable: false,
373
+ default: ReminderStopState.Resolved,
374
+ })
375
+ public stopRemindersOnState?: ReminderStopState = undefined;
376
+
377
+ // Match Criteria - Alert Severities
378
+
379
+ @ColumnAccessControl({
380
+ create: [
381
+ Permission.ProjectOwner,
382
+ Permission.ProjectAdmin,
383
+ Permission.CreateAlertReminderRule,
384
+ ],
385
+ read: [
386
+ Permission.ProjectOwner,
387
+ Permission.ProjectAdmin,
388
+ Permission.ProjectMember,
389
+ Permission.Viewer,
390
+ Permission.AlertAdmin,
391
+ Permission.AlertMember,
392
+ Permission.AlertViewer,
393
+ Permission.ReadAlertReminderRule,
394
+ ],
395
+ update: [
396
+ Permission.ProjectOwner,
397
+ Permission.ProjectAdmin,
398
+ Permission.EditAlertReminderRule,
399
+ ],
400
+ })
401
+ @TableColumn({
402
+ required: false,
403
+ type: TableColumnType.EntityArray,
404
+ modelType: AlertSeverity,
405
+ title: "Alert Severities",
406
+ description:
407
+ "Only apply this reminder rule to alerts with these severities. Leave empty to match alerts of any severity.",
408
+ })
409
+ @ManyToMany(
410
+ () => {
411
+ return AlertSeverity;
412
+ },
413
+ { eager: false },
414
+ )
415
+ @JoinTable({
416
+ name: "AlertReminderRuleAlertSeverity",
417
+ inverseJoinColumn: {
418
+ name: "alertSeverityId",
419
+ referencedColumnName: "_id",
420
+ },
421
+ joinColumn: {
422
+ name: "alertReminderRuleId",
423
+ referencedColumnName: "_id",
424
+ },
425
+ })
426
+ public alertSeverities?: Array<AlertSeverity> = undefined;
427
+
428
+ // Match Criteria - Labels
429
+
430
+ @ColumnAccessControl({
431
+ create: [
432
+ Permission.ProjectOwner,
433
+ Permission.ProjectAdmin,
434
+ Permission.CreateAlertReminderRule,
435
+ ],
436
+ read: [
437
+ Permission.ProjectOwner,
438
+ Permission.ProjectAdmin,
439
+ Permission.ProjectMember,
440
+ Permission.Viewer,
441
+ Permission.AlertAdmin,
442
+ Permission.AlertMember,
443
+ Permission.AlertViewer,
444
+ Permission.ReadAlertReminderRule,
445
+ ],
446
+ update: [
447
+ Permission.ProjectOwner,
448
+ Permission.ProjectAdmin,
449
+ Permission.EditAlertReminderRule,
450
+ ],
451
+ })
452
+ @TableColumn({
453
+ required: false,
454
+ type: TableColumnType.EntityArray,
455
+ modelType: Label,
456
+ title: "Labels",
457
+ description:
458
+ "Only apply this reminder rule to alerts with these labels. Leave empty to match alerts with any labels.",
459
+ })
460
+ @ManyToMany(
461
+ () => {
462
+ return Label;
463
+ },
464
+ { eager: false },
465
+ )
466
+ @JoinTable({
467
+ name: "AlertReminderRuleLabel",
468
+ inverseJoinColumn: {
469
+ name: "labelId",
470
+ referencedColumnName: "_id",
471
+ },
472
+ joinColumn: {
473
+ name: "alertReminderRuleId",
474
+ referencedColumnName: "_id",
475
+ },
476
+ })
477
+ public labels?: Array<Label> = undefined;
478
+
479
+ // Created By / Deleted By User Relations
480
+
481
+ @ColumnAccessControl({
482
+ create: [
483
+ Permission.ProjectOwner,
484
+ Permission.ProjectAdmin,
485
+ Permission.CreateAlertReminderRule,
486
+ ],
487
+ read: [
488
+ Permission.ProjectOwner,
489
+ Permission.ProjectAdmin,
490
+ Permission.ProjectMember,
491
+ Permission.Viewer,
492
+ Permission.AlertAdmin,
493
+ Permission.AlertMember,
494
+ Permission.AlertViewer,
495
+ Permission.ReadAlertReminderRule,
496
+ ],
497
+ update: [],
498
+ })
499
+ @TableColumn({
500
+ manyToOneRelationColumn: "createdByUserId",
501
+ type: TableColumnType.Entity,
502
+ modelType: User,
503
+ title: "Created by User",
504
+ description:
505
+ "Relation to User who created this object (if this object was created by a User)",
506
+ })
507
+ @ManyToOne(
508
+ () => {
509
+ return User;
510
+ },
511
+ {
512
+ eager: false,
513
+ nullable: true,
514
+ onDelete: "SET NULL",
515
+ orphanedRowAction: "nullify",
516
+ },
517
+ )
518
+ @JoinColumn({ name: "createdByUserId" })
519
+ public createdByUser?: User = undefined;
520
+
521
+ @ColumnAccessControl({
522
+ create: [
523
+ Permission.ProjectOwner,
524
+ Permission.ProjectAdmin,
525
+ Permission.CreateAlertReminderRule,
526
+ ],
527
+ read: [
528
+ Permission.ProjectOwner,
529
+ Permission.ProjectAdmin,
530
+ Permission.ProjectMember,
531
+ Permission.Viewer,
532
+ Permission.AlertAdmin,
533
+ Permission.AlertMember,
534
+ Permission.AlertViewer,
535
+ Permission.ReadAlertReminderRule,
536
+ ],
537
+ update: [],
538
+ })
539
+ @TableColumn({
540
+ type: TableColumnType.ObjectID,
541
+ title: "Created by User ID",
542
+ description:
543
+ "User ID who created this object (if this object was created by a User)",
544
+ })
545
+ @Column({
546
+ type: ColumnType.ObjectID,
547
+ nullable: true,
548
+ transformer: ObjectID.getDatabaseTransformer(),
549
+ })
550
+ public createdByUserId?: ObjectID = undefined;
551
+
552
+ @ColumnAccessControl({
553
+ create: [],
554
+ read: [],
555
+ update: [],
556
+ })
557
+ @TableColumn({
558
+ manyToOneRelationColumn: "deletedByUserId",
559
+ type: TableColumnType.Entity,
560
+ title: "Deleted by User",
561
+ modelType: User,
562
+ description:
563
+ "Relation to User who deleted this object (if this object was deleted by a User)",
564
+ })
565
+ @ManyToOne(
566
+ () => {
567
+ return User;
568
+ },
569
+ {
570
+ cascade: false,
571
+ eager: false,
572
+ nullable: true,
573
+ onDelete: "SET NULL",
574
+ orphanedRowAction: "nullify",
575
+ },
576
+ )
577
+ @JoinColumn({ name: "deletedByUserId" })
578
+ public deletedByUser?: User = undefined;
579
+
580
+ @ColumnAccessControl({
581
+ create: [],
582
+ read: [],
583
+ update: [],
584
+ })
585
+ @TableColumn({
586
+ type: TableColumnType.ObjectID,
587
+ title: "Deleted by User ID",
588
+ description:
589
+ "User ID who deleted this object (if this object was deleted by a User)",
590
+ })
591
+ @Column({
592
+ type: ColumnType.ObjectID,
593
+ nullable: true,
594
+ transformer: ObjectID.getDatabaseTransformer(),
595
+ })
596
+ public deletedByUserId?: ObjectID = undefined;
597
+ }
@@ -11,6 +11,7 @@ import ColumnLength from "../../Types/Database/ColumnLength";
11
11
  import ColumnType from "../../Types/Database/ColumnType";
12
12
  import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
13
13
  import EnableDocumentation from "../../Types/Database/EnableDocumentation";
14
+ import EnableMCP from "../../Types/Database/EnableMCP";
14
15
  import EnableWorkflow from "../../Types/Database/EnableWorkflow";
15
16
  import ColorField from "../../Types/Database/ColorField";
16
17
  import SlugifyColumn from "../../Types/Database/SlugifyColumn";
@@ -31,6 +32,7 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
31
32
  delete: PlanType.Growth,
32
33
  })
33
34
  @EnableDocumentation()
35
+ @EnableMCP()
34
36
  @TenantColumn("projectId")
35
37
  @TableAccessControl({
36
38
  create: [
@@ -11,6 +11,7 @@ import ColumnLength from "../../Types/Database/ColumnLength";
11
11
  import ColumnType from "../../Types/Database/ColumnType";
12
12
  import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
13
13
  import EnableDocumentation from "../../Types/Database/EnableDocumentation";
14
+ import EnableMCP from "../../Types/Database/EnableMCP";
14
15
  import EnableWorkflow from "../../Types/Database/EnableWorkflow";
15
16
  import ColorField from "../../Types/Database/ColorField";
16
17
  import SlugifyColumn from "../../Types/Database/SlugifyColumn";
@@ -31,6 +32,7 @@ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
31
32
  delete: PlanType.Free,
32
33
  })
33
34
  @EnableDocumentation()
35
+ @EnableMCP()
34
36
  @TenantColumn("projectId")
35
37
  @TableAccessControl({
36
38
  create: [
@@ -11,6 +11,7 @@ import CanAccessIfCanReadOn from "../../Types/Database/CanAccessIfCanReadOn";
11
11
  import ColumnType from "../../Types/Database/ColumnType";
12
12
  import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
13
13
  import EnableDocumentation from "../../Types/Database/EnableDocumentation";
14
+ import EnableMCP from "../../Types/Database/EnableMCP";
14
15
  import EnableWorkflow from "../../Types/Database/EnableWorkflow";
15
16
  import TableColumn from "../../Types/Database/TableColumn";
16
17
  import TableColumnType from "../../Types/Database/TableColumnType";
@@ -23,6 +24,7 @@ import Permission from "../../Types/Permission";
23
24
  import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
24
25
 
25
26
  @EnableDocumentation()
27
+ @EnableMCP()
26
28
  @CanAccessIfCanReadOn("alert")
27
29
  @TenantColumn("projectId")
28
30
  @TableAccessControl({