@oneuptime/common 7.0.4868 → 7.0.4892

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 (106) hide show
  1. package/Models/DatabaseModels/Incident.ts +55 -9
  2. package/Models/DatabaseModels/IncidentPublicNote.ts +54 -9
  3. package/Models/DatabaseModels/IncidentStateTimeline.ts +55 -9
  4. package/Models/DatabaseModels/Index.ts +2 -0
  5. package/Models/DatabaseModels/ProjectUser.ts +2 -2
  6. package/Models/DatabaseModels/ScheduledMaintenance.ts +55 -9
  7. package/Models/DatabaseModels/ScheduledMaintenancePublicNote.ts +54 -9
  8. package/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.ts +55 -9
  9. package/Models/DatabaseModels/StatusPage.ts +10 -0
  10. package/Models/DatabaseModels/StatusPageAnnouncement.ts +52 -7
  11. package/Models/DatabaseModels/StatusPageSCIM.ts +469 -0
  12. package/Server/EnvironmentConfig.ts +9 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1754384418632-MigrationName.ts +63 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/1754412708044-MigrationName.ts +149 -0
  15. package/Server/Infrastructure/Postgres/SchemaMigrations/1754415281937-MigrationName.ts +149 -0
  16. package/Server/Infrastructure/Postgres/SchemaMigrations/1754484441975-UpdateSubscriberNotificationStatusToEnum.ts +249 -0
  17. package/Server/Infrastructure/Postgres/SchemaMigrations/1754484441976-RenameSubscriberNotificationFailedReasonToStatusMessage.ts +56 -0
  18. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
  19. package/Server/Middleware/SCIMAuthorization.ts +57 -24
  20. package/Server/Services/DatabaseService.ts +5 -0
  21. package/Server/Services/IncidentPublicNoteService.ts +16 -0
  22. package/Server/Services/IncidentService.ts +44 -1
  23. package/Server/Services/IncidentStateTimelineService.ts +18 -1
  24. package/Server/Services/ScheduledMaintenancePublicNoteService.ts +16 -0
  25. package/Server/Services/ScheduledMaintenanceService.ts +48 -4
  26. package/Server/Services/ScheduledMaintenanceStateTimelineService.ts +14 -1
  27. package/Server/Services/StatusPageAnnouncementService.ts +46 -0
  28. package/Server/Services/StatusPageSCIMService.ts +27 -0
  29. package/Types/StatusPage/StatusPageSubscriberNotificationStatus.ts +9 -0
  30. package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +991 -0
  31. package/UI/Components/Charts/ChartLibrary/SparkChart/SparkChart.tsx +367 -0
  32. package/UI/Components/Checkbox/CheckboxViewer.tsx +7 -18
  33. package/UI/Components/IconText/IconText.tsx +91 -0
  34. package/UI/Components/IconText/Index.ts +3 -0
  35. package/UI/Components/Modal/ConfirmModal.tsx +1 -1
  36. package/build/dist/Models/DatabaseModels/Incident.js +56 -11
  37. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  38. package/build/dist/Models/DatabaseModels/IncidentPublicNote.js +56 -11
  39. package/build/dist/Models/DatabaseModels/IncidentPublicNote.js.map +1 -1
  40. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js +56 -11
  41. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js.map +1 -1
  42. package/build/dist/Models/DatabaseModels/Index.js +2 -0
  43. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  44. package/build/dist/Models/DatabaseModels/ProjectUser.js +2 -2
  45. package/build/dist/Models/DatabaseModels/ProjectUser.js.map +1 -1
  46. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +56 -11
  47. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  48. package/build/dist/Models/DatabaseModels/ScheduledMaintenancePublicNote.js +56 -11
  49. package/build/dist/Models/DatabaseModels/ScheduledMaintenancePublicNote.js.map +1 -1
  50. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js +56 -11
  51. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js.map +1 -1
  52. package/build/dist/Models/DatabaseModels/StatusPage.js +10 -0
  53. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  54. package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js +54 -9
  55. package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js.map +1 -1
  56. package/build/dist/Models/DatabaseModels/StatusPageSCIM.js +492 -0
  57. package/build/dist/Models/DatabaseModels/StatusPageSCIM.js.map +1 -0
  58. package/build/dist/Server/EnvironmentConfig.js +3 -1
  59. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  60. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1754384418632-MigrationName.js +28 -0
  61. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1754384418632-MigrationName.js.map +1 -0
  62. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1754412708044-MigrationName.js +56 -0
  63. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1754412708044-MigrationName.js.map +1 -0
  64. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1754415281937-MigrationName.js +56 -0
  65. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1754415281937-MigrationName.js.map +1 -0
  66. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1754484441975-UpdateSubscriberNotificationStatusToEnum.js +108 -0
  67. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1754484441975-UpdateSubscriberNotificationStatusToEnum.js.map +1 -0
  68. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1754484441976-RenameSubscriberNotificationFailedReasonToStatusMessage.js +24 -0
  69. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1754484441976-RenameSubscriberNotificationFailedReasonToStatusMessage.js.map +1 -0
  70. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
  71. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  72. package/build/dist/Server/Middleware/SCIMAuthorization.js +48 -18
  73. package/build/dist/Server/Middleware/SCIMAuthorization.js.map +1 -1
  74. package/build/dist/Server/Services/DatabaseService.js +4 -0
  75. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  76. package/build/dist/Server/Services/IncidentPublicNoteService.js +12 -0
  77. package/build/dist/Server/Services/IncidentPublicNoteService.js.map +1 -1
  78. package/build/dist/Server/Services/IncidentService.js +34 -1
  79. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  80. package/build/dist/Server/Services/IncidentStateTimelineService.js +16 -1
  81. package/build/dist/Server/Services/IncidentStateTimelineService.js.map +1 -1
  82. package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js +12 -0
  83. package/build/dist/Server/Services/ScheduledMaintenancePublicNoteService.js.map +1 -1
  84. package/build/dist/Server/Services/ScheduledMaintenanceService.js +38 -2
  85. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  86. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js +14 -1
  87. package/build/dist/Server/Services/ScheduledMaintenanceStateTimelineService.js.map +1 -1
  88. package/build/dist/Server/Services/StatusPageAnnouncementService.js +37 -0
  89. package/build/dist/Server/Services/StatusPageAnnouncementService.js.map +1 -1
  90. package/build/dist/Server/Services/StatusPageSCIMService.js +20 -0
  91. package/build/dist/Server/Services/StatusPageSCIMService.js.map +1 -0
  92. package/build/dist/Types/StatusPage/StatusPageSubscriberNotificationStatus.js +10 -0
  93. package/build/dist/Types/StatusPage/StatusPageSubscriberNotificationStatus.js.map +1 -0
  94. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +436 -0
  95. package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -0
  96. package/build/dist/UI/Components/Charts/ChartLibrary/SparkChart/SparkChart.js +99 -0
  97. package/build/dist/UI/Components/Charts/ChartLibrary/SparkChart/SparkChart.js.map +1 -0
  98. package/build/dist/UI/Components/Checkbox/CheckboxViewer.js +3 -5
  99. package/build/dist/UI/Components/Checkbox/CheckboxViewer.js.map +1 -1
  100. package/build/dist/UI/Components/IconText/IconText.js +38 -0
  101. package/build/dist/UI/Components/IconText/IconText.js.map +1 -0
  102. package/build/dist/UI/Components/IconText/Index.js +3 -0
  103. package/build/dist/UI/Components/IconText/Index.js.map +1 -0
  104. package/build/dist/UI/Components/Modal/ConfirmModal.js +1 -1
  105. package/build/dist/UI/Components/Modal/ConfirmModal.js.map +1 -1
  106. package/package.json +1 -1
@@ -27,6 +27,7 @@ import IconProp from "../../Types/Icon/IconProp";
27
27
  import { JSONObject } from "../../Types/JSON";
28
28
  import ObjectID from "../../Types/ObjectID";
29
29
  import Permission from "../../Types/Permission";
30
+ import StatusPageSubscriberNotificationStatus from "../../Types/StatusPage/StatusPageSubscriberNotificationStatus";
30
31
  import {
31
32
  Column,
32
33
  Entity,
@@ -733,29 +734,74 @@ export default class Incident extends BaseModel {
733
734
  public changeMonitorStatusToId?: ObjectID = undefined;
734
735
 
735
736
  @ColumnAccessControl({
736
- create: [],
737
+ create: [
738
+ Permission.ProjectOwner,
739
+ Permission.ProjectAdmin,
740
+ Permission.ProjectMember,
741
+ Permission.CreateProjectIncident,
742
+ ],
737
743
  read: [
738
744
  Permission.ProjectOwner,
739
745
  Permission.ProjectAdmin,
740
746
  Permission.ProjectMember,
741
747
  Permission.ReadProjectIncident,
742
748
  ],
743
- update: [],
749
+ update: [
750
+ Permission.ProjectOwner,
751
+ Permission.ProjectAdmin,
752
+ Permission.ProjectMember,
753
+ Permission.EditProjectIncident,
754
+ ],
744
755
  })
745
756
  @TableColumn({
746
757
  isDefaultValueColumn: true,
747
758
  computed: true,
748
759
  hideColumnInDocumentation: true,
749
- type: TableColumnType.Boolean,
750
- title: "Are subscribers notified?",
751
- description: "Are subscribers notified about this incident?",
752
- defaultValue: false,
760
+ type: TableColumnType.ShortText,
761
+ title: "Subscriber Notification Status",
762
+ description:
763
+ "Status of notification sent to subscribers about this incident",
764
+ defaultValue: StatusPageSubscriberNotificationStatus.Pending,
753
765
  })
754
766
  @Column({
755
- type: ColumnType.Boolean,
756
- default: false,
767
+ type: ColumnType.ShortText,
768
+ default: StatusPageSubscriberNotificationStatus.Pending,
769
+ })
770
+ public subscriberNotificationStatusOnIncidentCreated?: StatusPageSubscriberNotificationStatus =
771
+ undefined;
772
+
773
+ @ColumnAccessControl({
774
+ create: [
775
+ Permission.ProjectOwner,
776
+ Permission.ProjectAdmin,
777
+ Permission.ProjectMember,
778
+ Permission.CreateProjectIncident,
779
+ ],
780
+ read: [
781
+ Permission.ProjectOwner,
782
+ Permission.ProjectAdmin,
783
+ Permission.ProjectMember,
784
+ Permission.ReadProjectIncident,
785
+ ],
786
+ update: [
787
+ Permission.ProjectOwner,
788
+ Permission.ProjectAdmin,
789
+ Permission.ProjectMember,
790
+ Permission.EditProjectIncident,
791
+ ],
792
+ })
793
+ @TableColumn({
794
+ type: TableColumnType.VeryLongText,
795
+ title: "Notification Status Message",
796
+ description:
797
+ "Status message for subscriber notifications - includes success messages, failure reasons, or skip reasons",
798
+ required: false,
799
+ })
800
+ @Column({
801
+ type: ColumnType.VeryLongText,
802
+ nullable: true,
757
803
  })
758
- public isStatusPageSubscribersNotifiedOnIncidentCreated?: boolean = undefined;
804
+ public subscriberNotificationStatusMessage?: string = undefined;
759
805
 
760
806
  @ColumnAccessControl({
761
807
  create: [
@@ -17,6 +17,7 @@ import TenantColumn from "../../Types/Database/TenantColumn";
17
17
  import IconProp from "../../Types/Icon/IconProp";
18
18
  import ObjectID from "../../Types/ObjectID";
19
19
  import Permission from "../../Types/Permission";
20
+ import StatusPageSubscriberNotificationStatus from "../../Types/StatusPage/StatusPageSubscriberNotificationStatus";
20
21
  import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
21
22
 
22
23
  @EnableDocumentation()
@@ -341,29 +342,73 @@ export default class IncidentPublicNote extends BaseModel {
341
342
  public note?: string = undefined;
342
343
 
343
344
  @ColumnAccessControl({
344
- create: [],
345
+ create: [
346
+ Permission.ProjectOwner,
347
+ Permission.ProjectAdmin,
348
+ Permission.ProjectMember,
349
+ Permission.CreateIncidentPublicNote,
350
+ ],
345
351
  read: [
346
352
  Permission.ProjectOwner,
347
353
  Permission.ProjectAdmin,
348
354
  Permission.ProjectMember,
349
355
  Permission.ReadIncidentPublicNote,
350
356
  ],
351
- update: [],
357
+ update: [
358
+ Permission.ProjectOwner,
359
+ Permission.ProjectAdmin,
360
+ Permission.ProjectMember,
361
+ Permission.EditIncidentPublicNote,
362
+ ],
352
363
  })
353
364
  @TableColumn({
354
365
  isDefaultValueColumn: true,
355
366
  computed: true,
356
367
  hideColumnInDocumentation: true,
357
- type: TableColumnType.Boolean,
358
- title: "Are subscribers notified?",
359
- description: "Are subscribers notified about this note?",
360
- defaultValue: false,
368
+ type: TableColumnType.ShortText,
369
+ title: "Subscriber Notification Status",
370
+ description: "Status of notification sent to subscribers about this note",
371
+ defaultValue: StatusPageSubscriberNotificationStatus.Pending,
361
372
  })
362
373
  @Column({
363
- type: ColumnType.Boolean,
364
- default: false,
374
+ type: ColumnType.ShortText,
375
+ default: StatusPageSubscriberNotificationStatus.Pending,
376
+ })
377
+ public subscriberNotificationStatusOnNoteCreated?: StatusPageSubscriberNotificationStatus =
378
+ undefined;
379
+
380
+ @ColumnAccessControl({
381
+ create: [
382
+ Permission.ProjectOwner,
383
+ Permission.ProjectAdmin,
384
+ Permission.ProjectMember,
385
+ Permission.CreateIncidentPublicNote,
386
+ ],
387
+ read: [
388
+ Permission.ProjectOwner,
389
+ Permission.ProjectAdmin,
390
+ Permission.ProjectMember,
391
+ Permission.ReadIncidentPublicNote,
392
+ ],
393
+ update: [
394
+ Permission.ProjectOwner,
395
+ Permission.ProjectAdmin,
396
+ Permission.ProjectMember,
397
+ Permission.EditIncidentPublicNote,
398
+ ],
399
+ })
400
+ @TableColumn({
401
+ type: TableColumnType.VeryLongText,
402
+ title: "Notification Status Message",
403
+ description:
404
+ "Status message for subscriber notifications - includes success messages, failure reasons, or skip reasons",
405
+ required: false,
406
+ })
407
+ @Column({
408
+ type: ColumnType.VeryLongText,
409
+ nullable: true,
365
410
  })
366
- public isStatusPageSubscribersNotifiedOnNoteCreated?: boolean = undefined;
411
+ public subscriberNotificationStatusMessage?: string = undefined;
367
412
 
368
413
  @ColumnAccessControl({
369
414
  create: [
@@ -19,6 +19,7 @@ import IconProp from "../../Types/Icon/IconProp";
19
19
  import { JSONObject } from "../../Types/JSON";
20
20
  import ObjectID from "../../Types/ObjectID";
21
21
  import Permission from "../../Types/Permission";
22
+ import StatusPageSubscriberNotificationStatus from "../../Types/StatusPage/StatusPageSubscriberNotificationStatus";
22
23
  import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
23
24
 
24
25
  @EnableDocumentation()
@@ -391,29 +392,74 @@ export default class IncidentStateTimeline extends BaseModel {
391
392
  public incidentStateId?: ObjectID = undefined;
392
393
 
393
394
  @ColumnAccessControl({
394
- create: [],
395
+ create: [
396
+ Permission.ProjectOwner,
397
+ Permission.ProjectAdmin,
398
+ Permission.ProjectMember,
399
+ Permission.CreateIncidentStateTimeline,
400
+ ],
395
401
  read: [
396
402
  Permission.ProjectOwner,
397
403
  Permission.ProjectAdmin,
398
404
  Permission.ProjectMember,
399
405
  Permission.ReadIncidentStateTimeline,
400
406
  ],
401
- update: [],
407
+ update: [
408
+ Permission.ProjectOwner,
409
+ Permission.ProjectAdmin,
410
+ Permission.ProjectMember,
411
+ Permission.EditIncidentStateTimeline,
412
+ ],
402
413
  })
403
414
  @TableColumn({
404
415
  isDefaultValueColumn: true,
405
416
  computed: true,
406
417
  hideColumnInDocumentation: true,
407
- type: TableColumnType.Boolean,
408
- title: "Are subscribers notified?",
409
- description: "Are subscribers notified about this incident state change?",
410
- defaultValue: false,
418
+ type: TableColumnType.ShortText,
419
+ title: "Subscriber Notification Status",
420
+ description:
421
+ "Status of notification sent to subscribers about this incident state change",
422
+ defaultValue: StatusPageSubscriberNotificationStatus.Pending,
411
423
  })
412
424
  @Column({
413
- type: ColumnType.Boolean,
414
- default: false,
425
+ type: ColumnType.ShortText,
426
+ default: StatusPageSubscriberNotificationStatus.Pending,
427
+ })
428
+ public subscriberNotificationStatus?: StatusPageSubscriberNotificationStatus =
429
+ undefined;
430
+
431
+ @ColumnAccessControl({
432
+ create: [
433
+ Permission.ProjectOwner,
434
+ Permission.ProjectAdmin,
435
+ Permission.ProjectMember,
436
+ Permission.CreateIncidentPublicNote,
437
+ ],
438
+ read: [
439
+ Permission.ProjectOwner,
440
+ Permission.ProjectAdmin,
441
+ Permission.ProjectMember,
442
+ Permission.ReadIncidentStateTimeline,
443
+ ],
444
+ update: [
445
+ Permission.ProjectOwner,
446
+ Permission.ProjectAdmin,
447
+ Permission.ProjectMember,
448
+ Permission.EditIncidentStateTimeline,
449
+ ],
450
+ })
451
+ @TableColumn({
452
+ type: TableColumnType.VeryLongText,
453
+ title: "Notification Status Message",
454
+ description:
455
+ "Status message for subscriber notifications - includes success messages, failure reasons, or skip reasons",
456
+ required: false,
457
+ })
458
+ @Column({
459
+ type: ColumnType.VeryLongText,
460
+ nullable: true,
415
461
  })
416
- public isStatusPageSubscribersNotified?: boolean = undefined;
462
+ public subscriberNotificationStatusMessage?: string = undefined;
417
463
 
418
464
  @ColumnAccessControl({
419
465
  create: [
@@ -114,6 +114,7 @@ import StatusPageOwnerTeam from "./StatusPageOwnerTeam";
114
114
  import StatusPageOwnerUser from "./StatusPageOwnerUser";
115
115
  import StatusPagePrivateUser from "./StatusPagePrivateUser";
116
116
  import StatusPageResource from "./StatusPageResource";
117
+ import StatusPageSCIM from "./StatusPageSCIM";
117
118
  import StatusPageSSO from "./StatusPageSso";
118
119
  import StatusPageSubscriber from "./StatusPageSubscriber";
119
120
  // Team
@@ -277,6 +278,7 @@ const AllModelTypes: Array<{
277
278
 
278
279
  ProjectSSO,
279
280
  StatusPageSSO,
281
+ StatusPageSCIM,
280
282
 
281
283
  MonitorProbe,
282
284
 
@@ -49,8 +49,8 @@ import {
49
49
  })
50
50
  @TableMetadata({
51
51
  tableName: "ProjectUser",
52
- singularName: "User",
53
- pluralName: "Users",
52
+ singularName: "Project User",
53
+ pluralName: "Project Users",
54
54
  icon: IconProp.User,
55
55
  tableDescription:
56
56
  "This model connects users and teams. This is an internal table. Its a view on TeamMembers table.",
@@ -25,6 +25,7 @@ import IconProp from "../../Types/Icon/IconProp";
25
25
  import { JSONObject } from "../../Types/JSON";
26
26
  import ObjectID from "../../Types/ObjectID";
27
27
  import Permission from "../../Types/Permission";
28
+ import StatusPageSubscriberNotificationStatus from "../../Types/StatusPage/StatusPageSubscriberNotificationStatus";
28
29
  import {
29
30
  Column,
30
31
  Entity,
@@ -715,29 +716,74 @@ export default class ScheduledMaintenance extends BaseModel {
715
716
  public endsAt?: Date = undefined;
716
717
 
717
718
  @ColumnAccessControl({
718
- create: [],
719
+ create: [
720
+ Permission.ProjectOwner,
721
+ Permission.ProjectAdmin,
722
+ Permission.ProjectMember,
723
+ Permission.CreateProjectScheduledMaintenance,
724
+ ],
719
725
  read: [
720
726
  Permission.ProjectOwner,
721
727
  Permission.ProjectAdmin,
722
728
  Permission.ProjectMember,
723
729
  Permission.ReadProjectScheduledMaintenance,
724
730
  ],
725
- update: [],
731
+ update: [
732
+ Permission.ProjectOwner,
733
+ Permission.ProjectAdmin,
734
+ Permission.ProjectMember,
735
+ Permission.EditProjectScheduledMaintenance,
736
+ ],
726
737
  })
727
738
  @TableColumn({
728
739
  isDefaultValueColumn: true,
729
740
  computed: true,
730
741
  hideColumnInDocumentation: true,
731
- type: TableColumnType.Boolean,
732
- title: "Status Page Subscribers Notified On Event Scheduled",
733
- description: "Status Page Subscribers Notified On Event Scheduled",
734
- defaultValue: false,
742
+ type: TableColumnType.ShortText,
743
+ title: "Subscriber Notification Status On Event Scheduled",
744
+ description:
745
+ "Status of notification sent to subscribers when event was scheduled",
746
+ defaultValue: StatusPageSubscriberNotificationStatus.Pending,
735
747
  })
736
748
  @Column({
737
- type: ColumnType.Boolean,
738
- default: false,
749
+ type: ColumnType.ShortText,
750
+ default: StatusPageSubscriberNotificationStatus.Pending,
751
+ })
752
+ public subscriberNotificationStatusOnEventScheduled?: StatusPageSubscriberNotificationStatus =
753
+ undefined;
754
+
755
+ @ColumnAccessControl({
756
+ create: [
757
+ Permission.ProjectOwner,
758
+ Permission.ProjectAdmin,
759
+ Permission.ProjectMember,
760
+ Permission.CreateIncidentPublicNote,
761
+ ],
762
+ read: [
763
+ Permission.ProjectOwner,
764
+ Permission.ProjectAdmin,
765
+ Permission.ProjectMember,
766
+ Permission.ReadProjectScheduledMaintenance,
767
+ ],
768
+ update: [
769
+ Permission.ProjectOwner,
770
+ Permission.ProjectAdmin,
771
+ Permission.ProjectMember,
772
+ Permission.EditProjectScheduledMaintenance,
773
+ ],
774
+ })
775
+ @TableColumn({
776
+ type: TableColumnType.VeryLongText,
777
+ title: "Notification Status Message On Event Scheduled",
778
+ description:
779
+ "Status message for subscriber notifications when event is scheduled - includes success messages, failure reasons, or skip reasons",
780
+ required: false,
781
+ })
782
+ @Column({
783
+ type: ColumnType.VeryLongText,
784
+ nullable: true,
739
785
  })
740
- public isStatusPageSubscribersNotifiedOnEventScheduled?: boolean = undefined;
786
+ public subscriberNotificationStatusMessage?: string = undefined;
741
787
 
742
788
  @ColumnAccessControl({
743
789
  create: [
@@ -17,6 +17,7 @@ import TenantColumn from "../../Types/Database/TenantColumn";
17
17
  import IconProp from "../../Types/Icon/IconProp";
18
18
  import ObjectID from "../../Types/ObjectID";
19
19
  import Permission from "../../Types/Permission";
20
+ import StatusPageSubscriberNotificationStatus from "../../Types/StatusPage/StatusPageSubscriberNotificationStatus";
20
21
  import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
21
22
 
22
23
  @EnableDocumentation()
@@ -342,29 +343,73 @@ export default class ScheduledMaintenancePublicNote extends BaseModel {
342
343
  public note?: string = undefined;
343
344
 
344
345
  @ColumnAccessControl({
345
- create: [],
346
+ create: [
347
+ Permission.ProjectOwner,
348
+ Permission.ProjectAdmin,
349
+ Permission.ProjectMember,
350
+ Permission.CreateScheduledMaintenancePublicNote,
351
+ ],
346
352
  read: [
347
353
  Permission.ProjectOwner,
348
354
  Permission.ProjectAdmin,
349
355
  Permission.ProjectMember,
350
356
  Permission.ReadScheduledMaintenancePublicNote,
351
357
  ],
352
- update: [],
358
+ update: [
359
+ Permission.ProjectOwner,
360
+ Permission.ProjectAdmin,
361
+ Permission.ProjectMember,
362
+ Permission.EditScheduledMaintenancePublicNote,
363
+ ],
353
364
  })
354
365
  @TableColumn({
355
366
  isDefaultValueColumn: true,
356
367
  computed: true,
357
368
  hideColumnInDocumentation: true,
358
- type: TableColumnType.Boolean,
359
- title: "Are subscribers notified?",
360
- description: "Are subscribers notified about this note?",
361
- defaultValue: false,
369
+ type: TableColumnType.ShortText,
370
+ title: "Subscriber Notification Status",
371
+ description: "Status of notification sent to subscribers about this note",
372
+ defaultValue: StatusPageSubscriberNotificationStatus.Pending,
362
373
  })
363
374
  @Column({
364
- type: ColumnType.Boolean,
365
- default: false,
375
+ type: ColumnType.ShortText,
376
+ default: StatusPageSubscriberNotificationStatus.Pending,
377
+ })
378
+ public subscriberNotificationStatusOnNoteCreated?: StatusPageSubscriberNotificationStatus =
379
+ undefined;
380
+
381
+ @ColumnAccessControl({
382
+ create: [
383
+ Permission.ProjectOwner,
384
+ Permission.ProjectAdmin,
385
+ Permission.ProjectMember,
386
+ Permission.CreateScheduledMaintenancePublicNote,
387
+ ],
388
+ read: [
389
+ Permission.ProjectOwner,
390
+ Permission.ProjectAdmin,
391
+ Permission.ProjectMember,
392
+ Permission.ReadScheduledMaintenancePublicNote,
393
+ ],
394
+ update: [
395
+ Permission.ProjectOwner,
396
+ Permission.ProjectAdmin,
397
+ Permission.ProjectMember,
398
+ Permission.EditScheduledMaintenancePublicNote,
399
+ ],
400
+ })
401
+ @TableColumn({
402
+ type: TableColumnType.VeryLongText,
403
+ title: "Notification Status Message",
404
+ description:
405
+ "Status message for subscriber notifications - includes success messages, failure reasons, or skip reasons",
406
+ required: false,
407
+ })
408
+ @Column({
409
+ type: ColumnType.VeryLongText,
410
+ nullable: true,
366
411
  })
367
- public isStatusPageSubscribersNotifiedOnNoteCreated?: boolean = undefined;
412
+ public subscriberNotificationStatusMessage?: string = undefined;
368
413
 
369
414
  @ColumnAccessControl({
370
415
  create: [
@@ -18,6 +18,7 @@ import TenantColumn from "../../Types/Database/TenantColumn";
18
18
  import IconProp from "../../Types/Icon/IconProp";
19
19
  import ObjectID from "../../Types/ObjectID";
20
20
  import Permission from "../../Types/Permission";
21
+ import StatusPageSubscriberNotificationStatus from "../../Types/StatusPage/StatusPageSubscriberNotificationStatus";
21
22
  import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
22
23
 
23
24
  @EnableDocumentation()
@@ -388,29 +389,74 @@ export default class ScheduledMaintenanceStateTimeline extends BaseModel {
388
389
  public scheduledMaintenanceStateId?: ObjectID = undefined;
389
390
 
390
391
  @ColumnAccessControl({
391
- create: [],
392
+ create: [
393
+ Permission.ProjectOwner,
394
+ Permission.ProjectAdmin,
395
+ Permission.ProjectMember,
396
+ Permission.CreateScheduledMaintenanceStateTimeline,
397
+ ],
392
398
  read: [
393
399
  Permission.ProjectOwner,
394
400
  Permission.ProjectAdmin,
395
401
  Permission.ProjectMember,
396
402
  Permission.ReadScheduledMaintenanceStateTimeline,
397
403
  ],
398
- update: [],
404
+ update: [
405
+ Permission.ProjectOwner,
406
+ Permission.ProjectAdmin,
407
+ Permission.ProjectMember,
408
+ Permission.EditScheduledMaintenanceStateTimeline,
409
+ ],
399
410
  })
400
411
  @TableColumn({
401
412
  isDefaultValueColumn: true,
402
413
  computed: true,
403
414
  hideColumnInDocumentation: true,
404
- type: TableColumnType.Boolean,
405
- title: "Are subscribers notified?",
406
- description: "Are subscribers notified about this incident state change?",
407
- defaultValue: false,
415
+ type: TableColumnType.ShortText,
416
+ title: "Subscriber Notification Status",
417
+ description:
418
+ "Status of notification sent to subscribers about this scheduled maintenance state change",
419
+ defaultValue: StatusPageSubscriberNotificationStatus.Pending,
408
420
  })
409
421
  @Column({
410
- type: ColumnType.Boolean,
411
- default: false,
422
+ type: ColumnType.ShortText,
423
+ default: StatusPageSubscriberNotificationStatus.Pending,
424
+ })
425
+ public subscriberNotificationStatus?: StatusPageSubscriberNotificationStatus =
426
+ undefined;
427
+
428
+ @ColumnAccessControl({
429
+ create: [
430
+ Permission.ProjectOwner,
431
+ Permission.ProjectAdmin,
432
+ Permission.ProjectMember,
433
+ Permission.CreateScheduledMaintenanceStateTimeline,
434
+ ],
435
+ read: [
436
+ Permission.ProjectOwner,
437
+ Permission.ProjectAdmin,
438
+ Permission.ProjectMember,
439
+ Permission.ReadScheduledMaintenanceStateTimeline,
440
+ ],
441
+ update: [
442
+ Permission.ProjectOwner,
443
+ Permission.ProjectAdmin,
444
+ Permission.ProjectMember,
445
+ Permission.EditScheduledMaintenanceStateTimeline,
446
+ ],
447
+ })
448
+ @TableColumn({
449
+ type: TableColumnType.VeryLongText,
450
+ title: "Notification Status Message",
451
+ description:
452
+ "Status message for subscriber notifications - includes success messages, failure reasons, or skip reasons",
453
+ required: false,
454
+ })
455
+ @Column({
456
+ type: ColumnType.VeryLongText,
457
+ nullable: true,
412
458
  })
413
- public isStatusPageSubscribersNotified?: boolean = undefined;
459
+ public subscriberNotificationStatusMessage?: string = undefined;
414
460
 
415
461
  @ColumnAccessControl({
416
462
  create: [
@@ -1490,6 +1490,7 @@ export default class StatusPage extends BaseModel {
1490
1490
  type: TableColumnType.Number,
1491
1491
  required: true,
1492
1492
  isDefaultValueColumn: true,
1493
+ defaultValue: 14,
1493
1494
  title: "Show incident history in days",
1494
1495
  description:
1495
1496
  "How many days of incident history should be shown on the status page (in days)?",
@@ -1526,6 +1527,7 @@ export default class StatusPage extends BaseModel {
1526
1527
  type: TableColumnType.Number,
1527
1528
  required: true,
1528
1529
  isDefaultValueColumn: true,
1530
+ defaultValue: 14,
1529
1531
  title: "Show announcement history in days",
1530
1532
  description:
1531
1533
  "How many days of announcement history should be shown on the status page (in days)?",
@@ -1562,6 +1564,7 @@ export default class StatusPage extends BaseModel {
1562
1564
  type: TableColumnType.Number,
1563
1565
  required: true,
1564
1566
  isDefaultValueColumn: true,
1567
+ defaultValue: 14,
1565
1568
  title: "Show scheduled event history in days",
1566
1569
  description:
1567
1570
  "How many days of scheduled event history should be shown on the status page (in days)?",
@@ -1633,6 +1636,7 @@ export default class StatusPage extends BaseModel {
1633
1636
  type: TableColumnType.Boolean,
1634
1637
  title: "Hide Powered By OneUptime Branding",
1635
1638
  description: "Hide Powered By OneUptime Branding?",
1639
+ defaultValue: false,
1636
1640
  })
1637
1641
  @Column({
1638
1642
  type: ColumnType.Boolean,
@@ -1788,6 +1792,7 @@ export default class StatusPage extends BaseModel {
1788
1792
  type: TableColumnType.Boolean,
1789
1793
  title: "Is Report Enabled",
1790
1794
  description: "Is Report Enabled for this Status Page?",
1795
+ defaultValue: false,
1791
1796
  })
1792
1797
  @Column({
1793
1798
  type: ColumnType.Boolean,
@@ -1971,6 +1976,7 @@ export default class StatusPage extends BaseModel {
1971
1976
  type: TableColumnType.Boolean,
1972
1977
  title: "Show Overall Uptime Percent on Status Page",
1973
1978
  description: "Show Overall Uptime Percent on Status Page?",
1979
+ defaultValue: false,
1974
1980
  })
1975
1981
  @Column({
1976
1982
  type: ColumnType.Boolean,
@@ -2109,6 +2115,7 @@ export default class StatusPage extends BaseModel {
2109
2115
  type: TableColumnType.Boolean,
2110
2116
  title: "Show Incidents on Status Page",
2111
2117
  description: "Show Incidents on Status Page?",
2118
+ defaultValue: true,
2112
2119
  })
2113
2120
  @Column({
2114
2121
  type: ColumnType.Boolean,
@@ -2147,6 +2154,7 @@ export default class StatusPage extends BaseModel {
2147
2154
  type: TableColumnType.Boolean,
2148
2155
  title: "Show Announcements on Status Page",
2149
2156
  description: "Show Announcements on Status Page?",
2157
+ defaultValue: true,
2150
2158
  })
2151
2159
  @Column({
2152
2160
  type: ColumnType.Boolean,
@@ -2185,6 +2193,7 @@ export default class StatusPage extends BaseModel {
2185
2193
  type: TableColumnType.Boolean,
2186
2194
  title: "Show Scheduled Maintenance Events on Status Page",
2187
2195
  description: "Show Scheduled Maintenance Events on Status Page?",
2196
+ defaultValue: true,
2188
2197
  })
2189
2198
  @Column({
2190
2199
  type: ColumnType.Boolean,
@@ -2223,6 +2232,7 @@ export default class StatusPage extends BaseModel {
2223
2232
  type: TableColumnType.Boolean,
2224
2233
  title: "Show Subscriber Page on Status Page",
2225
2234
  description: "Show Subscriber Page on Status Page?",
2235
+ defaultValue: true,
2226
2236
  })
2227
2237
  @Column({
2228
2238
  type: ColumnType.Boolean,