@oneuptime/common 11.3.20 → 11.3.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/Models/AnalyticsModels/AnalyticsBaseModel/CommonModel.ts +2 -0
  2. package/Models/AnalyticsModels/ExceptionInstance.ts +1 -0
  3. package/Models/AnalyticsModels/Log.ts +1 -0
  4. package/Models/AnalyticsModels/Metric.ts +1 -0
  5. package/Models/AnalyticsModels/MonitorLog.ts +1 -0
  6. package/Models/AnalyticsModels/Span.ts +1 -0
  7. package/Models/DatabaseModels/Alert.ts +100 -0
  8. package/Models/DatabaseModels/AlertInternalNote.ts +2 -0
  9. package/Models/DatabaseModels/AlertReminderRule.ts +597 -0
  10. package/Models/DatabaseModels/AlertSeverity.ts +2 -0
  11. package/Models/DatabaseModels/AlertState.ts +2 -0
  12. package/Models/DatabaseModels/AlertStateTimeline.ts +2 -0
  13. package/Models/DatabaseModels/EnterpriseLicenseInstance.ts +173 -0
  14. package/Models/DatabaseModels/GlobalConfig.ts +19 -0
  15. package/Models/DatabaseModels/Incident.ts +100 -0
  16. package/Models/DatabaseModels/IncidentInternalNote.ts +2 -0
  17. package/Models/DatabaseModels/IncidentPublicNote.ts +2 -0
  18. package/Models/DatabaseModels/IncidentReminderRule.ts +597 -0
  19. package/Models/DatabaseModels/IncidentSeverity.ts +2 -0
  20. package/Models/DatabaseModels/IncidentStateTimeline.ts +2 -0
  21. package/Models/DatabaseModels/Index.ts +8 -0
  22. package/Models/DatabaseModels/Label.ts +2 -0
  23. package/Models/DatabaseModels/MonitorStatusTimeline.ts +2 -0
  24. package/Models/DatabaseModels/ScheduledMaintenance.ts +100 -0
  25. package/Models/DatabaseModels/ScheduledMaintenanceReminderRule.ts +585 -0
  26. package/Models/DatabaseModels/ScheduledMaintenanceState.ts +2 -0
  27. package/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.ts +2 -0
  28. package/Models/DatabaseModels/StatusPageAnnouncement.ts +2 -0
  29. package/Server/API/DashboardAPI.ts +221 -0
  30. package/Server/API/EnterpriseLicenseAPI.ts +279 -12
  31. package/Server/API/GlobalConfigAPI.ts +81 -16
  32. package/Server/API/StatusPageAPI.ts +894 -791
  33. package/Server/EnvironmentConfig.ts +9 -0
  34. package/Server/Infrastructure/Postgres/SchemaMigrations/1783226868418-AddEnterpriseLicenseInstance.ts +47 -0
  35. package/Server/Infrastructure/Postgres/SchemaMigrations/1783234451106-AddIncidentAlertReminderRules.ts +211 -0
  36. package/Server/Infrastructure/Postgres/SchemaMigrations/1783320000000-AddScheduledMaintenanceReminderRules.ts +113 -0
  37. package/Server/Infrastructure/Postgres/SchemaMigrations/1783330000000-AddRemindWhileScheduledToScheduledMaintenanceReminderRule.ts +20 -0
  38. package/Server/Infrastructure/Postgres/SchemaMigrations/1783340000000-AddLabelsToIncidentAndAlertReminderRules.ts +69 -0
  39. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
  40. package/Server/Services/AlertReminderRuleService.ts +253 -0
  41. package/Server/Services/AlertService.ts +106 -0
  42. package/Server/Services/EnterpriseLicenseInstanceService.ts +10 -0
  43. package/Server/Services/IncidentReminderRuleService.ts +256 -0
  44. package/Server/Services/IncidentService.ts +143 -0
  45. package/Server/Services/Index.ts +8 -0
  46. package/Server/Services/IoTDeviceService.ts +99 -4
  47. package/Server/Services/ScheduledMaintenanceReminderRuleService.ts +236 -0
  48. package/Server/Services/ScheduledMaintenanceService.ts +127 -0
  49. package/Server/Services/StatusPageService.ts +104 -45
  50. package/Server/Services/TelemetryExceptionService.ts +123 -0
  51. package/Server/Services/UserNotificationSettingService.ts +24 -0
  52. package/Server/Utils/AnalyticsDatabase/Statement.ts +7 -3
  53. package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +35 -0
  54. package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +6 -4
  55. package/Server/Utils/Monitor/MonitorCriteriaDataExtractor.ts +7 -6
  56. package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +6 -4
  57. package/Server/Utils/Telemetry/IoTSnapshotScan.ts +45 -7
  58. package/Server/Utils/WhatsAppTemplateUtil.ts +10 -0
  59. package/ServiceRoute.ts +4 -0
  60. package/Tests/Server/Services/IoTDeviceService.test.ts +280 -0
  61. package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +49 -0
  62. package/Tests/Server/Utils/Monitor/Criteria/TelemetryStepMetricAlias.test.ts +390 -0
  63. package/Tests/Server/Utils/Telemetry/IoTSnapshotScan.test.ts +202 -0
  64. package/Tests/Utils/EnterpriseLicenseUsage.test.ts +165 -0
  65. package/Types/Email/EmailTemplateType.ts +3 -0
  66. package/Types/EnterpriseLicense/EnterpriseLicenseInstanceSummary.ts +18 -0
  67. package/Types/Monitor/MonitorStep.ts +32 -0
  68. package/Types/NotificationSetting/NotificationSettingEventType.ts +3 -0
  69. package/Types/Permission.ts +144 -0
  70. package/Types/Reminder/ReminderStopState.ts +6 -0
  71. package/Types/Reminder/ScheduledMaintenanceReminderStopState.ts +6 -0
  72. package/Types/WhatsApp/WhatsAppTemplates.ts +14 -0
  73. package/UI/Components/EditionLabel/EditionLabel.tsx +172 -0
  74. package/Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts +125 -0
  75. package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/CommonModel.js.map +1 -1
  76. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +1 -0
  77. package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
  78. package/build/dist/Models/AnalyticsModels/Log.js +1 -0
  79. package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
  80. package/build/dist/Models/AnalyticsModels/Metric.js +1 -0
  81. package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
  82. package/build/dist/Models/AnalyticsModels/MonitorLog.js +1 -0
  83. package/build/dist/Models/AnalyticsModels/MonitorLog.js.map +1 -1
  84. package/build/dist/Models/AnalyticsModels/Span.js +1 -0
  85. package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
  86. package/build/dist/Models/DatabaseModels/Alert.js +103 -0
  87. package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
  88. package/build/dist/Models/DatabaseModels/AlertInternalNote.js +2 -0
  89. package/build/dist/Models/DatabaseModels/AlertInternalNote.js.map +1 -1
  90. package/build/dist/Models/DatabaseModels/AlertReminderRule.js +605 -0
  91. package/build/dist/Models/DatabaseModels/AlertReminderRule.js.map +1 -0
  92. package/build/dist/Models/DatabaseModels/AlertSeverity.js +2 -0
  93. package/build/dist/Models/DatabaseModels/AlertSeverity.js.map +1 -1
  94. package/build/dist/Models/DatabaseModels/AlertState.js +2 -0
  95. package/build/dist/Models/DatabaseModels/AlertState.js.map +1 -1
  96. package/build/dist/Models/DatabaseModels/AlertStateTimeline.js +2 -0
  97. package/build/dist/Models/DatabaseModels/AlertStateTimeline.js.map +1 -1
  98. package/build/dist/Models/DatabaseModels/EnterpriseLicenseInstance.js +197 -0
  99. package/build/dist/Models/DatabaseModels/EnterpriseLicenseInstance.js.map +1 -0
  100. package/build/dist/Models/DatabaseModels/GlobalConfig.js +18 -0
  101. package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
  102. package/build/dist/Models/DatabaseModels/Incident.js +103 -0
  103. package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
  104. package/build/dist/Models/DatabaseModels/IncidentInternalNote.js +2 -0
  105. package/build/dist/Models/DatabaseModels/IncidentInternalNote.js.map +1 -1
  106. package/build/dist/Models/DatabaseModels/IncidentPublicNote.js +2 -0
  107. package/build/dist/Models/DatabaseModels/IncidentPublicNote.js.map +1 -1
  108. package/build/dist/Models/DatabaseModels/IncidentReminderRule.js +605 -0
  109. package/build/dist/Models/DatabaseModels/IncidentReminderRule.js.map +1 -0
  110. package/build/dist/Models/DatabaseModels/IncidentSeverity.js +2 -0
  111. package/build/dist/Models/DatabaseModels/IncidentSeverity.js.map +1 -1
  112. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js +2 -0
  113. package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js.map +1 -1
  114. package/build/dist/Models/DatabaseModels/Index.js +8 -0
  115. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  116. package/build/dist/Models/DatabaseModels/Label.js +2 -0
  117. package/build/dist/Models/DatabaseModels/Label.js.map +1 -1
  118. package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js +2 -0
  119. package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js.map +1 -1
  120. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +103 -0
  121. package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
  122. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceReminderRule.js +596 -0
  123. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceReminderRule.js.map +1 -0
  124. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceState.js +2 -0
  125. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceState.js.map +1 -1
  126. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js +2 -0
  127. package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js.map +1 -1
  128. package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js +2 -0
  129. package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js.map +1 -1
  130. package/build/dist/Server/API/DashboardAPI.js +166 -16
  131. package/build/dist/Server/API/DashboardAPI.js.map +1 -1
  132. package/build/dist/Server/API/EnterpriseLicenseAPI.js +203 -13
  133. package/build/dist/Server/API/EnterpriseLicenseAPI.js.map +1 -1
  134. package/build/dist/Server/API/GlobalConfigAPI.js +62 -15
  135. package/build/dist/Server/API/GlobalConfigAPI.js.map +1 -1
  136. package/build/dist/Server/API/StatusPageAPI.js +74 -31
  137. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  138. package/build/dist/Server/EnvironmentConfig.js +6 -0
  139. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  140. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783226868418-AddEnterpriseLicenseInstance.js +22 -0
  141. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783226868418-AddEnterpriseLicenseInstance.js.map +1 -0
  142. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783234451106-AddIncidentAlertReminderRules.js +78 -0
  143. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783234451106-AddIncidentAlertReminderRules.js.map +1 -0
  144. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783320000000-AddScheduledMaintenanceReminderRules.js +44 -0
  145. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783320000000-AddScheduledMaintenanceReminderRules.js.map +1 -0
  146. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783330000000-AddRemindWhileScheduledToScheduledMaintenanceReminderRule.js +12 -0
  147. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783330000000-AddRemindWhileScheduledToScheduledMaintenanceReminderRule.js.map +1 -0
  148. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783340000000-AddLabelsToIncidentAndAlertReminderRules.js +30 -0
  149. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783340000000-AddLabelsToIncidentAndAlertReminderRules.js.map +1 -0
  150. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
  151. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  152. package/build/dist/Server/Services/AlertReminderRuleService.js +228 -0
  153. package/build/dist/Server/Services/AlertReminderRuleService.js.map +1 -0
  154. package/build/dist/Server/Services/AlertService.js +87 -0
  155. package/build/dist/Server/Services/AlertService.js.map +1 -1
  156. package/build/dist/Server/Services/EnterpriseLicenseInstanceService.js +9 -0
  157. package/build/dist/Server/Services/EnterpriseLicenseInstanceService.js.map +1 -0
  158. package/build/dist/Server/Services/IncidentReminderRuleService.js +231 -0
  159. package/build/dist/Server/Services/IncidentReminderRuleService.js.map +1 -0
  160. package/build/dist/Server/Services/IncidentService.js +116 -0
  161. package/build/dist/Server/Services/IncidentService.js.map +1 -1
  162. package/build/dist/Server/Services/Index.js +8 -0
  163. package/build/dist/Server/Services/Index.js.map +1 -1
  164. package/build/dist/Server/Services/IoTDeviceService.js +66 -4
  165. package/build/dist/Server/Services/IoTDeviceService.js.map +1 -1
  166. package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js +214 -0
  167. package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js.map +1 -0
  168. package/build/dist/Server/Services/ScheduledMaintenanceService.js +102 -0
  169. package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
  170. package/build/dist/Server/Services/StatusPageService.js +91 -43
  171. package/build/dist/Server/Services/StatusPageService.js.map +1 -1
  172. package/build/dist/Server/Services/TelemetryExceptionService.js +101 -0
  173. package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
  174. package/build/dist/Server/Services/UserNotificationSettingService.js +6 -0
  175. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  176. package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js +4 -2
  177. package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js.map +1 -1
  178. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +29 -0
  179. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
  180. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +4 -5
  181. package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
  182. package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js +6 -5
  183. package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js.map +1 -1
  184. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +9 -9
  185. package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
  186. package/build/dist/Server/Utils/Telemetry/IoTSnapshotScan.js +33 -2
  187. package/build/dist/Server/Utils/Telemetry/IoTSnapshotScan.js.map +1 -1
  188. package/build/dist/Server/Utils/WhatsAppTemplateUtil.js +6 -0
  189. package/build/dist/Server/Utils/WhatsAppTemplateUtil.js.map +1 -1
  190. package/build/dist/ServiceRoute.js +1 -0
  191. package/build/dist/ServiceRoute.js.map +1 -1
  192. package/build/dist/Types/Email/EmailTemplateType.js +3 -0
  193. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  194. package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseInstanceSummary.js +2 -0
  195. package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseInstanceSummary.js.map +1 -0
  196. package/build/dist/Types/Monitor/MonitorStep.js +25 -0
  197. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  198. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +3 -0
  199. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
  200. package/build/dist/Types/Permission.js +126 -0
  201. package/build/dist/Types/Permission.js.map +1 -1
  202. package/build/dist/Types/Reminder/ReminderStopState.js +7 -0
  203. package/build/dist/Types/Reminder/ReminderStopState.js.map +1 -0
  204. package/build/dist/Types/Reminder/ScheduledMaintenanceReminderStopState.js +7 -0
  205. package/build/dist/Types/Reminder/ScheduledMaintenanceReminderStopState.js.map +1 -0
  206. package/build/dist/Types/WhatsApp/WhatsAppTemplates.js +9 -0
  207. package/build/dist/Types/WhatsApp/WhatsAppTemplates.js.map +1 -1
  208. package/build/dist/UI/Components/EditionLabel/EditionLabel.js +92 -0
  209. package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
  210. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js +83 -0
  211. package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js.map +1 -0
  212. package/package.json +1 -1
@@ -0,0 +1,173 @@
1
+ import BaseModel from "./DatabaseBaseModel/DatabaseBaseModel";
2
+ import EnterpriseLicense from "./EnterpriseLicense";
3
+ import Route from "../../Types/API/Route";
4
+ import ColumnAccessControl from "../../Types/Database/AccessControl/ColumnAccessControl";
5
+ import TableAccessControl from "../../Types/Database/AccessControl/TableAccessControl";
6
+ import ColumnLength from "../../Types/Database/ColumnLength";
7
+ import ColumnType from "../../Types/Database/ColumnType";
8
+ import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
9
+ import TableColumn from "../../Types/Database/TableColumn";
10
+ import TableColumnType from "../../Types/Database/TableColumnType";
11
+ import TableMetadata from "../../Types/Database/TableMetadata";
12
+ import IconProp from "../../Types/Icon/IconProp";
13
+ import ObjectID from "../../Types/ObjectID";
14
+ import { Column, Entity, Index, JoinColumn, ManyToOne } from "typeorm";
15
+
16
+ @TableAccessControl({
17
+ create: [],
18
+ read: [],
19
+ update: [],
20
+ delete: [],
21
+ })
22
+ @CrudApiEndpoint(new Route("/enterprise-license-instance"))
23
+ @TableMetadata({
24
+ tableName: "EnterpriseLicenseInstance",
25
+ singularName: "Enterprise License Instance",
26
+ pluralName: "Enterprise License Instances",
27
+ icon: IconProp.Lock,
28
+ tableDescription:
29
+ "Self-hosted OneUptime instances that report usage against an enterprise license. One license can be used across multiple instances (staging, production, etc.) and users are counted uniquely across all of them.",
30
+ })
31
+ @Entity({
32
+ name: "EnterpriseLicenseInstance",
33
+ })
34
+ // One row per instance per license — upserts rely on this being unique.
35
+ @Index(["enterpriseLicenseId", "instanceId"], { unique: true })
36
+ export default class EnterpriseLicenseInstance extends BaseModel {
37
+ @ColumnAccessControl({
38
+ create: [],
39
+ read: [],
40
+ update: [],
41
+ })
42
+ @TableColumn({
43
+ manyToOneRelationColumn: "enterpriseLicenseId",
44
+ type: TableColumnType.Entity,
45
+ modelType: EnterpriseLicense,
46
+ title: "Enterprise License",
47
+ description: "Enterprise license this instance reports usage against.",
48
+ })
49
+ @ManyToOne(
50
+ () => {
51
+ return EnterpriseLicense;
52
+ },
53
+ {
54
+ eager: false,
55
+ nullable: true,
56
+ onDelete: "CASCADE",
57
+ orphanedRowAction: "nullify",
58
+ },
59
+ )
60
+ @JoinColumn({ name: "enterpriseLicenseId" })
61
+ public enterpriseLicense?: EnterpriseLicense = undefined;
62
+
63
+ @ColumnAccessControl({
64
+ create: [],
65
+ read: [],
66
+ update: [],
67
+ })
68
+ @Index()
69
+ @TableColumn({
70
+ type: TableColumnType.ObjectID,
71
+ required: true,
72
+ canReadOnRelationQuery: true,
73
+ title: "Enterprise License ID",
74
+ description: "ID of the enterprise license this instance belongs to.",
75
+ })
76
+ @Column({
77
+ type: ColumnType.ObjectID,
78
+ nullable: false,
79
+ transformer: ObjectID.getDatabaseTransformer(),
80
+ })
81
+ public enterpriseLicenseId?: ObjectID = undefined;
82
+
83
+ @ColumnAccessControl({
84
+ create: [],
85
+ read: [],
86
+ update: [],
87
+ })
88
+ @Index()
89
+ @TableColumn({
90
+ required: true,
91
+ type: TableColumnType.ShortText,
92
+ title: "Instance ID",
93
+ description:
94
+ "Unique identifier of the self-hosted OneUptime instance (auto-generated on the instance when it is installed).",
95
+ })
96
+ @Column({
97
+ nullable: false,
98
+ type: ColumnType.ShortText,
99
+ length: ColumnLength.ShortText,
100
+ })
101
+ public instanceId?: string = undefined;
102
+
103
+ @ColumnAccessControl({
104
+ create: [],
105
+ read: [],
106
+ update: [],
107
+ })
108
+ @TableColumn({
109
+ required: false,
110
+ type: TableColumnType.ShortText,
111
+ title: "Host",
112
+ description:
113
+ "Host of the self-hosted instance (for example oneuptime.acme.com). Shown to the customer so they can tell instances apart.",
114
+ })
115
+ @Column({
116
+ nullable: true,
117
+ type: ColumnType.ShortText,
118
+ length: ColumnLength.ShortText,
119
+ })
120
+ public host?: string = undefined;
121
+
122
+ @ColumnAccessControl({
123
+ create: [],
124
+ read: [],
125
+ update: [],
126
+ })
127
+ @TableColumn({
128
+ required: false,
129
+ type: TableColumnType.Number,
130
+ title: "User Count",
131
+ description: "Most recent user count reported by this instance.",
132
+ })
133
+ @Column({
134
+ nullable: true,
135
+ type: ColumnType.Number,
136
+ })
137
+ public userCount?: number = undefined;
138
+
139
+ @ColumnAccessControl({
140
+ create: [],
141
+ read: [],
142
+ update: [],
143
+ })
144
+ @TableColumn({
145
+ required: false,
146
+ type: TableColumnType.JSON,
147
+ title: "User Email Hashes",
148
+ description:
149
+ "SHA-256 hashes of the emails of users on this instance. Used to count unique users across all instances of a license without storing raw emails.",
150
+ })
151
+ @Column({
152
+ type: ColumnType.JSON,
153
+ nullable: true,
154
+ })
155
+ public userEmailHashes?: Array<string> = undefined;
156
+
157
+ @ColumnAccessControl({
158
+ create: [],
159
+ read: [],
160
+ update: [],
161
+ })
162
+ @TableColumn({
163
+ required: false,
164
+ type: TableColumnType.Date,
165
+ title: "Last Reported At",
166
+ description: "Timestamp of the most recent report from this instance.",
167
+ })
168
+ @Column({
169
+ nullable: true,
170
+ type: ColumnType.Date,
171
+ })
172
+ public lastReportedAt?: Date = undefined;
173
+ }
@@ -13,6 +13,7 @@ import Email from "../../Types/Email";
13
13
  import MailTransportType from "../../Types/Email/MailTransportType";
14
14
  import OAuthProviderType from "../../Types/Email/OAuthProviderType";
15
15
  import SMTPAuthenticationType from "../../Types/Email/SMTPAuthenticationType";
16
+ import EnterpriseLicenseInstanceSummary from "../../Types/EnterpriseLicense/EnterpriseLicenseInstanceSummary";
16
17
  import IconProp from "../../Types/Icon/IconProp";
17
18
  import ObjectID from "../../Types/ObjectID";
18
19
  import Phone from "../../Types/Phone";
@@ -874,6 +875,24 @@ export default class GlobalConfig extends GlobalConfigModel {
874
875
  })
875
876
  public enterpriseLicenseUserCountUpdatedAt?: Date = undefined;
876
877
 
878
+ @ColumnAccessControl({
879
+ create: [],
880
+ read: [],
881
+ update: [],
882
+ })
883
+ @TableColumn({
884
+ type: TableColumnType.JSON,
885
+ title: "Enterprise License Instances",
886
+ description:
887
+ "Instances (staging, production, etc.) that share the validated enterprise license, as last reported by OneUptime. Users are counted uniquely across all of them.",
888
+ })
889
+ @Column({
890
+ type: ColumnType.JSON,
891
+ nullable: true,
892
+ })
893
+ public enterpriseLicenseInstances?: Array<EnterpriseLicenseInstanceSummary> =
894
+ undefined;
895
+
877
896
  @ColumnAccessControl({
878
897
  create: [],
879
898
  read: [],
@@ -2663,6 +2663,106 @@ export default class Incident extends BaseModel {
2663
2663
  })
2664
2664
  public isPrivate?: boolean = undefined;
2665
2665
 
2666
+ @ColumnAccessControl({
2667
+ create: [
2668
+ Permission.ProjectOwner,
2669
+ Permission.ProjectAdmin,
2670
+ Permission.ProjectMember,
2671
+ Permission.IncidentAdmin,
2672
+ Permission.IncidentMember,
2673
+ Permission.CreateProjectIncident,
2674
+ ],
2675
+ read: [
2676
+ Permission.ProjectOwner,
2677
+ Permission.ProjectAdmin,
2678
+ Permission.ProjectMember,
2679
+ Permission.Viewer,
2680
+ Permission.IncidentAdmin,
2681
+ Permission.IncidentMember,
2682
+ Permission.IncidentViewer,
2683
+ Permission.ReadProjectIncident,
2684
+ ],
2685
+ update: [
2686
+ Permission.ProjectOwner,
2687
+ Permission.ProjectAdmin,
2688
+ Permission.ProjectMember,
2689
+ Permission.IncidentAdmin,
2690
+ Permission.IncidentMember,
2691
+ Permission.EditProjectIncident,
2692
+ ],
2693
+ })
2694
+ @TableColumn({
2695
+ isDefaultValueColumn: true,
2696
+ type: TableColumnType.Boolean,
2697
+ title: "Send Reminders?",
2698
+ description:
2699
+ "Should reminder notifications be sent to owners while this incident is still open? Reminders are sent based on the reminder rules configured for this project.",
2700
+ defaultValue: true,
2701
+ })
2702
+ @Column({
2703
+ type: ColumnType.Boolean,
2704
+ default: true,
2705
+ nullable: true,
2706
+ })
2707
+ public enableReminders?: boolean = undefined;
2708
+
2709
+ @ColumnAccessControl({
2710
+ create: [],
2711
+ read: [
2712
+ Permission.ProjectOwner,
2713
+ Permission.ProjectAdmin,
2714
+ Permission.ProjectMember,
2715
+ Permission.Viewer,
2716
+ Permission.IncidentAdmin,
2717
+ Permission.IncidentMember,
2718
+ Permission.IncidentViewer,
2719
+ Permission.ReadProjectIncident,
2720
+ ],
2721
+ update: [],
2722
+ })
2723
+ @Index()
2724
+ @TableColumn({
2725
+ type: TableColumnType.Date,
2726
+ required: false,
2727
+ isDefaultValueColumn: false,
2728
+ title: "Next Reminder Notification At",
2729
+ description:
2730
+ "When will the next reminder notification be sent to owners of this incident? This is set automatically based on the reminder rules configured for this project.",
2731
+ })
2732
+ @Column({
2733
+ type: ColumnType.Date,
2734
+ nullable: true,
2735
+ })
2736
+ public nextReminderNotificationAt?: Date = undefined;
2737
+
2738
+ @ColumnAccessControl({
2739
+ create: [],
2740
+ read: [
2741
+ Permission.ProjectOwner,
2742
+ Permission.ProjectAdmin,
2743
+ Permission.ProjectMember,
2744
+ Permission.Viewer,
2745
+ Permission.IncidentAdmin,
2746
+ Permission.IncidentMember,
2747
+ Permission.IncidentViewer,
2748
+ Permission.ReadProjectIncident,
2749
+ ],
2750
+ update: [],
2751
+ })
2752
+ @TableColumn({
2753
+ type: TableColumnType.Number,
2754
+ required: false,
2755
+ isDefaultValueColumn: false,
2756
+ title: "Reminder Notifications Sent Count",
2757
+ description:
2758
+ "How many reminder notifications have been sent to owners of this incident so far.",
2759
+ })
2760
+ @Column({
2761
+ type: ColumnType.Number,
2762
+ nullable: true,
2763
+ })
2764
+ public reminderNotificationSentCount?: number = undefined;
2765
+
2666
2766
  @ColumnAccessControl({
2667
2767
  create: [
2668
2768
  Permission.ProjectOwner,
@@ -11,6 +11,7 @@ import CanAccessIfCanReadOn from "../../Types/Database/CanAccessIfCanReadOn";
11
11
  import ColumnType from "../../Types/Database/ColumnType";
12
12
  import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
13
13
  import EnableDocumentation from "../../Types/Database/EnableDocumentation";
14
+ import EnableMCP from "../../Types/Database/EnableMCP";
14
15
  import EnableWorkflow from "../../Types/Database/EnableWorkflow";
15
16
  import TableColumn from "../../Types/Database/TableColumn";
16
17
  import TableColumnType from "../../Types/Database/TableColumnType";
@@ -30,6 +31,7 @@ import {
30
31
  } from "typeorm";
31
32
 
32
33
  @EnableDocumentation()
34
+ @EnableMCP()
33
35
  @CanAccessIfCanReadOn("incident")
34
36
  @TenantColumn("projectId")
35
37
  @TableAccessControl({
@@ -11,6 +11,7 @@ import CanAccessIfCanReadOn from "../../Types/Database/CanAccessIfCanReadOn";
11
11
  import ColumnType from "../../Types/Database/ColumnType";
12
12
  import CrudApiEndpoint from "../../Types/Database/CrudApiEndpoint";
13
13
  import EnableDocumentation from "../../Types/Database/EnableDocumentation";
14
+ import EnableMCP from "../../Types/Database/EnableMCP";
14
15
  import EnableWorkflow from "../../Types/Database/EnableWorkflow";
15
16
  import TableColumn from "../../Types/Database/TableColumn";
16
17
  import TableColumnType from "../../Types/Database/TableColumnType";
@@ -31,6 +32,7 @@ import {
31
32
  } from "typeorm";
32
33
 
33
34
  @EnableDocumentation()
35
+ @EnableMCP()
34
36
  @CanAccessIfCanReadOn("incident")
35
37
  @TenantColumn("projectId")
36
38
  @TableAccessControl({