@oneuptime/common 9.5.2 → 9.5.4

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 (218) hide show
  1. package/Models/DatabaseModels/Alert.ts +28 -0
  2. package/Models/DatabaseModels/AlertEpisode.ts +27 -0
  3. package/Models/DatabaseModels/AlertEpisodeStateTimeline.ts +1 -0
  4. package/Models/DatabaseModels/AlertStateTimeline.ts +1 -0
  5. package/Models/DatabaseModels/Incident.ts +28 -0
  6. package/Models/DatabaseModels/IncidentEpisode.ts +182 -0
  7. package/Models/DatabaseModels/IncidentEpisodeFeed.ts +2 -0
  8. package/Models/DatabaseModels/IncidentEpisodePublicNote.ts +611 -0
  9. package/Models/DatabaseModels/IncidentEpisodeStateTimeline.ts +84 -0
  10. package/Models/DatabaseModels/IncidentGroupingRule.ts +36 -0
  11. package/Models/DatabaseModels/IncidentStateTimeline.ts +1 -0
  12. package/Models/DatabaseModels/Index.ts +2 -0
  13. package/Models/DatabaseModels/MonitorStatusTimeline.ts +1 -0
  14. package/Models/DatabaseModels/Project.ts +252 -1
  15. package/Models/DatabaseModels/ProjectCallSMSConfig.ts +1 -0
  16. package/Models/DatabaseModels/ScheduledMaintenance.ts +28 -0
  17. package/Models/DatabaseModels/ScheduledMaintenanceTemplate.ts +1 -0
  18. package/Models/DatabaseModels/StatusPage.ts +120 -0
  19. package/Server/API/IncidentEpisodePublicNoteAPI.ts +98 -0
  20. package/Server/API/StatusPageAPI.ts +1092 -45
  21. package/Server/Infrastructure/Postgres/SchemaMigrations/1770232207959-MigrationName.ts +181 -0
  22. package/Server/Infrastructure/Postgres/SchemaMigrations/1770237245069-MigrationName.ts +35 -0
  23. package/Server/Infrastructure/Postgres/SchemaMigrations/1770237245070-MigrationName.ts +57 -0
  24. package/Server/Infrastructure/Postgres/SchemaMigrations/1770407024682-MigrationName.ts +83 -0
  25. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +8 -0
  26. package/Server/Services/AlertEpisodeMemberService.ts +6 -3
  27. package/Server/Services/AlertEpisodeService.ts +45 -97
  28. package/Server/Services/AlertEpisodeStateTimelineService.ts +4 -2
  29. package/Server/Services/AlertInternalNoteService.ts +5 -2
  30. package/Server/Services/AlertOwnerTeamService.ts +10 -4
  31. package/Server/Services/AlertOwnerUserService.ts +10 -4
  32. package/Server/Services/AlertService.ts +24 -38
  33. package/Server/Services/AlertStateTimelineService.ts +6 -3
  34. package/Server/Services/DatabaseService.ts +12 -0
  35. package/Server/Services/IncidentEpisodeMemberService.ts +8 -4
  36. package/Server/Services/IncidentEpisodePublicNoteService.ts +257 -0
  37. package/Server/Services/IncidentEpisodeService.ts +67 -93
  38. package/Server/Services/IncidentEpisodeStateTimelineService.ts +4 -2
  39. package/Server/Services/IncidentInternalNoteService.ts +10 -5
  40. package/Server/Services/IncidentMemberService.ts +20 -10
  41. package/Server/Services/IncidentOwnerTeamService.ts +20 -10
  42. package/Server/Services/IncidentOwnerUserService.ts +20 -10
  43. package/Server/Services/IncidentPublicNoteService.ts +10 -5
  44. package/Server/Services/IncidentService.ts +34 -110
  45. package/Server/Services/IncidentStateTimelineService.ts +11 -6
  46. package/Server/Services/Index.ts +2 -0
  47. package/Server/Services/OnCallDutyPolicyExecutionLogService.ts +61 -39
  48. package/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.ts +31 -19
  49. package/Server/Services/ProjectService.ts +227 -0
  50. package/Server/Services/ScheduledMaintenanceInternalNoteService.ts +9 -6
  51. package/Server/Services/ScheduledMaintenancePublicNoteService.ts +9 -6
  52. package/Server/Services/ScheduledMaintenanceService.ts +27 -39
  53. package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +8 -6
  54. package/Server/Services/UserNotificationRuleService.ts +32 -21
  55. package/Server/Utils/AI/IncidentEpisodeAIContextBuilder.ts +4 -2
  56. package/Server/Utils/Browser.ts +28 -20
  57. package/Server/Utils/Monitor/MonitorAlert.ts +5 -0
  58. package/Server/Utils/Monitor/MonitorIncident.ts +13 -0
  59. package/Server/Utils/PushNotificationUtil.ts +69 -26
  60. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +8 -4
  61. package/Server/Utils/Workspace/Slack/Actions/Alert.ts +20 -8
  62. package/Server/Utils/Workspace/Slack/Actions/Incident.ts +42 -22
  63. package/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.ts +23 -17
  64. package/Server/Utils/Workspace/WorkspaceMessages/Alert.ts +1 -0
  65. package/Server/Utils/Workspace/WorkspaceMessages/Incident.ts +1 -0
  66. package/Server/Utils/Workspace/WorkspaceMessages/ScheduledMaintenance.ts +1 -0
  67. package/Types/Email/EmailTemplateType.ts +4 -0
  68. package/Types/Icon/IconProp.ts +172 -0
  69. package/Types/Monitor/CriteriaIncident.ts +2 -0
  70. package/Types/Monitor/MonitorEvaluationSummary.ts +2 -0
  71. package/Types/Permission.ts +40 -0
  72. package/Types/StatusPage/StatusPageSubscriberNotificationEventType.ts +5 -0
  73. package/UI/Components/Icon/Icon.tsx +1333 -1
  74. package/Utils/Analytics.ts +11 -0
  75. package/build/dist/Models/DatabaseModels/Alert.js +30 -0
  76. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  77. package/build/dist/Models/DatabaseModels/AlertEpisode.js +29 -0
  78. package/build/dist/Models/DatabaseModels/AlertEpisode.js.map +1 -1
  79. package/build/dist/Models/DatabaseModels/AlertEpisodeStateTimeline.js +1 -0
  80. package/build/dist/Models/DatabaseModels/AlertEpisodeStateTimeline.js.map +1 -1
  81. package/build/dist/Models/DatabaseModels/AlertStateTimeline.js +1 -0
  82. package/build/dist/Models/DatabaseModels/AlertStateTimeline.js.map +1 -1
  83. package/build/dist/Models/DatabaseModels/Incident.js +30 -0
  84. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  85. package/build/dist/Models/DatabaseModels/IncidentEpisode.js +189 -0
  86. package/build/dist/Models/DatabaseModels/IncidentEpisode.js.map +1 -1
  87. package/build/dist/Models/DatabaseModels/IncidentEpisodeFeed.js +2 -0
  88. package/build/dist/Models/DatabaseModels/IncidentEpisodeFeed.js.map +1 -1
  89. package/build/dist/Models/DatabaseModels/IncidentEpisodePublicNote.js +626 -0
  90. package/build/dist/Models/DatabaseModels/IncidentEpisodePublicNote.js.map +1 -0
  91. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js +86 -0
  92. package/build/dist/Models/DatabaseModels/IncidentEpisodeStateTimeline.js.map +1 -1
  93. package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js +37 -0
  94. package/build/dist/Models/DatabaseModels/IncidentGroupingRule.js.map +1 -1
  95. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js +1 -0
  96. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js.map +1 -1
  97. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  98. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  99. package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js +1 -0
  100. package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js.map +1 -1
  101. package/build/dist/Models/DatabaseModels/Project.js +267 -1
  102. package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
  103. package/build/dist/Models/DatabaseModels/ProjectCallSMSConfig.js +1 -0
  104. package/build/dist/Models/DatabaseModels/ProjectCallSMSConfig.js.map +1 -1
  105. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +29 -0
  106. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  107. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js +1 -0
  108. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceTemplate.js.map +1 -1
  109. package/build/dist/Models/DatabaseModels/StatusPage.js +126 -0
  110. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  111. package/build/dist/Server/API/IncidentEpisodePublicNoteAPI.js +68 -0
  112. package/build/dist/Server/API/IncidentEpisodePublicNoteAPI.js.map +1 -0
  113. package/build/dist/Server/API/StatusPageAPI.js +874 -47
  114. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  115. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1770232207959-MigrationName.js +68 -0
  116. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1770232207959-MigrationName.js.map +1 -0
  117. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1770237245069-MigrationName.js +18 -0
  118. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1770237245069-MigrationName.js.map +1 -0
  119. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1770237245070-MigrationName.js +27 -0
  120. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1770237245070-MigrationName.js.map +1 -0
  121. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1770407024682-MigrationName.js +34 -0
  122. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1770407024682-MigrationName.js.map +1 -0
  123. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +8 -0
  124. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  125. package/build/dist/Server/Services/AlertEpisodeMemberService.js +6 -3
  126. package/build/dist/Server/Services/AlertEpisodeMemberService.js.map +1 -1
  127. package/build/dist/Server/Services/AlertEpisodeService.js +33 -90
  128. package/build/dist/Server/Services/AlertEpisodeService.js.map +1 -1
  129. package/build/dist/Server/Services/AlertEpisodeStateTimelineService.js +3 -2
  130. package/build/dist/Server/Services/AlertEpisodeStateTimelineService.js.map +1 -1
  131. package/build/dist/Server/Services/AlertInternalNoteService.js +2 -2
  132. package/build/dist/Server/Services/AlertInternalNoteService.js.map +1 -1
  133. package/build/dist/Server/Services/AlertOwnerTeamService.js +4 -4
  134. package/build/dist/Server/Services/AlertOwnerTeamService.js.map +1 -1
  135. package/build/dist/Server/Services/AlertOwnerUserService.js +4 -4
  136. package/build/dist/Server/Services/AlertOwnerUserService.js.map +1 -1
  137. package/build/dist/Server/Services/AlertService.js +16 -34
  138. package/build/dist/Server/Services/AlertService.js.map +1 -1
  139. package/build/dist/Server/Services/AlertStateTimelineService.js +3 -3
  140. package/build/dist/Server/Services/AlertStateTimelineService.js.map +1 -1
  141. package/build/dist/Server/Services/DatabaseService.js +9 -0
  142. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  143. package/build/dist/Server/Services/IncidentEpisodeMemberService.js +8 -4
  144. package/build/dist/Server/Services/IncidentEpisodeMemberService.js.map +1 -1
  145. package/build/dist/Server/Services/IncidentEpisodePublicNoteService.js +224 -0
  146. package/build/dist/Server/Services/IncidentEpisodePublicNoteService.js.map +1 -0
  147. package/build/dist/Server/Services/IncidentEpisodeService.js +47 -82
  148. package/build/dist/Server/Services/IncidentEpisodeService.js.map +1 -1
  149. package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js +3 -2
  150. package/build/dist/Server/Services/IncidentEpisodeStateTimelineService.js.map +1 -1
  151. package/build/dist/Server/Services/IncidentInternalNoteService.js +4 -2
  152. package/build/dist/Server/Services/IncidentInternalNoteService.js.map +1 -1
  153. package/build/dist/Server/Services/IncidentMemberService.js +8 -4
  154. package/build/dist/Server/Services/IncidentMemberService.js.map +1 -1
  155. package/build/dist/Server/Services/IncidentOwnerTeamService.js +8 -4
  156. package/build/dist/Server/Services/IncidentOwnerTeamService.js.map +1 -1
  157. package/build/dist/Server/Services/IncidentOwnerUserService.js +8 -4
  158. package/build/dist/Server/Services/IncidentOwnerUserService.js.map +1 -1
  159. package/build/dist/Server/Services/IncidentPublicNoteService.js +4 -2
  160. package/build/dist/Server/Services/IncidentPublicNoteService.js.map +1 -1
  161. package/build/dist/Server/Services/IncidentService.js +24 -94
  162. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  163. package/build/dist/Server/Services/IncidentStateTimelineService.js +5 -3
  164. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  165. package/build/dist/Server/Services/Index.js +2 -0
  166. package/build/dist/Server/Services/Index.js.map +1 -1
  167. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js +20 -16
  168. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogService.js.map +1 -1
  169. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js +10 -8
  170. package/build/dist/Server/Services/OnCallDutyPolicyExecutionLogTimelineService.js.map +1 -1
  171. package/build/dist/Server/Services/ProjectService.js +207 -0
  172. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  173. package/build/dist/Server/Services/ScheduledMaintenanceInternalNoteService.js +4 -3
  174. package/build/dist/Server/Services/ScheduledMaintenanceInternalNoteService.js.map +1 -1
  175. package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js +4 -3
  176. package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js.map +1 -1
  177. package/build/dist/Server/Services/ScheduledMaintenanceService.js +16 -37
  178. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  179. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +3 -3
  180. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
  181. package/build/dist/Server/Services/UserNotificationRuleService.js +33 -25
  182. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  183. package/build/dist/Server/Utils/AI/IncidentEpisodeAIContextBuilder.js +4 -2
  184. package/build/dist/Server/Utils/AI/IncidentEpisodeAIContextBuilder.js.map +1 -1
  185. package/build/dist/Server/Utils/Browser.js +19 -12
  186. package/build/dist/Server/Utils/Browser.js.map +1 -1
  187. package/build/dist/Server/Utils/Monitor/MonitorAlert.js +4 -0
  188. package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
  189. package/build/dist/Server/Utils/Monitor/MonitorIncident.js +9 -0
  190. package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
  191. package/build/dist/Server/Utils/PushNotificationUtil.js +36 -28
  192. package/build/dist/Server/Utils/PushNotificationUtil.js.map +1 -1
  193. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +8 -4
  194. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  195. package/build/dist/Server/Utils/Workspace/Slack/Actions/Alert.js +8 -8
  196. package/build/dist/Server/Utils/Workspace/Slack/Actions/Alert.js.map +1 -1
  197. package/build/dist/Server/Utils/Workspace/Slack/Actions/Incident.js +18 -10
  198. package/build/dist/Server/Utils/Workspace/Slack/Actions/Incident.js.map +1 -1
  199. package/build/dist/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.js +8 -8
  200. package/build/dist/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.js.map +1 -1
  201. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/Alert.js.map +1 -1
  202. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/Incident.js.map +1 -1
  203. package/build/dist/Server/Utils/Workspace/WorkspaceMessages/ScheduledMaintenance.js.map +1 -1
  204. package/build/dist/Types/Email/EmailTemplateType.js +3 -0
  205. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  206. package/build/dist/Types/Icon/IconProp.js +172 -0
  207. package/build/dist/Types/Icon/IconProp.js.map +1 -1
  208. package/build/dist/Types/Monitor/CriteriaIncident.js +1 -0
  209. package/build/dist/Types/Monitor/CriteriaIncident.js.map +1 -1
  210. package/build/dist/Types/Permission.js +34 -0
  211. package/build/dist/Types/Permission.js.map +1 -1
  212. package/build/dist/Types/StatusPage/StatusPageSubscriberNotificationEventType.js +4 -0
  213. package/build/dist/Types/StatusPage/StatusPageSubscriberNotificationEventType.js.map +1 -1
  214. package/build/dist/UI/Components/Icon/Icon.js +502 -1
  215. package/build/dist/UI/Components/Icon/Icon.js.map +1 -1
  216. package/build/dist/Utils/Analytics.js +5 -0
  217. package/build/dist/Utils/Analytics.js.map +1 -1
  218. package/package.json +1 -1
@@ -862,6 +862,7 @@ export default class Alert extends BaseModel {
862
862
  isDefaultValueColumn: false,
863
863
  required: false,
864
864
  type: TableColumnType.JSON,
865
+ computed: true,
865
866
  })
866
867
  @Column({
867
868
  type: ColumnType.JSON,
@@ -1083,6 +1084,33 @@ export default class Alert extends BaseModel {
1083
1084
  })
1084
1085
  public alertNumber?: number = undefined;
1085
1086
 
1087
+ @ColumnAccessControl({
1088
+ create: [],
1089
+ read: [
1090
+ Permission.ProjectOwner,
1091
+ Permission.ProjectAdmin,
1092
+ Permission.ProjectMember,
1093
+ Permission.ReadAlert,
1094
+ Permission.ReadAllProjectResources,
1095
+ ],
1096
+ update: [],
1097
+ })
1098
+ @TableColumn({
1099
+ isDefaultValueColumn: false,
1100
+ required: false,
1101
+ type: TableColumnType.ShortText,
1102
+ title: "Alert Number With Prefix",
1103
+ description: "Alert number with prefix (e.g., 'ALT-42' or '#42')",
1104
+ computed: true,
1105
+ canReadOnRelationQuery: true,
1106
+ })
1107
+ @Column({
1108
+ type: ColumnType.ShortText,
1109
+ length: ColumnLength.ShortText,
1110
+ nullable: true,
1111
+ })
1112
+ public alertNumberWithPrefix?: string = undefined;
1113
+
1086
1114
  @ColumnAccessControl({
1087
1115
  create: [],
1088
1116
  read: [],
@@ -260,6 +260,32 @@ export default class AlertEpisode extends BaseModel {
260
260
  })
261
261
  public episodeNumber?: number = undefined;
262
262
 
263
+ @ColumnAccessControl({
264
+ create: [],
265
+ read: [
266
+ Permission.ProjectOwner,
267
+ Permission.ProjectAdmin,
268
+ Permission.ProjectMember,
269
+ Permission.ReadAlertEpisode,
270
+ Permission.ReadAllProjectResources,
271
+ ],
272
+ update: [],
273
+ })
274
+ @TableColumn({
275
+ isDefaultValueColumn: false,
276
+ required: false,
277
+ type: TableColumnType.ShortText,
278
+ title: "Episode Number With Prefix",
279
+ description: "Episode number with prefix (e.g., 'AE-42' or '#42')",
280
+ computed: true,
281
+ })
282
+ @Column({
283
+ type: ColumnType.ShortText,
284
+ length: ColumnLength.ShortText,
285
+ nullable: true,
286
+ })
287
+ public episodeNumberWithPrefix?: string = undefined;
288
+
263
289
  @ColumnAccessControl({
264
290
  create: [
265
291
  Permission.ProjectOwner,
@@ -840,6 +866,7 @@ export default class AlertEpisode extends BaseModel {
840
866
  type: TableColumnType.Number,
841
867
  required: true,
842
868
  isDefaultValueColumn: true,
869
+ computed: true,
843
870
  title: "Alert Count",
844
871
  description: "Denormalized count of alerts in this episode",
845
872
  defaultValue: 0,
@@ -439,6 +439,7 @@ export default class AlertEpisodeStateTimeline extends BaseModel {
439
439
  isDefaultValueColumn: false,
440
440
  required: false,
441
441
  type: TableColumnType.JSON,
442
+ computed: true,
442
443
  })
443
444
  @Column({
444
445
  type: ColumnType.JSON,
@@ -452,6 +452,7 @@ export default class AlertStateTimeline extends BaseModel {
452
452
  isDefaultValueColumn: false,
453
453
  required: false,
454
454
  type: TableColumnType.JSON,
455
+ computed: true,
455
456
  example: {
456
457
  previousState: "created",
457
458
  newState: "acknowledged",
@@ -1271,6 +1271,7 @@ export default class Incident extends BaseModel {
1271
1271
  isDefaultValueColumn: false,
1272
1272
  required: false,
1273
1273
  type: TableColumnType.JSON,
1274
+ computed: true,
1274
1275
  })
1275
1276
  @Column({
1276
1277
  type: ColumnType.JSON,
@@ -1511,6 +1512,33 @@ export default class Incident extends BaseModel {
1511
1512
  })
1512
1513
  public incidentNumber?: number = undefined;
1513
1514
 
1515
+ @ColumnAccessControl({
1516
+ create: [],
1517
+ read: [
1518
+ Permission.ProjectOwner,
1519
+ Permission.ProjectAdmin,
1520
+ Permission.ProjectMember,
1521
+ Permission.ReadProjectIncident,
1522
+ Permission.ReadAllProjectResources,
1523
+ ],
1524
+ update: [],
1525
+ })
1526
+ @TableColumn({
1527
+ isDefaultValueColumn: false,
1528
+ required: false,
1529
+ type: TableColumnType.ShortText,
1530
+ title: "Incident Number With Prefix",
1531
+ description: "Incident number with prefix (e.g., 'INC-42' or '#42')",
1532
+ computed: true,
1533
+ canReadOnRelationQuery: true,
1534
+ })
1535
+ @Column({
1536
+ type: ColumnType.ShortText,
1537
+ length: ColumnLength.ShortText,
1538
+ nullable: true,
1539
+ })
1540
+ public incidentNumberWithPrefix?: string = undefined;
1541
+
1514
1542
  @ColumnAccessControl({
1515
1543
  create: [],
1516
1544
  read: [],
@@ -34,6 +34,7 @@ import {
34
34
  ManyToOne,
35
35
  } from "typeorm";
36
36
  import NotificationRuleWorkspaceChannel from "../../Types/Workspace/NotificationRules/NotificationRuleWorkspaceChannel";
37
+ import StatusPageSubscriberNotificationStatus from "../../Types/StatusPage/StatusPageSubscriberNotificationStatus";
37
38
 
38
39
  @EnableDocumentation()
39
40
  @AccessControlColumn("labels")
@@ -258,6 +259,32 @@ export default class IncidentEpisode extends BaseModel {
258
259
  })
259
260
  public episodeNumber?: number = undefined;
260
261
 
262
+ @ColumnAccessControl({
263
+ create: [],
264
+ read: [
265
+ Permission.ProjectOwner,
266
+ Permission.ProjectAdmin,
267
+ Permission.ProjectMember,
268
+ Permission.ReadIncidentEpisode,
269
+ Permission.ReadAllProjectResources,
270
+ ],
271
+ update: [],
272
+ })
273
+ @TableColumn({
274
+ isDefaultValueColumn: false,
275
+ required: false,
276
+ type: TableColumnType.ShortText,
277
+ title: "Episode Number With Prefix",
278
+ description: "Episode number with prefix (e.g., 'IE-42' or '#42')",
279
+ computed: true,
280
+ })
281
+ @Column({
282
+ type: ColumnType.ShortText,
283
+ length: ColumnLength.ShortText,
284
+ nullable: true,
285
+ })
286
+ public episodeNumberWithPrefix?: string = undefined;
287
+
261
288
  @ColumnAccessControl({
262
289
  create: [
263
290
  Permission.ProjectOwner,
@@ -760,6 +787,7 @@ export default class IncidentEpisode extends BaseModel {
760
787
  type: TableColumnType.Number,
761
788
  required: true,
762
789
  isDefaultValueColumn: true,
790
+ computed: true,
763
791
  title: "Incident Count",
764
792
  description: "Denormalized count of incidents in this episode",
765
793
  defaultValue: 0,
@@ -1253,4 +1281,158 @@ export default class IncidentEpisode extends BaseModel {
1253
1281
  })
1254
1282
  public postUpdatesToWorkspaceChannels?: Array<NotificationRuleWorkspaceChannel> =
1255
1283
  undefined;
1284
+
1285
+ @ColumnAccessControl({
1286
+ create: [
1287
+ Permission.ProjectOwner,
1288
+ Permission.ProjectAdmin,
1289
+ Permission.ProjectMember,
1290
+ Permission.CreateIncidentEpisode,
1291
+ ],
1292
+ read: [
1293
+ Permission.ProjectOwner,
1294
+ Permission.ProjectAdmin,
1295
+ Permission.ProjectMember,
1296
+ Permission.ReadIncidentEpisode,
1297
+ Permission.ReadAllProjectResources,
1298
+ ],
1299
+ update: [
1300
+ Permission.ProjectOwner,
1301
+ Permission.ProjectAdmin,
1302
+ Permission.ProjectMember,
1303
+ Permission.EditIncidentEpisode,
1304
+ ],
1305
+ })
1306
+ @Index()
1307
+ @TableColumn({
1308
+ type: TableColumnType.Boolean,
1309
+ required: true,
1310
+ isDefaultValueColumn: true,
1311
+ title: "Visible on Status Page",
1312
+ description: "Should this episode be visible on the status page?",
1313
+ defaultValue: false,
1314
+ })
1315
+ @Column({
1316
+ type: ColumnType.Boolean,
1317
+ nullable: false,
1318
+ default: false,
1319
+ })
1320
+ public isVisibleOnStatusPage?: boolean = undefined;
1321
+
1322
+ @ColumnAccessControl({
1323
+ create: [
1324
+ Permission.ProjectOwner,
1325
+ Permission.ProjectAdmin,
1326
+ Permission.ProjectMember,
1327
+ Permission.CreateIncidentEpisode,
1328
+ ],
1329
+ read: [
1330
+ Permission.ProjectOwner,
1331
+ Permission.ProjectAdmin,
1332
+ Permission.ProjectMember,
1333
+ Permission.ReadIncidentEpisode,
1334
+ Permission.ReadAllProjectResources,
1335
+ ],
1336
+ update: [
1337
+ Permission.ProjectOwner,
1338
+ Permission.ProjectAdmin,
1339
+ Permission.ProjectMember,
1340
+ Permission.EditIncidentEpisode,
1341
+ ],
1342
+ })
1343
+ @Index()
1344
+ @TableColumn({
1345
+ type: TableColumnType.Date,
1346
+ title: "Declared At",
1347
+ description: "When this episode was declared",
1348
+ })
1349
+ @Column({
1350
+ type: ColumnType.Date,
1351
+ nullable: true,
1352
+ unique: false,
1353
+ })
1354
+ public declaredAt?: Date = undefined;
1355
+
1356
+ @ColumnAccessControl({
1357
+ create: [
1358
+ Permission.ProjectOwner,
1359
+ Permission.ProjectAdmin,
1360
+ Permission.ProjectMember,
1361
+ Permission.CreateIncidentEpisode,
1362
+ ],
1363
+ read: [
1364
+ Permission.ProjectOwner,
1365
+ Permission.ProjectAdmin,
1366
+ Permission.ProjectMember,
1367
+ Permission.ReadIncidentEpisode,
1368
+ Permission.ReadAllProjectResources,
1369
+ ],
1370
+ update: [],
1371
+ })
1372
+ @TableColumn({
1373
+ isDefaultValueColumn: true,
1374
+ type: TableColumnType.Boolean,
1375
+ title: "Should subscribers be notified on episode created?",
1376
+ description:
1377
+ "Should status page subscribers be notified when this episode is created?",
1378
+ defaultValue: true,
1379
+ })
1380
+ @Column({
1381
+ type: ColumnType.Boolean,
1382
+ default: true,
1383
+ })
1384
+ public shouldStatusPageSubscribersBeNotifiedOnEpisodeCreated?: boolean =
1385
+ undefined;
1386
+
1387
+ @ColumnAccessControl({
1388
+ create: [],
1389
+ read: [
1390
+ Permission.ProjectOwner,
1391
+ Permission.ProjectAdmin,
1392
+ Permission.ProjectMember,
1393
+ Permission.ReadIncidentEpisode,
1394
+ Permission.ReadAllProjectResources,
1395
+ ],
1396
+ update: [],
1397
+ })
1398
+ @TableColumn({
1399
+ isDefaultValueColumn: true,
1400
+ computed: true,
1401
+ hideColumnInDocumentation: true,
1402
+ type: TableColumnType.ShortText,
1403
+ title: "Subscriber Notification Status on Episode Created",
1404
+ description:
1405
+ "Status of notification sent to subscribers when this episode was created",
1406
+ defaultValue: StatusPageSubscriberNotificationStatus.Pending,
1407
+ })
1408
+ @Column({
1409
+ type: ColumnType.ShortText,
1410
+ default: StatusPageSubscriberNotificationStatus.Pending,
1411
+ })
1412
+ public subscriberNotificationStatusOnEpisodeCreated?: StatusPageSubscriberNotificationStatus =
1413
+ undefined;
1414
+
1415
+ @ColumnAccessControl({
1416
+ create: [],
1417
+ read: [
1418
+ Permission.ProjectOwner,
1419
+ Permission.ProjectAdmin,
1420
+ Permission.ProjectMember,
1421
+ Permission.ReadIncidentEpisode,
1422
+ Permission.ReadAllProjectResources,
1423
+ ],
1424
+ update: [],
1425
+ })
1426
+ @TableColumn({
1427
+ type: TableColumnType.VeryLongText,
1428
+ title: "Subscriber Notification Status Message",
1429
+ description:
1430
+ "Status message for subscriber notifications - includes success messages, failure reasons, or skip reasons",
1431
+ required: false,
1432
+ })
1433
+ @Column({
1434
+ type: ColumnType.VeryLongText,
1435
+ nullable: true,
1436
+ })
1437
+ public subscriberNotificationStatusMessage?: string = undefined;
1256
1438
  }
@@ -34,12 +34,14 @@ export enum IncidentEpisodeFeedEventType {
34
34
  OwnerTeamRemoved = "OwnerTeamRemoved",
35
35
  OwnerNotificationSent = "OwnerNotificationSent",
36
36
  PrivateNote = "PrivateNote",
37
+ PublicNote = "PublicNote",
37
38
  RootCause = "RootCause",
38
39
  RemediationNotes = "RemediationNotes",
39
40
  PostmortemNote = "PostmortemNote",
40
41
  OnCallPolicy = "OnCallPolicy",
41
42
  OnCallNotification = "OnCallNotification",
42
43
  SeverityChanged = "SeverityChanged",
44
+ SubscriberNotificationSent = "SubscriberNotificationSent",
43
45
  }
44
46
 
45
47
  @EnableDocumentation()