@oneuptime/common 7.0.4922 → 7.0.4976

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 (168) hide show
  1. package/Models/DatabaseModels/CallLog.ts +578 -0
  2. package/Models/DatabaseModels/EmailLog.ts +579 -0
  3. package/Models/DatabaseModels/IncidentStateTimeline.ts +1 -1
  4. package/Models/DatabaseModels/Index.ts +4 -0
  5. package/Models/DatabaseModels/OnCallDutyPolicy.ts +1 -1
  6. package/Models/DatabaseModels/PushNotificationLog.ts +877 -0
  7. package/Models/DatabaseModels/SmsLog.ts +578 -0
  8. package/Models/DatabaseModels/WorkspaceNotificationLog.ts +931 -0
  9. package/Server/API/StatusPageAPI.ts +2 -0
  10. package/Server/API/UserPushAPI.ts +12 -1
  11. package/Server/Infrastructure/Postgres/SchemaMigrations/1754776130988-MigrationName.ts +259 -0
  12. package/Server/Infrastructure/Postgres/SchemaMigrations/1754828812691-MigrationName.ts +105 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1754910440587-MigrationName.ts +105 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1755030730926-MigrationName.ts +101 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/1755088852971-MigrationName.ts +371 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/1755093133870-MigrationName.ts +29 -0
  17. package/Server/Infrastructure/Postgres/SchemaMigrations/1755109893911-MigrationName.ts +23 -0
  18. package/Server/Infrastructure/Postgres/SchemaMigrations/1755110936888-MigrationName.ts +41 -0
  19. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +16 -0
  20. package/Server/Services/CallService.ts +26 -1
  21. package/Server/Services/Index.ts +2 -0
  22. package/Server/Services/MailService.ts +60 -0
  23. package/Server/Services/OnCallDutyPolicyEscalationRuleUserService.ts +6 -0
  24. package/Server/Services/OnCallDutyPolicyScheduleService.ts +12 -0
  25. package/Server/Services/ProjectService.ts +3 -7
  26. package/Server/Services/PushNotificationLogService.ts +14 -0
  27. package/Server/Services/PushNotificationService.ts +129 -13
  28. package/Server/Services/ScheduledMaintenanceService.ts +4 -0
  29. package/Server/Services/SmsService.ts +25 -0
  30. package/Server/Services/StatusPagePrivateUserService.ts +1 -0
  31. package/Server/Services/StatusPageService.ts +1 -0
  32. package/Server/Services/StatusPageSubscriberService.ts +3 -0
  33. package/Server/Services/TeamMemberService.ts +1 -0
  34. package/Server/Services/UserCallService.ts +1 -0
  35. package/Server/Services/UserEmailService.ts +1 -0
  36. package/Server/Services/UserNotificationRuleService.ts +85 -6
  37. package/Server/Services/UserNotificationSettingService.ts +58 -0
  38. package/Server/Services/UserOnCallLogService.ts +1 -0
  39. package/Server/Services/UserSmsService.ts +1 -0
  40. package/Server/Services/WorkspaceNotificationLogService.ts +276 -0
  41. package/Server/Services/WorkspaceNotificationRuleService.ts +290 -33
  42. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +21 -6
  43. package/Server/Utils/Workspace/Slack/Actions/Alert.ts +66 -0
  44. package/Server/Utils/Workspace/Slack/Actions/Incident.ts +66 -1
  45. package/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.ts +65 -0
  46. package/Server/Utils/Workspace/Slack/Slack.ts +21 -6
  47. package/Types/Permission.ts +20 -0
  48. package/Types/PushNotification/PushNotificationRequest.ts +4 -1
  49. package/Types/PushNotification/PushStatus.ts +6 -0
  50. package/Types/Workspace/WorkspaceNotificationActionType.ts +8 -0
  51. package/Types/Workspace/WorkspaceNotificationStatus.ts +6 -0
  52. package/Typings/elkjs.d.ts +30 -0
  53. package/UI/Components/Detail/Detail.tsx +1 -1
  54. package/UI/Components/Graphs/ServiceDependencyGraph.tsx +281 -0
  55. package/UI/Components/Tabs/Tab.tsx +8 -9
  56. package/UI/Components/Tabs/Tabs.tsx +17 -16
  57. package/Utils/Uptime/UptimeUtil.ts +20 -1
  58. package/build/dist/Models/DatabaseModels/CallLog.js +580 -0
  59. package/build/dist/Models/DatabaseModels/CallLog.js.map +1 -1
  60. package/build/dist/Models/DatabaseModels/EmailLog.js +580 -0
  61. package/build/dist/Models/DatabaseModels/EmailLog.js.map +1 -1
  62. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js +1 -1
  63. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js.map +1 -1
  64. package/build/dist/Models/DatabaseModels/Index.js +4 -0
  65. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  66. package/build/dist/Models/DatabaseModels/OnCallDutyPolicy.js +1 -1
  67. package/build/dist/Models/DatabaseModels/OnCallDutyPolicy.js.map +1 -1
  68. package/build/dist/Models/DatabaseModels/PushNotificationLog.js +904 -0
  69. package/build/dist/Models/DatabaseModels/PushNotificationLog.js.map +1 -0
  70. package/build/dist/Models/DatabaseModels/SmsLog.js +580 -0
  71. package/build/dist/Models/DatabaseModels/SmsLog.js.map +1 -1
  72. package/build/dist/Models/DatabaseModels/WorkspaceNotificationLog.js +961 -0
  73. package/build/dist/Models/DatabaseModels/WorkspaceNotificationLog.js.map +1 -0
  74. package/build/dist/Server/API/StatusPageAPI.js +2 -0
  75. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  76. package/build/dist/Server/API/UserPushAPI.js +9 -1
  77. package/build/dist/Server/API/UserPushAPI.js.map +1 -1
  78. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1754776130988-MigrationName.js +104 -0
  79. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1754776130988-MigrationName.js.map +1 -0
  80. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1754828812691-MigrationName.js +42 -0
  81. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1754828812691-MigrationName.js.map +1 -0
  82. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1754910440587-MigrationName.js +42 -0
  83. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1754910440587-MigrationName.js.map +1 -0
  84. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1755030730926-MigrationName.js +44 -0
  85. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1755030730926-MigrationName.js.map +1 -0
  86. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1755088852971-MigrationName.js +134 -0
  87. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1755088852971-MigrationName.js.map +1 -0
  88. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1755093133870-MigrationName.js +16 -0
  89. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1755093133870-MigrationName.js.map +1 -0
  90. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1755109893911-MigrationName.js +14 -0
  91. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1755109893911-MigrationName.js.map +1 -0
  92. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1755110936888-MigrationName.js +20 -0
  93. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1755110936888-MigrationName.js.map +1 -0
  94. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +16 -0
  95. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  96. package/build/dist/Server/Services/CallService.js +12 -1
  97. package/build/dist/Server/Services/CallService.js.map +1 -1
  98. package/build/dist/Server/Services/Index.js +2 -0
  99. package/build/dist/Server/Services/Index.js.map +1 -1
  100. package/build/dist/Server/Services/MailService.js +37 -0
  101. package/build/dist/Server/Services/MailService.js.map +1 -1
  102. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleUserService.js +4 -0
  103. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleUserService.js.map +1 -1
  104. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +9 -0
  105. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
  106. package/build/dist/Server/Services/ProjectService.js +3 -5
  107. package/build/dist/Server/Services/ProjectService.js.map +1 -1
  108. package/build/dist/Server/Services/PushNotificationLogService.js +13 -0
  109. package/build/dist/Server/Services/PushNotificationLogService.js.map +1 -0
  110. package/build/dist/Server/Services/PushNotificationService.js +98 -13
  111. package/build/dist/Server/Services/PushNotificationService.js.map +1 -1
  112. package/build/dist/Server/Services/ScheduledMaintenanceService.js +4 -0
  113. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  114. package/build/dist/Server/Services/SmsService.js +12 -1
  115. package/build/dist/Server/Services/SmsService.js.map +1 -1
  116. package/build/dist/Server/Services/StatusPagePrivateUserService.js +1 -0
  117. package/build/dist/Server/Services/StatusPagePrivateUserService.js.map +1 -1
  118. package/build/dist/Server/Services/StatusPageService.js +1 -0
  119. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  120. package/build/dist/Server/Services/StatusPageSubscriberService.js +3 -0
  121. package/build/dist/Server/Services/StatusPageSubscriberService.js.map +1 -1
  122. package/build/dist/Server/Services/TeamMemberService.js +1 -0
  123. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  124. package/build/dist/Server/Services/UserCallService.js +1 -0
  125. package/build/dist/Server/Services/UserCallService.js.map +1 -1
  126. package/build/dist/Server/Services/UserEmailService.js +1 -0
  127. package/build/dist/Server/Services/UserEmailService.js.map +1 -1
  128. package/build/dist/Server/Services/UserNotificationRuleService.js +70 -6
  129. package/build/dist/Server/Services/UserNotificationRuleService.js.map +1 -1
  130. package/build/dist/Server/Services/UserNotificationSettingService.js +43 -0
  131. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  132. package/build/dist/Server/Services/UserOnCallLogService.js +1 -0
  133. package/build/dist/Server/Services/UserOnCallLogService.js.map +1 -1
  134. package/build/dist/Server/Services/UserSmsService.js +1 -0
  135. package/build/dist/Server/Services/UserSmsService.js.map +1 -1
  136. package/build/dist/Server/Services/WorkspaceNotificationLogService.js +181 -0
  137. package/build/dist/Server/Services/WorkspaceNotificationLogService.js.map +1 -0
  138. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +193 -3
  139. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
  140. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +19 -6
  141. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  142. package/build/dist/Server/Utils/Workspace/Slack/Actions/Alert.js +48 -0
  143. package/build/dist/Server/Utils/Workspace/Slack/Actions/Alert.js.map +1 -1
  144. package/build/dist/Server/Utils/Workspace/Slack/Actions/Incident.js +48 -1
  145. package/build/dist/Server/Utils/Workspace/Slack/Actions/Incident.js.map +1 -1
  146. package/build/dist/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.js +47 -0
  147. package/build/dist/Server/Utils/Workspace/Slack/Actions/ScheduledMaintenance.js.map +1 -1
  148. package/build/dist/Server/Utils/Workspace/Slack/Slack.js +19 -6
  149. package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
  150. package/build/dist/Types/Permission.js +16 -0
  151. package/build/dist/Types/Permission.js.map +1 -1
  152. package/build/dist/Types/PushNotification/PushStatus.js +7 -0
  153. package/build/dist/Types/PushNotification/PushStatus.js.map +1 -0
  154. package/build/dist/Types/Workspace/WorkspaceNotificationActionType.js +9 -0
  155. package/build/dist/Types/Workspace/WorkspaceNotificationActionType.js.map +1 -0
  156. package/build/dist/Types/Workspace/WorkspaceNotificationStatus.js +7 -0
  157. package/build/dist/Types/Workspace/WorkspaceNotificationStatus.js.map +1 -0
  158. package/build/dist/UI/Components/Detail/Detail.js +1 -1
  159. package/build/dist/UI/Components/Detail/Detail.js.map +1 -1
  160. package/build/dist/UI/Components/Graphs/ServiceDependencyGraph.js +206 -0
  161. package/build/dist/UI/Components/Graphs/ServiceDependencyGraph.js.map +1 -0
  162. package/build/dist/UI/Components/Tabs/Tab.js +6 -5
  163. package/build/dist/UI/Components/Tabs/Tab.js.map +1 -1
  164. package/build/dist/UI/Components/Tabs/Tabs.js +5 -6
  165. package/build/dist/UI/Components/Tabs/Tabs.js.map +1 -1
  166. package/build/dist/Utils/Uptime/UptimeUtil.js +10 -1
  167. package/build/dist/Utils/Uptime/UptimeUtil.js.map +1 -1
  168. package/package.json +2 -1
@@ -1,6 +1,15 @@
1
1
  import Project from "./Project";
2
+ import Incident from "./Incident";
3
+ import Alert from "./Alert";
4
+ import ScheduledMaintenance from "./ScheduledMaintenance";
5
+ import StatusPage from "./StatusPage";
2
6
  import ProjectSmtpConfig from "./ProjectSmtpConfig";
7
+ import StatusPageAnnouncement from "./StatusPageAnnouncement";
3
8
  import User from "./User";
9
+ import OnCallDutyPolicy from "./OnCallDutyPolicy";
10
+ import OnCallDutyPolicyEscalationRule from "./OnCallDutyPolicyEscalationRule";
11
+ import OnCallDutyPolicySchedule from "./OnCallDutyPolicySchedule";
12
+ import Team from "./Team";
4
13
  import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
5
14
  import Route from "../../Types/API/Route";
6
15
  import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
@@ -289,6 +298,576 @@ export default class EmailLog extends BaseModel {
289
298
  })
290
299
  public projectSmtpConfigId?: ObjectID = undefined;
291
300
 
301
+ // Relations to resources that triggered this email (nullable)
302
+
303
+ @ColumnAccessControl({
304
+ create: [],
305
+ read: [
306
+ Permission.ProjectOwner,
307
+ Permission.ProjectAdmin,
308
+ Permission.ProjectMember,
309
+ Permission.ReadEmailLog,
310
+ ],
311
+ update: [],
312
+ })
313
+ @TableColumn({
314
+ manyToOneRelationColumn: "incidentId",
315
+ type: TableColumnType.Entity,
316
+ modelType: Incident,
317
+ title: "Incident",
318
+ description: "Incident associated with this email (if any)",
319
+ })
320
+ @ManyToOne(
321
+ () => {
322
+ return Incident;
323
+ },
324
+ {
325
+ eager: false,
326
+ nullable: true,
327
+ onDelete: "CASCADE",
328
+ orphanedRowAction: "nullify",
329
+ },
330
+ )
331
+ @JoinColumn({ name: "incidentId" })
332
+ public incident?: Incident = undefined;
333
+
334
+ @ColumnAccessControl({
335
+ create: [],
336
+ read: [
337
+ Permission.ProjectOwner,
338
+ Permission.ProjectAdmin,
339
+ Permission.ProjectMember,
340
+ Permission.ReadEmailLog,
341
+ ],
342
+ update: [],
343
+ })
344
+ @Index()
345
+ @TableColumn({
346
+ type: TableColumnType.ObjectID,
347
+ required: false,
348
+ canReadOnRelationQuery: true,
349
+ title: "Incident ID",
350
+ description: "ID of Incident associated with this email (if any)",
351
+ })
352
+ @Column({
353
+ type: ColumnType.ObjectID,
354
+ nullable: true,
355
+ transformer: ObjectID.getDatabaseTransformer(),
356
+ })
357
+ public incidentId?: ObjectID = undefined;
358
+
359
+ @ColumnAccessControl({
360
+ create: [],
361
+ read: [
362
+ Permission.ProjectOwner,
363
+ Permission.ProjectAdmin,
364
+ Permission.ProjectMember,
365
+ Permission.ReadEmailLog,
366
+ ],
367
+ update: [],
368
+ })
369
+ @TableColumn({
370
+ manyToOneRelationColumn: "userId",
371
+ type: TableColumnType.Entity,
372
+ modelType: User,
373
+ title: "User",
374
+ description: "User who initiated this email (if any)",
375
+ })
376
+ @ManyToOne(
377
+ () => {
378
+ return User;
379
+ },
380
+ {
381
+ eager: false,
382
+ nullable: true,
383
+ onDelete: "CASCADE",
384
+ orphanedRowAction: "nullify",
385
+ },
386
+ )
387
+ @JoinColumn({ name: "userId" })
388
+ public user?: User = undefined;
389
+
390
+ @ColumnAccessControl({
391
+ create: [],
392
+ read: [
393
+ Permission.ProjectOwner,
394
+ Permission.ProjectAdmin,
395
+ Permission.ProjectMember,
396
+ Permission.ReadEmailLog,
397
+ ],
398
+ update: [],
399
+ })
400
+ @Index()
401
+ @TableColumn({
402
+ type: TableColumnType.ObjectID,
403
+ required: false,
404
+ canReadOnRelationQuery: true,
405
+ title: "User ID",
406
+ description: "ID of User who initiated this email (if any)",
407
+ })
408
+ @Column({
409
+ type: ColumnType.ObjectID,
410
+ nullable: true,
411
+ transformer: ObjectID.getDatabaseTransformer(),
412
+ })
413
+ public userId?: ObjectID = undefined;
414
+
415
+ @ColumnAccessControl({
416
+ create: [],
417
+ read: [
418
+ Permission.ProjectOwner,
419
+ Permission.ProjectAdmin,
420
+ Permission.ProjectMember,
421
+ Permission.ReadEmailLog,
422
+ ],
423
+ update: [],
424
+ })
425
+ @TableColumn({
426
+ manyToOneRelationColumn: "alertId",
427
+ type: TableColumnType.Entity,
428
+ modelType: Alert,
429
+ title: "Alert",
430
+ description: "Alert associated with this email (if any)",
431
+ })
432
+ @ManyToOne(
433
+ () => {
434
+ return Alert;
435
+ },
436
+ {
437
+ eager: false,
438
+ nullable: true,
439
+ onDelete: "CASCADE",
440
+ orphanedRowAction: "nullify",
441
+ },
442
+ )
443
+ @JoinColumn({ name: "alertId" })
444
+ public alert?: Alert = undefined;
445
+
446
+ @ColumnAccessControl({
447
+ create: [],
448
+ read: [
449
+ Permission.ProjectOwner,
450
+ Permission.ProjectAdmin,
451
+ Permission.ProjectMember,
452
+ Permission.ReadEmailLog,
453
+ ],
454
+ update: [],
455
+ })
456
+ @Index()
457
+ @TableColumn({
458
+ type: TableColumnType.ObjectID,
459
+ required: false,
460
+ canReadOnRelationQuery: true,
461
+ title: "Alert ID",
462
+ description: "ID of Alert associated with this email (if any)",
463
+ })
464
+ @Column({
465
+ type: ColumnType.ObjectID,
466
+ nullable: true,
467
+ transformer: ObjectID.getDatabaseTransformer(),
468
+ })
469
+ public alertId?: ObjectID = undefined;
470
+
471
+ @ColumnAccessControl({
472
+ create: [],
473
+ read: [
474
+ Permission.ProjectOwner,
475
+ Permission.ProjectAdmin,
476
+ Permission.ProjectMember,
477
+ Permission.ReadEmailLog,
478
+ ],
479
+ update: [],
480
+ })
481
+ @TableColumn({
482
+ manyToOneRelationColumn: "scheduledMaintenanceId",
483
+ type: TableColumnType.Entity,
484
+ modelType: ScheduledMaintenance,
485
+ title: "Scheduled Maintenance",
486
+ description: "Scheduled Maintenance associated with this email (if any)",
487
+ })
488
+ @ManyToOne(
489
+ () => {
490
+ return ScheduledMaintenance;
491
+ },
492
+ {
493
+ eager: false,
494
+ nullable: true,
495
+ onDelete: "CASCADE",
496
+ orphanedRowAction: "nullify",
497
+ },
498
+ )
499
+ @JoinColumn({ name: "scheduledMaintenanceId" })
500
+ public scheduledMaintenance?: ScheduledMaintenance = undefined;
501
+
502
+ @ColumnAccessControl({
503
+ create: [],
504
+ read: [
505
+ Permission.ProjectOwner,
506
+ Permission.ProjectAdmin,
507
+ Permission.ProjectMember,
508
+ Permission.ReadEmailLog,
509
+ ],
510
+ update: [],
511
+ })
512
+ @Index()
513
+ @TableColumn({
514
+ type: TableColumnType.ObjectID,
515
+ required: false,
516
+ canReadOnRelationQuery: true,
517
+ title: "Scheduled Maintenance ID",
518
+ description:
519
+ "ID of Scheduled Maintenance associated with this email (if any)",
520
+ })
521
+ @Column({
522
+ type: ColumnType.ObjectID,
523
+ nullable: true,
524
+ transformer: ObjectID.getDatabaseTransformer(),
525
+ })
526
+ public scheduledMaintenanceId?: ObjectID = undefined;
527
+
528
+ @ColumnAccessControl({
529
+ create: [],
530
+ read: [
531
+ Permission.ProjectOwner,
532
+ Permission.ProjectAdmin,
533
+ Permission.ProjectMember,
534
+ Permission.ReadEmailLog,
535
+ ],
536
+ update: [],
537
+ })
538
+ @TableColumn({
539
+ manyToOneRelationColumn: "statusPageId",
540
+ type: TableColumnType.Entity,
541
+ modelType: StatusPage,
542
+ title: "Status Page",
543
+ description: "Status Page associated with this email (if any)",
544
+ })
545
+ @ManyToOne(
546
+ () => {
547
+ return StatusPage;
548
+ },
549
+ {
550
+ eager: false,
551
+ nullable: true,
552
+ onDelete: "CASCADE",
553
+ orphanedRowAction: "nullify",
554
+ },
555
+ )
556
+ @JoinColumn({ name: "statusPageId" })
557
+ public statusPage?: StatusPage = undefined;
558
+
559
+ @ColumnAccessControl({
560
+ create: [],
561
+ read: [
562
+ Permission.ProjectOwner,
563
+ Permission.ProjectAdmin,
564
+ Permission.ProjectMember,
565
+ Permission.ReadEmailLog,
566
+ ],
567
+ update: [],
568
+ })
569
+ @Index()
570
+ @TableColumn({
571
+ type: TableColumnType.ObjectID,
572
+ required: false,
573
+ canReadOnRelationQuery: true,
574
+ title: "Status Page ID",
575
+ description: "ID of Status Page associated with this email (if any)",
576
+ })
577
+ @Column({
578
+ type: ColumnType.ObjectID,
579
+ nullable: true,
580
+ transformer: ObjectID.getDatabaseTransformer(),
581
+ })
582
+ public statusPageId?: ObjectID = undefined;
583
+
584
+ @ColumnAccessControl({
585
+ create: [],
586
+ read: [
587
+ Permission.ProjectOwner,
588
+ Permission.ProjectAdmin,
589
+ Permission.ProjectMember,
590
+ Permission.ReadEmailLog,
591
+ ],
592
+ update: [],
593
+ })
594
+ @TableColumn({
595
+ manyToOneRelationColumn: "statusPageAnnouncementId",
596
+ type: TableColumnType.Entity,
597
+ modelType: StatusPageAnnouncement,
598
+ title: "Status Page Announcement",
599
+ description: "Status Page Announcement associated with this email (if any)",
600
+ })
601
+ @ManyToOne(
602
+ () => {
603
+ return StatusPageAnnouncement;
604
+ },
605
+ {
606
+ eager: false,
607
+ nullable: true,
608
+ onDelete: "CASCADE",
609
+ orphanedRowAction: "nullify",
610
+ },
611
+ )
612
+ @JoinColumn({ name: "statusPageAnnouncementId" })
613
+ public statusPageAnnouncement?: StatusPageAnnouncement = undefined;
614
+
615
+ @ColumnAccessControl({
616
+ create: [],
617
+ read: [
618
+ Permission.ProjectOwner,
619
+ Permission.ProjectAdmin,
620
+ Permission.ProjectMember,
621
+ Permission.ReadEmailLog,
622
+ ],
623
+ update: [],
624
+ })
625
+ @Index()
626
+ @TableColumn({
627
+ type: TableColumnType.ObjectID,
628
+ required: false,
629
+ canReadOnRelationQuery: true,
630
+ title: "Status Page Announcement ID",
631
+ description:
632
+ "ID of Status Page Announcement associated with this email (if any)",
633
+ })
634
+ @Column({
635
+ type: ColumnType.ObjectID,
636
+ nullable: true,
637
+ transformer: ObjectID.getDatabaseTransformer(),
638
+ })
639
+ public statusPageAnnouncementId?: ObjectID = undefined;
640
+
641
+ @ColumnAccessControl({
642
+ create: [],
643
+ read: [
644
+ Permission.ProjectOwner,
645
+ Permission.ProjectAdmin,
646
+ Permission.ProjectMember,
647
+ Permission.ReadEmailLog,
648
+ ],
649
+ update: [],
650
+ })
651
+ @TableColumn({
652
+ manyToOneRelationColumn: "onCallDutyPolicyId",
653
+ type: TableColumnType.Entity,
654
+ modelType: OnCallDutyPolicy,
655
+ title: "On-Call Duty Policy",
656
+ description: "On-Call Duty Policy associated with this email (if any)",
657
+ })
658
+ @ManyToOne(
659
+ () => {
660
+ return OnCallDutyPolicy;
661
+ },
662
+ {
663
+ eager: false,
664
+ nullable: true,
665
+ onDelete: "CASCADE",
666
+ orphanedRowAction: "nullify",
667
+ },
668
+ )
669
+ @JoinColumn({ name: "onCallDutyPolicyId" })
670
+ public onCallDutyPolicy?: OnCallDutyPolicy = undefined;
671
+
672
+ @ColumnAccessControl({
673
+ create: [],
674
+ read: [
675
+ Permission.ProjectOwner,
676
+ Permission.ProjectAdmin,
677
+ Permission.ProjectMember,
678
+ Permission.ReadEmailLog,
679
+ ],
680
+ update: [],
681
+ })
682
+ @Index()
683
+ @TableColumn({
684
+ type: TableColumnType.ObjectID,
685
+ required: false,
686
+ canReadOnRelationQuery: true,
687
+ title: "On-Call Duty Policy ID",
688
+ description:
689
+ "ID of On-Call Duty Policy associated with this email (if any)",
690
+ })
691
+ @Column({
692
+ type: ColumnType.ObjectID,
693
+ nullable: true,
694
+ transformer: ObjectID.getDatabaseTransformer(),
695
+ })
696
+ public onCallDutyPolicyId?: ObjectID = undefined;
697
+
698
+ @ColumnAccessControl({
699
+ create: [],
700
+ read: [
701
+ Permission.ProjectOwner,
702
+ Permission.ProjectAdmin,
703
+ Permission.ProjectMember,
704
+ Permission.ReadEmailLog,
705
+ ],
706
+ update: [],
707
+ })
708
+ @TableColumn({
709
+ manyToOneRelationColumn: "onCallDutyPolicyEscalationRuleId",
710
+ type: TableColumnType.Entity,
711
+ modelType: OnCallDutyPolicyEscalationRule,
712
+ title: "On-Call Duty Policy Escalation Rule",
713
+ description:
714
+ "On-Call Duty Policy Escalation Rule associated with this email (if any)",
715
+ })
716
+ @ManyToOne(
717
+ () => {
718
+ return OnCallDutyPolicyEscalationRule;
719
+ },
720
+ {
721
+ eager: false,
722
+ nullable: true,
723
+ onDelete: "CASCADE",
724
+ orphanedRowAction: "nullify",
725
+ },
726
+ )
727
+ @JoinColumn({ name: "onCallDutyPolicyEscalationRuleId" })
728
+ public onCallDutyPolicyEscalationRule?: OnCallDutyPolicyEscalationRule =
729
+ undefined;
730
+
731
+ @ColumnAccessControl({
732
+ create: [],
733
+ read: [
734
+ Permission.ProjectOwner,
735
+ Permission.ProjectAdmin,
736
+ Permission.ProjectMember,
737
+ Permission.ReadEmailLog,
738
+ ],
739
+ update: [],
740
+ })
741
+ @Index()
742
+ @TableColumn({
743
+ type: TableColumnType.ObjectID,
744
+ required: false,
745
+ canReadOnRelationQuery: true,
746
+ title: "On-Call Duty Policy Escalation Rule ID",
747
+ description:
748
+ "ID of On-Call Duty Policy Escalation Rule associated with this email (if any)",
749
+ })
750
+ @Column({
751
+ type: ColumnType.ObjectID,
752
+ nullable: true,
753
+ transformer: ObjectID.getDatabaseTransformer(),
754
+ })
755
+ public onCallDutyPolicyEscalationRuleId?: ObjectID = undefined;
756
+
757
+ @ColumnAccessControl({
758
+ create: [],
759
+ read: [
760
+ Permission.ProjectOwner,
761
+ Permission.ProjectAdmin,
762
+ Permission.ProjectMember,
763
+ Permission.ReadEmailLog,
764
+ ],
765
+ update: [],
766
+ })
767
+ @TableColumn({
768
+ manyToOneRelationColumn: "onCallDutyPolicyScheduleId",
769
+ type: TableColumnType.Entity,
770
+ modelType: OnCallDutyPolicySchedule,
771
+ title: "On-Call Duty Policy Schedule",
772
+ description:
773
+ "On-Call Duty Policy Schedule associated with this email (if any)",
774
+ })
775
+ @ManyToOne(
776
+ () => {
777
+ return OnCallDutyPolicySchedule;
778
+ },
779
+ {
780
+ eager: false,
781
+ nullable: true,
782
+ onDelete: "CASCADE",
783
+ orphanedRowAction: "nullify",
784
+ },
785
+ )
786
+ @JoinColumn({ name: "onCallDutyPolicyScheduleId" })
787
+ public onCallDutyPolicySchedule?: OnCallDutyPolicySchedule = undefined;
788
+
789
+ @ColumnAccessControl({
790
+ create: [],
791
+ read: [
792
+ Permission.ProjectOwner,
793
+ Permission.ProjectAdmin,
794
+ Permission.ProjectMember,
795
+ Permission.ReadEmailLog,
796
+ ],
797
+ update: [],
798
+ })
799
+ @Index()
800
+ @TableColumn({
801
+ type: TableColumnType.ObjectID,
802
+ required: false,
803
+ canReadOnRelationQuery: true,
804
+ title: "On-Call Duty Policy Schedule ID",
805
+ description:
806
+ "ID of On-Call Duty Policy Schedule associated with this email (if any)",
807
+ })
808
+ @Column({
809
+ type: ColumnType.ObjectID,
810
+ nullable: true,
811
+ transformer: ObjectID.getDatabaseTransformer(),
812
+ })
813
+ public onCallDutyPolicyScheduleId?: ObjectID = undefined;
814
+
815
+ @ColumnAccessControl({
816
+ create: [],
817
+ read: [
818
+ Permission.ProjectOwner,
819
+ Permission.ProjectAdmin,
820
+ Permission.ProjectMember,
821
+ Permission.ReadEmailLog,
822
+ ],
823
+ update: [],
824
+ })
825
+ @TableColumn({
826
+ manyToOneRelationColumn: "teamId",
827
+ type: TableColumnType.Entity,
828
+ modelType: Team,
829
+ title: "Team",
830
+ description: "Team associated with this email (if any)",
831
+ })
832
+ @ManyToOne(
833
+ () => {
834
+ return Team;
835
+ },
836
+ {
837
+ eager: false,
838
+ nullable: true,
839
+ onDelete: "CASCADE",
840
+ orphanedRowAction: "nullify",
841
+ },
842
+ )
843
+ @JoinColumn({ name: "teamId" })
844
+ public team?: Team = undefined;
845
+
846
+ @ColumnAccessControl({
847
+ create: [],
848
+ read: [
849
+ Permission.ProjectOwner,
850
+ Permission.ProjectAdmin,
851
+ Permission.ProjectMember,
852
+ Permission.ReadEmailLog,
853
+ ],
854
+ update: [],
855
+ })
856
+ @Index()
857
+ @TableColumn({
858
+ type: TableColumnType.ObjectID,
859
+ required: false,
860
+ canReadOnRelationQuery: true,
861
+ title: "Team ID",
862
+ description: "ID of Team associated with this email (if any)",
863
+ })
864
+ @Column({
865
+ type: ColumnType.ObjectID,
866
+ nullable: true,
867
+ transformer: ObjectID.getDatabaseTransformer(),
868
+ })
869
+ public teamId?: ObjectID = undefined;
870
+
292
871
  @ColumnAccessControl({
293
872
  create: [],
294
873
  read: [],
@@ -433,7 +433,7 @@ export default class IncidentStateTimeline extends BaseModel {
433
433
  Permission.ProjectOwner,
434
434
  Permission.ProjectAdmin,
435
435
  Permission.ProjectMember,
436
- Permission.CreateIncidentPublicNote,
436
+ Permission.CreateIncidentStateTimeline,
437
437
  ],
438
438
  read: [
439
439
  Permission.ProjectOwner,
@@ -100,6 +100,8 @@ import ServiceCopilotCodeRepository from "./ServiceCopilotCodeRepository";
100
100
  import ShortLink from "./ShortLink";
101
101
  // SMS
102
102
  import SmsLog from "./SmsLog";
103
+ import PushNotificationLog from "./PushNotificationLog";
104
+ import WorkspaceNotificationLog from "./WorkspaceNotificationLog";
103
105
  // Status Page
104
106
  import StatusPage from "./StatusPage";
105
107
  import StatusPageAnnouncement from "./StatusPageAnnouncement";
@@ -292,6 +294,8 @@ const AllModelTypes: Array<{
292
294
  StatusPageOwnerUser,
293
295
 
294
296
  SmsLog,
297
+ PushNotificationLog,
298
+ WorkspaceNotificationLog,
295
299
  CallLog,
296
300
  EmailLog,
297
301
 
@@ -455,7 +455,7 @@ export default class OnCallDutyPolicy extends BaseModel {
455
455
  @TableColumn({
456
456
  required: true,
457
457
  isDefaultValueColumn: true,
458
- type: TableColumnType.Boolean,
458
+ type: TableColumnType.Number,
459
459
  canReadOnRelationQuery: true,
460
460
  title: "Repeat Policy Times If No One Acknowledges",
461
461
  description: