@oneuptime/common 7.0.3148 → 7.0.3156

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 (225) hide show
  1. package/Models/DatabaseModels/Alert.ts +1010 -0
  2. package/Models/DatabaseModels/AlertCustomField.ts +340 -0
  3. package/Models/DatabaseModels/AlertInternalNote.ts +371 -0
  4. package/Models/DatabaseModels/AlertNoteTemplate.ts +352 -0
  5. package/Models/DatabaseModels/AlertOwnerTeam.ts +416 -0
  6. package/Models/DatabaseModels/AlertOwnerUser.ts +415 -0
  7. package/Models/DatabaseModels/AlertSeverity.ts +426 -0
  8. package/Models/DatabaseModels/AlertState.ts +502 -0
  9. package/Models/DatabaseModels/AlertStateTimeline.ts +525 -0
  10. package/Models/DatabaseModels/Incident.ts +2 -11
  11. package/Models/DatabaseModels/Index.ts +34 -12
  12. package/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.ts +55 -0
  13. package/Models/DatabaseModels/TableView.ts +452 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1727894983857-MigrationName.ts +51 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/1727906598804-MigrationName.ts +553 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  17. package/Server/Infrastructure/Semaphore.ts +9 -4
  18. package/Server/Services/AlertCustomFieldService.ts +9 -0
  19. package/Server/Services/AlertInternalNoteService.ts +10 -0
  20. package/Server/Services/AlertNoteTemplateService.ts +9 -0
  21. package/Server/Services/AlertOwnerTeamService.ts +10 -0
  22. package/Server/Services/AlertOwnerUserService.ts +10 -0
  23. package/Server/Services/AlertService.ts +568 -0
  24. package/Server/Services/AlertSeverityService.ts +154 -0
  25. package/Server/Services/AlertStateService.ts +227 -0
  26. package/Server/Services/AlertStateTimelineService.ts +334 -0
  27. package/Server/Services/CallLogService.ts +4 -1
  28. package/Server/Services/DatabaseService.ts +17 -20
  29. package/Server/Services/EmailLogService.ts +4 -1
  30. package/Server/Services/IncidentService.ts +4 -1
  31. package/Server/Services/IncidentStateTimelineService.ts +4 -1
  32. package/Server/Services/Index.ts +23 -0
  33. package/Server/Services/MonitorStatusTimelineService.ts +5 -1
  34. package/Server/Services/OnCallDutyPolicyExecutionLogService.ts +4 -1
  35. package/Server/Services/OnCallDutyPolicyService.ts +15 -0
  36. package/Server/Services/ProjectService.ts +99 -1
  37. package/Server/Services/ScheduledMaintenanceService.ts +4 -1
  38. package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +4 -1
  39. package/Server/Services/ShortLinkService.ts +4 -1
  40. package/Server/Services/SmsLogService.ts +4 -1
  41. package/Server/Services/TableViewService.ts +10 -0
  42. package/Server/Services/TelemetryUsageBillingService.ts +4 -1
  43. package/Server/Services/UserNotificationSettingService.ts +58 -0
  44. package/Server/Services/UserOnCallLogService.ts +4 -1
  45. package/Server/Services/WorkflowLogService.ts +4 -1
  46. package/Server/Types/Workflow/Components/API/Post.ts +25 -0
  47. package/Server/Utils/Monitor/MonitorAlert.ts +273 -0
  48. package/Server/Utils/Monitor/MonitorIncident.ts +298 -0
  49. package/Server/Utils/Monitor/MonitorResource.ts +87 -387
  50. package/Server/Utils/Monitor/MonitorStatusTimeline.ts +120 -0
  51. package/Server/Utils/Realtime.ts +1 -35
  52. package/Types/Email/EmailTemplateType.ts +7 -0
  53. package/Types/Icon/IconProp.ts +1 -0
  54. package/Types/Monitor/CriteriaAlert.ts +11 -0
  55. package/Types/Monitor/MonitorCriteria.ts +2 -0
  56. package/Types/Monitor/MonitorCriteriaInstance.ts +134 -1
  57. package/Types/Monitor/MonitorStep.ts +1 -0
  58. package/Types/Monitor/MonitorSteps.ts +1 -0
  59. package/Types/NotificationSetting/NotificationSettingEventType.ts +7 -0
  60. package/Types/Permission.ts +369 -1
  61. package/Types/Telemetry/TelemetryQuery.ts +10 -0
  62. package/Types/UserNotification/UserNotificationEventType.ts +1 -0
  63. package/UI/Components/Card/Card.tsx +40 -31
  64. package/UI/Components/Card/CardButtons/MoreButton.ts +15 -0
  65. package/UI/Components/HeaderAlert/HeaderAlert.tsx +75 -16
  66. package/UI/Components/HeaderAlert/HeaderAlertGroup.tsx +50 -0
  67. package/UI/Components/HeaderAlert/HeaderModelAlert.tsx +5 -1
  68. package/UI/Components/Icon/Icon.tsx +8 -0
  69. package/UI/Components/ModelDetail/CardModelDetail.tsx +4 -2
  70. package/UI/Components/ModelTable/BaseModelTable.tsx +70 -2
  71. package/UI/Components/ModelTable/TableView.tsx +317 -0
  72. package/UI/Components/MoreMenu/Divider.tsx +7 -0
  73. package/UI/Components/MoreMenu/MoreMenu.tsx +54 -0
  74. package/UI/Components/MoreMenu/MoreMenuItem.tsx +37 -0
  75. package/UI/Components/MoreMenu/MoreMenuSection.tsx +22 -0
  76. package/UI/Components/Toggle/Toggle.tsx +14 -0
  77. package/build/dist/Models/DatabaseModels/Alert.js +1028 -0
  78. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -0
  79. package/build/dist/Models/DatabaseModels/AlertCustomField.js +360 -0
  80. package/build/dist/Models/DatabaseModels/AlertCustomField.js.map +1 -0
  81. package/build/dist/Models/DatabaseModels/AlertInternalNote.js +391 -0
  82. package/build/dist/Models/DatabaseModels/AlertInternalNote.js.map +1 -0
  83. package/build/dist/Models/DatabaseModels/AlertNoteTemplate.js +372 -0
  84. package/build/dist/Models/DatabaseModels/AlertNoteTemplate.js.map +1 -0
  85. package/build/dist/Models/DatabaseModels/AlertOwnerTeam.js +434 -0
  86. package/build/dist/Models/DatabaseModels/AlertOwnerTeam.js.map +1 -0
  87. package/build/dist/Models/DatabaseModels/AlertOwnerUser.js +433 -0
  88. package/build/dist/Models/DatabaseModels/AlertOwnerUser.js.map +1 -0
  89. package/build/dist/Models/DatabaseModels/AlertSeverity.js +450 -0
  90. package/build/dist/Models/DatabaseModels/AlertSeverity.js.map +1 -0
  91. package/build/dist/Models/DatabaseModels/AlertState.js +530 -0
  92. package/build/dist/Models/DatabaseModels/AlertState.js.map +1 -0
  93. package/build/dist/Models/DatabaseModels/AlertStateTimeline.js +548 -0
  94. package/build/dist/Models/DatabaseModels/AlertStateTimeline.js.map +1 -0
  95. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  96. package/build/dist/Models/DatabaseModels/Index.js +29 -9
  97. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  98. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js +55 -0
  99. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyExecutionLog.js.map +1 -1
  100. package/build/dist/Models/DatabaseModels/TableView.js +475 -0
  101. package/build/dist/Models/DatabaseModels/TableView.js.map +1 -0
  102. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1727894983857-MigrationName.js +24 -0
  103. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1727894983857-MigrationName.js.map +1 -0
  104. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1727906598804-MigrationName.js +198 -0
  105. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1727906598804-MigrationName.js.map +1 -0
  106. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  107. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  108. package/build/dist/Server/Infrastructure/Semaphore.js +2 -2
  109. package/build/dist/Server/Infrastructure/Semaphore.js.map +1 -1
  110. package/build/dist/Server/Services/AlertCustomFieldService.js +9 -0
  111. package/build/dist/Server/Services/AlertCustomFieldService.js.map +1 -0
  112. package/build/dist/Server/Services/AlertInternalNoteService.js +9 -0
  113. package/build/dist/Server/Services/AlertInternalNoteService.js.map +1 -0
  114. package/build/dist/Server/Services/AlertNoteTemplateService.js +9 -0
  115. package/build/dist/Server/Services/AlertNoteTemplateService.js.map +1 -0
  116. package/build/dist/Server/Services/AlertOwnerTeamService.js +9 -0
  117. package/build/dist/Server/Services/AlertOwnerTeamService.js.map +1 -0
  118. package/build/dist/Server/Services/AlertOwnerUserService.js +9 -0
  119. package/build/dist/Server/Services/AlertOwnerUserService.js.map +1 -0
  120. package/build/dist/Server/Services/AlertService.js +418 -0
  121. package/build/dist/Server/Services/AlertService.js.map +1 -0
  122. package/build/dist/Server/Services/AlertSeverityService.js +108 -0
  123. package/build/dist/Server/Services/AlertSeverityService.js.map +1 -0
  124. package/build/dist/Server/Services/AlertStateService.js +158 -0
  125. package/build/dist/Server/Services/AlertStateService.js.map +1 -0
  126. package/build/dist/Server/Services/AlertStateTimelineService.js +267 -0
  127. package/build/dist/Server/Services/AlertStateTimelineService.js.map +1 -0
  128. package/build/dist/Server/Services/CallLogService.js +4 -1
  129. package/build/dist/Server/Services/CallLogService.js.map +1 -1
  130. package/build/dist/Server/Services/DatabaseService.js +9 -9
  131. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  132. package/build/dist/Server/Services/EmailLogService.js +4 -1
  133. package/build/dist/Server/Services/EmailLogService.js.map +1 -1
  134. package/build/dist/Server/Services/IncidentService.js +4 -1
  135. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  136. package/build/dist/Server/Services/IncidentStateTimelineService.js +4 -1
  137. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  138. package/build/dist/Server/Services/Index.js +21 -0
  139. package/build/dist/Server/Services/Index.js.map +1 -1
  140. package/build/dist/Server/Services/MonitorStatusTimelineService.js +5 -1
  141. package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
  142. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js +4 -1
  143. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js.map +1 -1
  144. package/build/dist/Server/Services/OnCallDutyPolicyService.js +8 -0
  145. package/build/dist/Server/Services/OnCallDutyPolicyService.js.map +1 -1
  146. package/build/dist/Server/Services/ProjectService.js +80 -1
  147. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  148. package/build/dist/Server/Services/ScheduledMaintenanceService.js +4 -1
  149. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  150. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +4 -1
  151. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
  152. package/build/dist/Server/Services/ShortLinkService.js +4 -1
  153. package/build/dist/Server/Services/ShortLinkService.js.map +1 -1
  154. package/build/dist/Server/Services/SmsLogService.js +4 -1
  155. package/build/dist/Server/Services/SmsLogService.js.map +1 -1
  156. package/build/dist/Server/Services/TableViewService.js +9 -0
  157. package/build/dist/Server/Services/TableViewService.js.map +1 -0
  158. package/build/dist/Server/Services/TelemetryUsageBillingService.js +4 -1
  159. package/build/dist/Server/Services/TelemetryUsageBillingService.js.map +1 -1
  160. package/build/dist/Server/Services/UserNotificationSettingService.js +49 -0
  161. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  162. package/build/dist/Server/Services/UserOnCallLogService.js +4 -1
  163. package/build/dist/Server/Services/UserOnCallLogService.js.map +1 -1
  164. package/build/dist/Server/Services/WorkflowLogService.js +4 -1
  165. package/build/dist/Server/Services/WorkflowLogService.js.map +1 -1
  166. package/build/dist/Server/Types/Workflow/Components/API/Post.js +14 -0
  167. package/build/dist/Server/Types/Workflow/Components/API/Post.js.map +1 -1
  168. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +177 -0
  169. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -0
  170. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +187 -0
  171. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -0
  172. package/build/dist/Server/Utils/Monitor/MonitorResource.js +65 -254
  173. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  174. package/build/dist/Server/Utils/Monitor/MonitorStatusTimeline.js +79 -0
  175. package/build/dist/Server/Utils/Monitor/MonitorStatusTimeline.js.map +1 -0
  176. package/build/dist/Server/Utils/Realtime.js +3 -28
  177. package/build/dist/Server/Utils/Realtime.js.map +1 -1
  178. package/build/dist/Types/Email/EmailTemplateType.js +4 -0
  179. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  180. package/build/dist/Types/Icon/IconProp.js +1 -0
  181. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  182. package/build/dist/Types/Monitor/CriteriaAlert.js +2 -0
  183. package/build/dist/Types/Monitor/CriteriaAlert.js.map +1 -0
  184. package/build/dist/Types/Monitor/MonitorCriteria.js +1 -0
  185. package/build/dist/Types/Monitor/MonitorCriteria.js.map +1 -1
  186. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js +120 -1
  187. package/build/dist/Types/Monitor/MonitorCriteriaInstance.js.map +1 -1
  188. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  189. package/build/dist/Types/Monitor/MonitorSteps.js.map +1 -1
  190. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +5 -0
  191. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
  192. package/build/dist/Types/Permission.js +323 -1
  193. package/build/dist/Types/Permission.js.map +1 -1
  194. package/build/dist/Types/Telemetry/TelemetryQuery.js +2 -0
  195. package/build/dist/Types/Telemetry/TelemetryQuery.js.map +1 -0
  196. package/build/dist/Types/UserNotification/UserNotificationEventType.js +1 -0
  197. package/build/dist/Types/UserNotification/UserNotificationEventType.js.map +1 -1
  198. package/build/dist/UI/Components/Card/Card.js +3 -2
  199. package/build/dist/UI/Components/Card/Card.js.map +1 -1
  200. package/build/dist/UI/Components/Card/CardButtons/MoreButton.js +12 -0
  201. package/build/dist/UI/Components/Card/CardButtons/MoreButton.js.map +1 -0
  202. package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js +53 -9
  203. package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js.map +1 -1
  204. package/build/dist/UI/Components/HeaderAlert/HeaderAlertGroup.js +25 -0
  205. package/build/dist/UI/Components/HeaderAlert/HeaderAlertGroup.js.map +1 -0
  206. package/build/dist/UI/Components/HeaderAlert/HeaderModelAlert.js +1 -1
  207. package/build/dist/UI/Components/HeaderAlert/HeaderModelAlert.js.map +1 -1
  208. package/build/dist/UI/Components/Icon/Icon.js +3 -0
  209. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  210. package/build/dist/UI/Components/ModelDetail/CardModelDetail.js.map +1 -1
  211. package/build/dist/UI/Components/ModelTable/BaseModelTable.js +46 -0
  212. package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
  213. package/build/dist/UI/Components/ModelTable/TableView.js +183 -0
  214. package/build/dist/UI/Components/ModelTable/TableView.js.map +1 -0
  215. package/build/dist/UI/Components/MoreMenu/Divider.js +6 -0
  216. package/build/dist/UI/Components/MoreMenu/Divider.js.map +1 -0
  217. package/build/dist/UI/Components/MoreMenu/MoreMenu.js +19 -0
  218. package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -0
  219. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js +13 -0
  220. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js.map +1 -0
  221. package/build/dist/UI/Components/MoreMenu/MoreMenuSection.js +10 -0
  222. package/build/dist/UI/Components/MoreMenu/MoreMenuSection.js.map +1 -0
  223. package/build/dist/UI/Components/Toggle/Toggle.js +7 -1
  224. package/build/dist/UI/Components/Toggle/Toggle.js.map +1 -1
  225. package/package.json +2 -2
@@ -0,0 +1,1010 @@
1
+ import AlertSeverity from "./AlertSeverity";
2
+ import AlertState from "./AlertState";
3
+ import Label from "./Label";
4
+ import Monitor from "./Monitor";
5
+ import MonitorStatus from "./MonitorStatus";
6
+ import OnCallDutyPolicy from "./OnCallDutyPolicy";
7
+ import Probe from "./Probe";
8
+ import Project from "./Project";
9
+ import User from "./User";
10
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
11
+ import Route from "../../Types/API/Route";
12
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
13
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
14
+ import AccessControlColumn from "../../Types/Database/AccessControlColumn";
15
+ import ColumnLength from "../../Types/Database/ColumnLength";
16
+ import ColumnType from "../../Types/Database/ColumnType";
17
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
18
+ import EnableDocumentation from "../../Types/Database/EnableDocumentation";
19
+ import EnableWorkflow from "../../Types/Database/EnableWorkflow";
20
+ import MultiTenentQueryAllowed from "../../Types/Database/MultiTenentQueryAllowed";
21
+ import TableColumn from "../../Types/Database/TableColumn";
22
+ import TableColumnType from "../../Types/Database/TableColumnType";
23
+ import TableMetadata from "../../Types/Database/TableMetadata";
24
+ import TenantColumn from "../../Types/Database/TenantColumn";
25
+ import IconProp from "../../Types/Icon/IconProp";
26
+ import { JSONObject } from "../../Types/JSON";
27
+ import ObjectID from "../../Types/ObjectID";
28
+ import Permission from "../../Types/Permission";
29
+ import {
30
+ Column,
31
+ Entity,
32
+ Index,
33
+ JoinColumn,
34
+ JoinTable,
35
+ ManyToMany,
36
+ ManyToOne,
37
+ } from "typeorm";
38
+ import { TelemetryQuery } from "../../Types/Telemetry/TelemetryQuery";
39
+
40
+ @EnableDocumentation()
41
+ @AccessControlColumn("labels")
42
+ @MultiTenentQueryAllowed(true)
43
+ @TenantColumn("projectId")
44
+ @TableAccessControl({
45
+ create: [
46
+ Permission.ProjectOwner,
47
+ Permission.ProjectAdmin,
48
+ Permission.ProjectMember,
49
+ Permission.CreateAlert,
50
+ ],
51
+ read: [
52
+ Permission.ProjectOwner,
53
+ Permission.ProjectAdmin,
54
+ Permission.ProjectMember,
55
+ Permission.ReadAlert,
56
+ ],
57
+ delete: [
58
+ Permission.ProjectOwner,
59
+ Permission.ProjectAdmin,
60
+ Permission.ProjectMember,
61
+ Permission.DeleteAlert,
62
+ ],
63
+ update: [
64
+ Permission.ProjectOwner,
65
+ Permission.ProjectAdmin,
66
+ Permission.ProjectMember,
67
+ Permission.EditAlert,
68
+ ],
69
+ })
70
+ @CrudApiEndpoint(new Route("/alert"))
71
+ @Entity({
72
+ name: "Alert",
73
+ })
74
+ @EnableWorkflow({
75
+ create: true,
76
+ delete: true,
77
+ update: true,
78
+ read: true,
79
+ })
80
+ @TableMetadata({
81
+ tableName: "Alert",
82
+ singularName: "Alert",
83
+ pluralName: "Alerts",
84
+ icon: IconProp.Alert,
85
+ tableDescription: "Manage alerts for your project",
86
+ enableRealtimeEventsOn: {
87
+ create: true,
88
+ update: true,
89
+ delete: true,
90
+ },
91
+ })
92
+ export default class Alert extends BaseModel {
93
+ @ColumnAccessControl({
94
+ create: [
95
+ Permission.ProjectOwner,
96
+ Permission.ProjectAdmin,
97
+ Permission.ProjectMember,
98
+ Permission.CreateAlert,
99
+ ],
100
+ read: [
101
+ Permission.ProjectOwner,
102
+ Permission.ProjectAdmin,
103
+ Permission.ProjectMember,
104
+ Permission.ReadAlert,
105
+ ],
106
+ update: [],
107
+ })
108
+ @TableColumn({
109
+ manyToOneRelationColumn: "projectId",
110
+ type: TableColumnType.Entity,
111
+ modelType: Project,
112
+ title: "Project",
113
+ description: "Relation to Project Resource in which this object belongs",
114
+ })
115
+ @ManyToOne(
116
+ () => {
117
+ return Project;
118
+ },
119
+ {
120
+ eager: false,
121
+ nullable: true,
122
+ onDelete: "CASCADE",
123
+ orphanedRowAction: "nullify",
124
+ },
125
+ )
126
+ @JoinColumn({ name: "projectId" })
127
+ public project?: Project = undefined;
128
+
129
+ @ColumnAccessControl({
130
+ create: [
131
+ Permission.ProjectOwner,
132
+ Permission.ProjectAdmin,
133
+ Permission.ProjectMember,
134
+ Permission.CreateAlert,
135
+ ],
136
+ read: [
137
+ Permission.ProjectOwner,
138
+ Permission.ProjectAdmin,
139
+ Permission.ProjectMember,
140
+ Permission.ReadAlert,
141
+ ],
142
+ update: [],
143
+ })
144
+ @Index()
145
+ @TableColumn({
146
+ type: TableColumnType.ObjectID,
147
+ required: true,
148
+ canReadOnRelationQuery: true,
149
+ title: "Project ID",
150
+ description: "ID of your OneUptime Project in which this object belongs",
151
+ })
152
+ @Column({
153
+ type: ColumnType.ObjectID,
154
+ nullable: false,
155
+ transformer: ObjectID.getDatabaseTransformer(),
156
+ })
157
+ public projectId?: ObjectID = undefined;
158
+
159
+ @ColumnAccessControl({
160
+ create: [
161
+ Permission.ProjectOwner,
162
+ Permission.ProjectAdmin,
163
+ Permission.ProjectMember,
164
+ Permission.CreateAlert,
165
+ ],
166
+ read: [
167
+ Permission.ProjectOwner,
168
+ Permission.ProjectAdmin,
169
+ Permission.ProjectMember,
170
+ Permission.ReadAlert,
171
+ ],
172
+ update: [
173
+ Permission.ProjectOwner,
174
+ Permission.ProjectAdmin,
175
+ Permission.ProjectMember,
176
+ Permission.EditAlert,
177
+ ],
178
+ })
179
+ @Index()
180
+ @TableColumn({
181
+ required: true,
182
+ type: TableColumnType.LongText,
183
+ canReadOnRelationQuery: true,
184
+ title: "Title",
185
+ description: "Title of this alert",
186
+ })
187
+ @Column({
188
+ nullable: false,
189
+ type: ColumnType.LongText,
190
+ length: ColumnLength.LongText,
191
+ })
192
+ public title?: string = undefined;
193
+
194
+ @ColumnAccessControl({
195
+ create: [
196
+ Permission.ProjectOwner,
197
+ Permission.ProjectAdmin,
198
+ Permission.ProjectMember,
199
+ Permission.CreateAlert,
200
+ ],
201
+ read: [
202
+ Permission.ProjectOwner,
203
+ Permission.ProjectAdmin,
204
+ Permission.ProjectMember,
205
+ Permission.ReadAlert,
206
+ ],
207
+ update: [
208
+ Permission.ProjectOwner,
209
+ Permission.ProjectAdmin,
210
+ Permission.ProjectMember,
211
+ Permission.EditAlert,
212
+ ],
213
+ })
214
+ @TableColumn({
215
+ required: false,
216
+ type: TableColumnType.Markdown,
217
+ title: "Description",
218
+ description:
219
+ "Short description of this alert. This is in markdown and will be visible on the status page.",
220
+ })
221
+ @Column({
222
+ nullable: true,
223
+ type: ColumnType.Markdown,
224
+ })
225
+ public description?: string = undefined;
226
+
227
+ @ColumnAccessControl({
228
+ create: [
229
+ Permission.ProjectOwner,
230
+ Permission.ProjectAdmin,
231
+ Permission.ProjectMember,
232
+ Permission.CreateAlert,
233
+ ],
234
+ read: [
235
+ Permission.ProjectOwner,
236
+ Permission.ProjectAdmin,
237
+ Permission.ProjectMember,
238
+ Permission.ReadAlert,
239
+ ],
240
+ update: [],
241
+ })
242
+ @TableColumn({
243
+ manyToOneRelationColumn: "createdByUserId",
244
+ type: TableColumnType.Entity,
245
+ modelType: User,
246
+ title: "Created by User",
247
+ description:
248
+ "Relation to User who created this object (if this object was created by a User)",
249
+ })
250
+ @ManyToOne(
251
+ () => {
252
+ return User;
253
+ },
254
+ {
255
+ eager: false,
256
+ nullable: true,
257
+ onDelete: "SET NULL",
258
+ orphanedRowAction: "nullify",
259
+ },
260
+ )
261
+ @JoinColumn({ name: "createdByUserId" })
262
+ public createdByUser?: User = undefined;
263
+
264
+ @ColumnAccessControl({
265
+ create: [
266
+ Permission.ProjectOwner,
267
+ Permission.ProjectAdmin,
268
+ Permission.ProjectMember,
269
+ Permission.CreateAlert,
270
+ ],
271
+ read: [
272
+ Permission.ProjectOwner,
273
+ Permission.ProjectAdmin,
274
+ Permission.ProjectMember,
275
+ Permission.ReadAlert,
276
+ ],
277
+ update: [],
278
+ })
279
+ @TableColumn({
280
+ type: TableColumnType.ObjectID,
281
+ title: "Created by User ID",
282
+ description:
283
+ "User ID who created this object (if this object was created by a User)",
284
+ })
285
+ @Column({
286
+ type: ColumnType.ObjectID,
287
+ nullable: true,
288
+ transformer: ObjectID.getDatabaseTransformer(),
289
+ })
290
+ public createdByUserId?: ObjectID = undefined;
291
+
292
+ @ColumnAccessControl({
293
+ create: [],
294
+ read: [],
295
+ update: [],
296
+ })
297
+ @TableColumn({
298
+ manyToOneRelationColumn: "deletedByUserId",
299
+ type: TableColumnType.Entity,
300
+ title: "Deleted by User",
301
+ description:
302
+ "Relation to User who deleted this object (if this object was deleted by a User)",
303
+ })
304
+ @ManyToOne(
305
+ () => {
306
+ return User;
307
+ },
308
+ {
309
+ cascade: false,
310
+ eager: false,
311
+ nullable: true,
312
+ onDelete: "SET NULL",
313
+ orphanedRowAction: "nullify",
314
+ },
315
+ )
316
+ @JoinColumn({ name: "deletedByUserId" })
317
+ public deletedByUser?: User = undefined;
318
+
319
+ @ColumnAccessControl({
320
+ create: [],
321
+ read: [],
322
+ update: [],
323
+ })
324
+ @TableColumn({
325
+ type: TableColumnType.ObjectID,
326
+ title: "Deleted by User ID",
327
+ description:
328
+ "User ID who deleted this object (if this object was deleted by a User)",
329
+ })
330
+ @Column({
331
+ type: ColumnType.ObjectID,
332
+ nullable: true,
333
+ transformer: ObjectID.getDatabaseTransformer(),
334
+ })
335
+ public deletedByUserId?: ObjectID = undefined;
336
+
337
+ // monitor this alert was created for.
338
+
339
+ @ColumnAccessControl({
340
+ create: [
341
+ Permission.ProjectOwner,
342
+ Permission.ProjectAdmin,
343
+ Permission.ProjectMember,
344
+ Permission.CreateAlert,
345
+ ],
346
+ read: [
347
+ Permission.ProjectOwner,
348
+ Permission.ProjectAdmin,
349
+ Permission.ProjectMember,
350
+ Permission.ReadAlert,
351
+ ],
352
+ update: [
353
+ Permission.ProjectOwner,
354
+ Permission.ProjectAdmin,
355
+ Permission.ProjectMember,
356
+ Permission.EditAlert,
357
+ ],
358
+ })
359
+ @TableColumn({
360
+ manyToOneRelationColumn: "monitorId",
361
+ type: TableColumnType.Entity,
362
+ modelType: Monitor,
363
+ title: "Monitor",
364
+ description: "Relation to monitor this alert belongs to",
365
+ })
366
+ @ManyToOne(
367
+ () => {
368
+ return Monitor;
369
+ },
370
+ {
371
+ cascade: false,
372
+ eager: false,
373
+ nullable: true,
374
+ onDelete: "SET NULL",
375
+ orphanedRowAction: "nullify",
376
+ },
377
+ )
378
+ @JoinColumn({ name: "monitorId" })
379
+ public monitor?: Monitor = undefined;
380
+
381
+ @ColumnAccessControl({
382
+ create: [
383
+ Permission.ProjectOwner,
384
+ Permission.ProjectAdmin,
385
+ Permission.ProjectMember,
386
+ Permission.CreateAlert,
387
+ ],
388
+ read: [
389
+ Permission.ProjectOwner,
390
+ Permission.ProjectAdmin,
391
+ Permission.ProjectMember,
392
+ Permission.ReadAlert,
393
+ ],
394
+ update: [
395
+ Permission.ProjectOwner,
396
+ Permission.ProjectAdmin,
397
+ Permission.ProjectMember,
398
+ Permission.EditAlert,
399
+ ],
400
+ })
401
+ @TableColumn({
402
+ type: TableColumnType.ObjectID,
403
+ title: "Deleted by User ID",
404
+ description:
405
+ "User ID who deleted this object (if this object was deleted by a User)",
406
+ })
407
+ @Column({
408
+ type: ColumnType.ObjectID,
409
+ nullable: true,
410
+ transformer: ObjectID.getDatabaseTransformer(),
411
+ })
412
+ public monitorId?: ObjectID = undefined;
413
+
414
+ @ColumnAccessControl({
415
+ create: [
416
+ Permission.ProjectOwner,
417
+ Permission.ProjectAdmin,
418
+ Permission.ProjectMember,
419
+ Permission.CreateAlert,
420
+ ],
421
+ read: [
422
+ Permission.ProjectOwner,
423
+ Permission.ProjectAdmin,
424
+ Permission.ProjectMember,
425
+ Permission.ReadAlert,
426
+ ],
427
+ update: [
428
+ Permission.ProjectOwner,
429
+ Permission.ProjectAdmin,
430
+ Permission.ProjectMember,
431
+ Permission.EditAlert,
432
+ ],
433
+ })
434
+ @TableColumn({
435
+ required: false,
436
+ type: TableColumnType.EntityArray,
437
+ modelType: Monitor,
438
+ title: "On-Call Duty Policies",
439
+ description: "List of on-call duty policy affected by this alert.",
440
+ })
441
+ @ManyToMany(
442
+ () => {
443
+ return OnCallDutyPolicy;
444
+ },
445
+ { eager: false },
446
+ )
447
+ @JoinTable({
448
+ name: "AlertOnCallDutyPolicy",
449
+ inverseJoinColumn: {
450
+ name: "monitorId",
451
+ referencedColumnName: "_id",
452
+ },
453
+ joinColumn: {
454
+ name: "onCallDutyPolicyId",
455
+ referencedColumnName: "_id",
456
+ },
457
+ })
458
+ public onCallDutyPolicies?: Array<OnCallDutyPolicy> = undefined; // monitors affected by this alert.
459
+
460
+ @ColumnAccessControl({
461
+ create: [
462
+ Permission.ProjectOwner,
463
+ Permission.ProjectAdmin,
464
+ Permission.ProjectMember,
465
+ Permission.CreateAlert,
466
+ ],
467
+ read: [
468
+ Permission.ProjectOwner,
469
+ Permission.ProjectAdmin,
470
+ Permission.ProjectMember,
471
+ Permission.ReadAlert,
472
+ ],
473
+ update: [
474
+ Permission.ProjectOwner,
475
+ Permission.ProjectAdmin,
476
+ Permission.ProjectMember,
477
+ Permission.EditAlert,
478
+ ],
479
+ })
480
+ @TableColumn({
481
+ required: false,
482
+ type: TableColumnType.EntityArray,
483
+ modelType: Label,
484
+ title: "Labels",
485
+ description:
486
+ "Relation to Labels Array where this object is categorized in.",
487
+ })
488
+ @ManyToMany(
489
+ () => {
490
+ return Label;
491
+ },
492
+ { eager: false },
493
+ )
494
+ @JoinTable({
495
+ name: "AlertLabel",
496
+ inverseJoinColumn: {
497
+ name: "labelId",
498
+ referencedColumnName: "_id",
499
+ },
500
+ joinColumn: {
501
+ name: "alertId",
502
+ referencedColumnName: "_id",
503
+ },
504
+ })
505
+ public labels?: Array<Label> = undefined;
506
+
507
+ @ColumnAccessControl({
508
+ create: [
509
+ Permission.ProjectOwner,
510
+ Permission.ProjectAdmin,
511
+ Permission.ProjectMember,
512
+ Permission.CreateAlert,
513
+ ],
514
+ read: [
515
+ Permission.ProjectOwner,
516
+ Permission.ProjectAdmin,
517
+ Permission.ProjectMember,
518
+ Permission.ReadAlert,
519
+ ],
520
+ update: [
521
+ Permission.ProjectOwner,
522
+ Permission.ProjectAdmin,
523
+ Permission.ProjectMember,
524
+ Permission.EditAlert,
525
+ ],
526
+ })
527
+ @TableColumn({
528
+ manyToOneRelationColumn: "currentAlertStateId",
529
+ type: TableColumnType.Entity,
530
+ modelType: AlertState,
531
+ title: "Current Alert State",
532
+ description:
533
+ "Current state of this alert. Is the alert acknowledged? or resolved?. This is related to Alert State",
534
+ })
535
+ @ManyToOne(
536
+ () => {
537
+ return AlertState;
538
+ },
539
+ {
540
+ eager: false,
541
+ nullable: true,
542
+ orphanedRowAction: "nullify",
543
+ },
544
+ )
545
+ @JoinColumn({ name: "currentAlertStateId" })
546
+ public currentAlertState?: AlertState = undefined;
547
+
548
+ @ColumnAccessControl({
549
+ create: [
550
+ Permission.ProjectOwner,
551
+ Permission.ProjectAdmin,
552
+ Permission.ProjectMember,
553
+ Permission.CreateAlert,
554
+ ],
555
+ read: [
556
+ Permission.ProjectOwner,
557
+ Permission.ProjectAdmin,
558
+ Permission.ProjectMember,
559
+ Permission.ReadAlert,
560
+ ],
561
+ update: [
562
+ Permission.ProjectOwner,
563
+ Permission.ProjectAdmin,
564
+ Permission.ProjectMember,
565
+ Permission.EditAlert,
566
+ ],
567
+ })
568
+ @Index()
569
+ @TableColumn({
570
+ type: TableColumnType.ObjectID,
571
+ required: true,
572
+ title: "Current Alert State ID",
573
+ description: "Current Alert State ID",
574
+ })
575
+ @Column({
576
+ type: ColumnType.ObjectID,
577
+ nullable: false,
578
+ transformer: ObjectID.getDatabaseTransformer(),
579
+ })
580
+ public currentAlertStateId?: ObjectID = undefined;
581
+
582
+ @ColumnAccessControl({
583
+ create: [
584
+ Permission.ProjectOwner,
585
+ Permission.ProjectAdmin,
586
+ Permission.ProjectMember,
587
+ Permission.CreateAlert,
588
+ ],
589
+ read: [
590
+ Permission.ProjectOwner,
591
+ Permission.ProjectAdmin,
592
+ Permission.ProjectMember,
593
+ Permission.ReadAlert,
594
+ ],
595
+ update: [
596
+ Permission.ProjectOwner,
597
+ Permission.ProjectAdmin,
598
+ Permission.ProjectMember,
599
+ Permission.EditAlert,
600
+ ],
601
+ })
602
+ @TableColumn({
603
+ manyToOneRelationColumn: "alertSeverityId",
604
+ type: TableColumnType.Entity,
605
+ modelType: AlertSeverity,
606
+ title: "Alert Severity",
607
+ description:
608
+ "How severe is this alert. Is it critical? or a minor alert?. This is related to Alert Severity.",
609
+ })
610
+ @ManyToOne(
611
+ () => {
612
+ return AlertSeverity;
613
+ },
614
+ {
615
+ eager: false,
616
+ nullable: true,
617
+ orphanedRowAction: "nullify",
618
+ },
619
+ )
620
+ @JoinColumn({ name: "alertSeverityId" })
621
+ public alertSeverity?: AlertSeverity = undefined;
622
+
623
+ @ColumnAccessControl({
624
+ create: [
625
+ Permission.ProjectOwner,
626
+ Permission.ProjectAdmin,
627
+ Permission.ProjectMember,
628
+ Permission.CreateAlert,
629
+ ],
630
+ read: [
631
+ Permission.ProjectOwner,
632
+ Permission.ProjectAdmin,
633
+ Permission.ProjectMember,
634
+ Permission.ReadAlert,
635
+ ],
636
+ update: [
637
+ Permission.ProjectOwner,
638
+ Permission.ProjectAdmin,
639
+ Permission.ProjectMember,
640
+ Permission.EditAlert,
641
+ ],
642
+ })
643
+ @Index()
644
+ @TableColumn({
645
+ type: TableColumnType.ObjectID,
646
+ required: true,
647
+ title: "Alert Severity ID",
648
+ description: "Alert Severity ID",
649
+ })
650
+ @Column({
651
+ type: ColumnType.ObjectID,
652
+ nullable: false,
653
+ transformer: ObjectID.getDatabaseTransformer(),
654
+ })
655
+ public alertSeverityId?: ObjectID = undefined;
656
+
657
+ @ColumnAccessControl({
658
+ create: [
659
+ Permission.ProjectOwner,
660
+ Permission.ProjectAdmin,
661
+ Permission.ProjectMember,
662
+ Permission.CreateAlert,
663
+ ],
664
+ read: [
665
+ Permission.ProjectOwner,
666
+ Permission.ProjectAdmin,
667
+ Permission.ProjectMember,
668
+ Permission.ReadAlert,
669
+ ],
670
+ update: [],
671
+ })
672
+ @TableColumn({
673
+ manyToOneRelationColumn: "monitorStatusWhenThisAlertWasCreatedId",
674
+ type: TableColumnType.Entity,
675
+ modelType: AlertState,
676
+ title: "Monitor status when this alert was created",
677
+ description: "Monitor status when this alert was created",
678
+ })
679
+ @ManyToOne(
680
+ () => {
681
+ return MonitorStatus;
682
+ },
683
+ {
684
+ eager: false,
685
+ nullable: true,
686
+ orphanedRowAction: "nullify",
687
+ },
688
+ )
689
+ @JoinColumn({ name: "monitorStatusWhenThisAlertWasCreatedId" })
690
+ public monitorStatusWhenThisAlertWasCreated?: MonitorStatus = undefined;
691
+
692
+ @ColumnAccessControl({
693
+ create: [
694
+ Permission.ProjectOwner,
695
+ Permission.ProjectAdmin,
696
+ Permission.ProjectMember,
697
+ Permission.CreateAlert,
698
+ ],
699
+ read: [
700
+ Permission.ProjectOwner,
701
+ Permission.ProjectAdmin,
702
+ Permission.ProjectMember,
703
+ Permission.ReadAlert,
704
+ ],
705
+ update: [
706
+ Permission.ProjectOwner,
707
+ Permission.ProjectAdmin,
708
+ Permission.ProjectMember,
709
+ Permission.EditAlert,
710
+ ],
711
+ })
712
+ @Index()
713
+ @TableColumn({
714
+ type: TableColumnType.ObjectID,
715
+ required: false,
716
+ title: "Monitor Status ID when this alert was created",
717
+ description: "Monitor Status ID when this alert was created",
718
+ })
719
+ @Column({
720
+ type: ColumnType.ObjectID,
721
+ nullable: true,
722
+ transformer: ObjectID.getDatabaseTransformer(),
723
+ })
724
+ public monitorStatusWhenThisAlertWasCreatedId?: ObjectID = undefined;
725
+
726
+ @ColumnAccessControl({
727
+ create: [
728
+ Permission.ProjectOwner,
729
+ Permission.ProjectAdmin,
730
+ Permission.ProjectMember,
731
+ Permission.CreateAlert,
732
+ ],
733
+ read: [
734
+ Permission.ProjectOwner,
735
+ Permission.ProjectAdmin,
736
+ Permission.ProjectMember,
737
+ Permission.ReadAlert,
738
+ ],
739
+ update: [
740
+ Permission.ProjectOwner,
741
+ Permission.ProjectAdmin,
742
+ Permission.ProjectMember,
743
+ Permission.EditAlert,
744
+ ],
745
+ })
746
+ @TableColumn({
747
+ isDefaultValueColumn: false,
748
+ required: false,
749
+ type: TableColumnType.JSON,
750
+ title: "Custom Fields",
751
+ description: "Custom Fields on this resource.",
752
+ })
753
+ @Column({
754
+ type: ColumnType.JSON,
755
+ nullable: true,
756
+ })
757
+ public customFields?: JSONObject = undefined;
758
+
759
+ @ColumnAccessControl({
760
+ create: [
761
+ Permission.ProjectOwner,
762
+ Permission.ProjectAdmin,
763
+ Permission.ProjectMember,
764
+ Permission.CreateAlert,
765
+ ],
766
+ read: [
767
+ Permission.ProjectOwner,
768
+ Permission.ProjectAdmin,
769
+ Permission.ProjectMember,
770
+ Permission.ReadAlert,
771
+ ],
772
+ update: [],
773
+ })
774
+ @Index()
775
+ @TableColumn({
776
+ type: TableColumnType.Boolean,
777
+ required: true,
778
+ isDefaultValueColumn: true,
779
+ title: "Are Owners Notified Of Alert Creation?",
780
+ description: "Are owners notified of when this alert is created?",
781
+ })
782
+ @Column({
783
+ type: ColumnType.Boolean,
784
+ nullable: false,
785
+ default: false,
786
+ })
787
+ public isOwnerNotifiedOfAlertCreation?: boolean = undefined;
788
+
789
+ @ColumnAccessControl({
790
+ create: [
791
+ Permission.ProjectOwner,
792
+ Permission.ProjectAdmin,
793
+ Permission.ProjectMember,
794
+ Permission.CreateAlert,
795
+ ],
796
+ read: [
797
+ Permission.ProjectOwner,
798
+ Permission.ProjectAdmin,
799
+ Permission.ProjectMember,
800
+ Permission.ReadAlert,
801
+ ],
802
+ update: [],
803
+ })
804
+ @Index()
805
+ @TableColumn({
806
+ type: TableColumnType.Markdown,
807
+ required: false,
808
+ isDefaultValueColumn: false,
809
+ title: "Root Cause",
810
+ description: "What is the root cause of this alert?",
811
+ })
812
+ @Column({
813
+ type: ColumnType.Markdown,
814
+ nullable: true,
815
+ })
816
+ public rootCause?: string = undefined;
817
+
818
+ @ColumnAccessControl({
819
+ create: [],
820
+ read: [
821
+ Permission.ProjectOwner,
822
+ Permission.ProjectAdmin,
823
+ Permission.ProjectMember,
824
+ Permission.ReadAlert,
825
+ ],
826
+ update: [],
827
+ })
828
+ @TableColumn({
829
+ isDefaultValueColumn: false,
830
+ required: false,
831
+ type: TableColumnType.JSON,
832
+ })
833
+ @Column({
834
+ type: ColumnType.JSON,
835
+ nullable: true,
836
+ unique: false,
837
+ })
838
+ public createdStateLog?: JSONObject = undefined;
839
+
840
+ @ColumnAccessControl({
841
+ create: [],
842
+ read: [
843
+ Permission.ProjectOwner,
844
+ Permission.ProjectAdmin,
845
+ Permission.ProjectMember,
846
+ Permission.ReadAlert,
847
+ ],
848
+ update: [],
849
+ })
850
+ @Index()
851
+ @TableColumn({
852
+ type: TableColumnType.LongText,
853
+ required: false,
854
+ isDefaultValueColumn: false,
855
+ title: "Created Criteria ID",
856
+ description:
857
+ "If this alert was created by a Probe, this is the ID of the criteria that created it.",
858
+ })
859
+ @Column({
860
+ type: ColumnType.LongText,
861
+ nullable: true,
862
+ })
863
+ public createdCriteriaId?: string = undefined;
864
+
865
+ @ColumnAccessControl({
866
+ create: [],
867
+ read: [
868
+ Permission.ProjectOwner,
869
+ Permission.ProjectAdmin,
870
+ Permission.ProjectMember,
871
+ Permission.ReadAlert,
872
+ ],
873
+ update: [],
874
+ })
875
+ @TableColumn({
876
+ manyToOneRelationColumn: "createdByProbeId",
877
+ type: TableColumnType.Entity,
878
+ modelType: Probe,
879
+ title: "Created By Probe",
880
+ description:
881
+ "If this alert was created by a Probe, this is the probe that created it.",
882
+ })
883
+ @ManyToOne(
884
+ () => {
885
+ return Probe;
886
+ },
887
+ {
888
+ eager: false,
889
+ nullable: true,
890
+ onDelete: "SET NULL",
891
+ orphanedRowAction: "nullify",
892
+ },
893
+ )
894
+ @JoinColumn({ name: "createdByProbeId" })
895
+ public createdByProbe?: Probe = undefined;
896
+
897
+ @ColumnAccessControl({
898
+ create: [],
899
+ read: [
900
+ Permission.ProjectOwner,
901
+ Permission.ProjectAdmin,
902
+ Permission.ProjectMember,
903
+ Permission.ReadAlert,
904
+ ],
905
+ update: [],
906
+ })
907
+ @Index()
908
+ @TableColumn({
909
+ type: TableColumnType.ObjectID,
910
+ required: false,
911
+ canReadOnRelationQuery: true,
912
+ title: "Created By Probe ID",
913
+ description:
914
+ "If this alert was created by a Probe, this is the ID of the probe that created it.",
915
+ })
916
+ @Column({
917
+ type: ColumnType.ObjectID,
918
+ nullable: true,
919
+ transformer: ObjectID.getDatabaseTransformer(),
920
+ })
921
+ public createdByProbeId?: ObjectID = undefined;
922
+
923
+ @ColumnAccessControl({
924
+ create: [],
925
+ read: [
926
+ Permission.ProjectOwner,
927
+ Permission.ProjectAdmin,
928
+ Permission.ProjectMember,
929
+ Permission.ReadAlert,
930
+ ],
931
+ update: [],
932
+ })
933
+ @TableColumn({
934
+ isDefaultValueColumn: true,
935
+ type: TableColumnType.Boolean,
936
+ title: "Is created automatically?",
937
+ description:
938
+ "Is this alert created by OneUptime Probe or Workers automatically (and not created manually by a user)?",
939
+ })
940
+ @Column({
941
+ type: ColumnType.Boolean,
942
+ default: false,
943
+ })
944
+ public isCreatedAutomatically?: boolean = undefined;
945
+
946
+ @ColumnAccessControl({
947
+ create: [
948
+ Permission.ProjectOwner,
949
+ Permission.ProjectAdmin,
950
+ Permission.ProjectMember,
951
+ Permission.CreateAlert,
952
+ ],
953
+ read: [
954
+ Permission.ProjectOwner,
955
+ Permission.ProjectAdmin,
956
+ Permission.ProjectMember,
957
+ Permission.ReadAlert,
958
+ ],
959
+ update: [
960
+ Permission.ProjectOwner,
961
+ Permission.ProjectAdmin,
962
+ Permission.ProjectMember,
963
+ Permission.EditAlert,
964
+ ],
965
+ })
966
+ @TableColumn({
967
+ required: false,
968
+ type: TableColumnType.Markdown,
969
+ title: "Remediation Notes",
970
+ description: "Notes on how to remediate this alert. This is in markdown.",
971
+ })
972
+ @Column({
973
+ nullable: true,
974
+ type: ColumnType.Markdown,
975
+ })
976
+ public remediationNotes?: string = undefined;
977
+
978
+ @ColumnAccessControl({
979
+ create: [
980
+ Permission.ProjectOwner,
981
+ Permission.ProjectAdmin,
982
+ Permission.ProjectMember,
983
+ Permission.CreateAlert,
984
+ ],
985
+ read: [
986
+ Permission.ProjectOwner,
987
+ Permission.ProjectAdmin,
988
+ Permission.ProjectMember,
989
+ Permission.ReadAlert,
990
+ ],
991
+ update: [
992
+ Permission.ProjectOwner,
993
+ Permission.ProjectAdmin,
994
+ Permission.ProjectMember,
995
+ Permission.EditAlert,
996
+ ],
997
+ })
998
+ @TableColumn({
999
+ isDefaultValueColumn: false,
1000
+ required: false,
1001
+ type: TableColumnType.JSON,
1002
+ title: "Telemetry Query",
1003
+ description: "Telemetry query for this alert",
1004
+ })
1005
+ @Column({
1006
+ type: ColumnType.JSON,
1007
+ nullable: true,
1008
+ })
1009
+ public telemetryQuery?: TelemetryQuery = undefined;
1010
+ }