@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.
- package/Models/AnalyticsModels/AnalyticsBaseModel/CommonModel.ts +2 -0
- package/Models/AnalyticsModels/ExceptionInstance.ts +1 -0
- package/Models/AnalyticsModels/Log.ts +1 -0
- package/Models/AnalyticsModels/Metric.ts +1 -0
- package/Models/AnalyticsModels/MonitorLog.ts +1 -0
- package/Models/AnalyticsModels/Span.ts +1 -0
- package/Models/DatabaseModels/Alert.ts +100 -0
- package/Models/DatabaseModels/AlertInternalNote.ts +2 -0
- package/Models/DatabaseModels/AlertReminderRule.ts +597 -0
- package/Models/DatabaseModels/AlertSeverity.ts +2 -0
- package/Models/DatabaseModels/AlertState.ts +2 -0
- package/Models/DatabaseModels/AlertStateTimeline.ts +2 -0
- package/Models/DatabaseModels/EnterpriseLicenseInstance.ts +173 -0
- package/Models/DatabaseModels/GlobalConfig.ts +19 -0
- package/Models/DatabaseModels/Incident.ts +100 -0
- package/Models/DatabaseModels/IncidentInternalNote.ts +2 -0
- package/Models/DatabaseModels/IncidentPublicNote.ts +2 -0
- package/Models/DatabaseModels/IncidentReminderRule.ts +597 -0
- package/Models/DatabaseModels/IncidentSeverity.ts +2 -0
- package/Models/DatabaseModels/IncidentStateTimeline.ts +2 -0
- package/Models/DatabaseModels/Index.ts +8 -0
- package/Models/DatabaseModels/Label.ts +2 -0
- package/Models/DatabaseModels/MonitorStatusTimeline.ts +2 -0
- package/Models/DatabaseModels/ScheduledMaintenance.ts +100 -0
- package/Models/DatabaseModels/ScheduledMaintenanceReminderRule.ts +585 -0
- package/Models/DatabaseModels/ScheduledMaintenanceState.ts +2 -0
- package/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.ts +2 -0
- package/Models/DatabaseModels/StatusPageAnnouncement.ts +2 -0
- package/Server/API/DashboardAPI.ts +221 -0
- package/Server/API/EnterpriseLicenseAPI.ts +279 -12
- package/Server/API/GlobalConfigAPI.ts +81 -16
- package/Server/API/StatusPageAPI.ts +894 -791
- package/Server/EnvironmentConfig.ts +9 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783226868418-AddEnterpriseLicenseInstance.ts +47 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783234451106-AddIncidentAlertReminderRules.ts +211 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783320000000-AddScheduledMaintenanceReminderRules.ts +113 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783330000000-AddRemindWhileScheduledToScheduledMaintenanceReminderRule.ts +20 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783340000000-AddLabelsToIncidentAndAlertReminderRules.ts +69 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -0
- package/Server/Services/AlertReminderRuleService.ts +253 -0
- package/Server/Services/AlertService.ts +106 -0
- package/Server/Services/EnterpriseLicenseInstanceService.ts +10 -0
- package/Server/Services/IncidentReminderRuleService.ts +256 -0
- package/Server/Services/IncidentService.ts +143 -0
- package/Server/Services/Index.ts +8 -0
- package/Server/Services/IoTDeviceService.ts +99 -4
- package/Server/Services/ScheduledMaintenanceReminderRuleService.ts +236 -0
- package/Server/Services/ScheduledMaintenanceService.ts +127 -0
- package/Server/Services/StatusPageService.ts +104 -45
- package/Server/Services/TelemetryExceptionService.ts +123 -0
- package/Server/Services/UserNotificationSettingService.ts +24 -0
- package/Server/Utils/AnalyticsDatabase/Statement.ts +7 -3
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +35 -0
- package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +6 -4
- package/Server/Utils/Monitor/MonitorCriteriaDataExtractor.ts +7 -6
- package/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.ts +6 -4
- package/Server/Utils/Telemetry/IoTSnapshotScan.ts +45 -7
- package/Server/Utils/WhatsAppTemplateUtil.ts +10 -0
- package/ServiceRoute.ts +4 -0
- package/Tests/Server/Services/IoTDeviceService.test.ts +280 -0
- package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +49 -0
- package/Tests/Server/Utils/Monitor/Criteria/TelemetryStepMetricAlias.test.ts +390 -0
- package/Tests/Server/Utils/Telemetry/IoTSnapshotScan.test.ts +202 -0
- package/Tests/Utils/EnterpriseLicenseUsage.test.ts +165 -0
- package/Types/Email/EmailTemplateType.ts +3 -0
- package/Types/EnterpriseLicense/EnterpriseLicenseInstanceSummary.ts +18 -0
- package/Types/Monitor/MonitorStep.ts +32 -0
- package/Types/NotificationSetting/NotificationSettingEventType.ts +3 -0
- package/Types/Permission.ts +144 -0
- package/Types/Reminder/ReminderStopState.ts +6 -0
- package/Types/Reminder/ScheduledMaintenanceReminderStopState.ts +6 -0
- package/Types/WhatsApp/WhatsAppTemplates.ts +14 -0
- package/UI/Components/EditionLabel/EditionLabel.tsx +172 -0
- package/Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts +125 -0
- package/build/dist/Models/AnalyticsModels/AnalyticsBaseModel/CommonModel.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js +1 -0
- package/build/dist/Models/AnalyticsModels/ExceptionInstance.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Log.js +1 -0
- package/build/dist/Models/AnalyticsModels/Log.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Metric.js +1 -0
- package/build/dist/Models/AnalyticsModels/Metric.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/MonitorLog.js +1 -0
- package/build/dist/Models/AnalyticsModels/MonitorLog.js.map +1 -1
- package/build/dist/Models/AnalyticsModels/Span.js +1 -0
- package/build/dist/Models/AnalyticsModels/Span.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Alert.js +103 -0
- package/build/dist/Models/DatabaseModels/Alert.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertInternalNote.js +2 -0
- package/build/dist/Models/DatabaseModels/AlertInternalNote.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertReminderRule.js +605 -0
- package/build/dist/Models/DatabaseModels/AlertReminderRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/AlertSeverity.js +2 -0
- package/build/dist/Models/DatabaseModels/AlertSeverity.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertState.js +2 -0
- package/build/dist/Models/DatabaseModels/AlertState.js.map +1 -1
- package/build/dist/Models/DatabaseModels/AlertStateTimeline.js +2 -0
- package/build/dist/Models/DatabaseModels/AlertStateTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/EnterpriseLicenseInstance.js +197 -0
- package/build/dist/Models/DatabaseModels/EnterpriseLicenseInstance.js.map +1 -0
- package/build/dist/Models/DatabaseModels/GlobalConfig.js +18 -0
- package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Incident.js +103 -0
- package/build/dist/Models/DatabaseModels/Incident.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentInternalNote.js +2 -0
- package/build/dist/Models/DatabaseModels/IncidentInternalNote.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentPublicNote.js +2 -0
- package/build/dist/Models/DatabaseModels/IncidentPublicNote.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentReminderRule.js +605 -0
- package/build/dist/Models/DatabaseModels/IncidentReminderRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/IncidentSeverity.js +2 -0
- package/build/dist/Models/DatabaseModels/IncidentSeverity.js.map +1 -1
- package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js +2 -0
- package/build/dist/Models/DatabaseModels/IncidentStateTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Index.js +8 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Label.js +2 -0
- package/build/dist/Models/DatabaseModels/Label.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js +2 -0
- package/build/dist/Models/DatabaseModels/MonitorStatusTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js +103 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenance.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceReminderRule.js +596 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceReminderRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceState.js +2 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceState.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js +2 -0
- package/build/dist/Models/DatabaseModels/ScheduledMaintenanceStateTimeline.js.map +1 -1
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js +2 -0
- package/build/dist/Models/DatabaseModels/StatusPageAnnouncement.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +166 -16
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/EnterpriseLicenseAPI.js +203 -13
- package/build/dist/Server/API/EnterpriseLicenseAPI.js.map +1 -1
- package/build/dist/Server/API/GlobalConfigAPI.js +62 -15
- package/build/dist/Server/API/GlobalConfigAPI.js.map +1 -1
- package/build/dist/Server/API/StatusPageAPI.js +74 -31
- package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
- package/build/dist/Server/EnvironmentConfig.js +6 -0
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783226868418-AddEnterpriseLicenseInstance.js +22 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783226868418-AddEnterpriseLicenseInstance.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783234451106-AddIncidentAlertReminderRules.js +78 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783234451106-AddIncidentAlertReminderRules.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783320000000-AddScheduledMaintenanceReminderRules.js +44 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783320000000-AddScheduledMaintenanceReminderRules.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783330000000-AddRemindWhileScheduledToScheduledMaintenanceReminderRule.js +12 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783330000000-AddRemindWhileScheduledToScheduledMaintenanceReminderRule.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783340000000-AddLabelsToIncidentAndAlertReminderRules.js +30 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783340000000-AddLabelsToIncidentAndAlertReminderRules.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AlertReminderRuleService.js +228 -0
- package/build/dist/Server/Services/AlertReminderRuleService.js.map +1 -0
- package/build/dist/Server/Services/AlertService.js +87 -0
- package/build/dist/Server/Services/AlertService.js.map +1 -1
- package/build/dist/Server/Services/EnterpriseLicenseInstanceService.js +9 -0
- package/build/dist/Server/Services/EnterpriseLicenseInstanceService.js.map +1 -0
- package/build/dist/Server/Services/IncidentReminderRuleService.js +231 -0
- package/build/dist/Server/Services/IncidentReminderRuleService.js.map +1 -0
- package/build/dist/Server/Services/IncidentService.js +116 -0
- package/build/dist/Server/Services/IncidentService.js.map +1 -1
- package/build/dist/Server/Services/Index.js +8 -0
- package/build/dist/Server/Services/Index.js.map +1 -1
- package/build/dist/Server/Services/IoTDeviceService.js +66 -4
- package/build/dist/Server/Services/IoTDeviceService.js.map +1 -1
- package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js +214 -0
- package/build/dist/Server/Services/ScheduledMaintenanceReminderRuleService.js.map +1 -0
- package/build/dist/Server/Services/ScheduledMaintenanceService.js +102 -0
- package/build/dist/Server/Services/ScheduledMaintenanceService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageService.js +91 -43
- package/build/dist/Server/Services/StatusPageService.js.map +1 -1
- package/build/dist/Server/Services/TelemetryExceptionService.js +101 -0
- package/build/dist/Server/Services/TelemetryExceptionService.js.map +1 -1
- package/build/dist/Server/Services/UserNotificationSettingService.js +6 -0
- package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js +4 -2
- package/build/dist/Server/Utils/AnalyticsDatabase/Statement.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +29 -0
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +4 -5
- package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js +6 -5
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaDataExtractor.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js +9 -9
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaObservationBuilder.js.map +1 -1
- package/build/dist/Server/Utils/Telemetry/IoTSnapshotScan.js +33 -2
- package/build/dist/Server/Utils/Telemetry/IoTSnapshotScan.js.map +1 -1
- package/build/dist/Server/Utils/WhatsAppTemplateUtil.js +6 -0
- package/build/dist/Server/Utils/WhatsAppTemplateUtil.js.map +1 -1
- package/build/dist/ServiceRoute.js +1 -0
- package/build/dist/ServiceRoute.js.map +1 -1
- package/build/dist/Types/Email/EmailTemplateType.js +3 -0
- package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseInstanceSummary.js +2 -0
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicenseInstanceSummary.js.map +1 -0
- package/build/dist/Types/Monitor/MonitorStep.js +25 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +3 -0
- package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
- package/build/dist/Types/Permission.js +126 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Reminder/ReminderStopState.js +7 -0
- package/build/dist/Types/Reminder/ReminderStopState.js.map +1 -0
- package/build/dist/Types/Reminder/ScheduledMaintenanceReminderStopState.js +7 -0
- package/build/dist/Types/Reminder/ScheduledMaintenanceReminderStopState.js.map +1 -0
- package/build/dist/Types/WhatsApp/WhatsAppTemplates.js +9 -0
- package/build/dist/Types/WhatsApp/WhatsAppTemplates.js.map +1 -1
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js +92 -0
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js +83 -0
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import EnterpriseLicenseUsageUtil from "../../Utils/EnterpriseLicense/EnterpriseLicenseUsage";
|
|
2
|
+
import OneUptimeDate from "../../Types/Date";
|
|
3
|
+
import { describe, expect, it } from "@jest/globals";
|
|
4
|
+
|
|
5
|
+
type HashFunction = (seed: string) => string;
|
|
6
|
+
|
|
7
|
+
// Deterministic fake SHA-256-shaped hex string for tests.
|
|
8
|
+
const fakeHash: HashFunction = (seed: string): string => {
|
|
9
|
+
return seed
|
|
10
|
+
.repeat(64)
|
|
11
|
+
.replace(/[^a-f0-9]/g, "a")
|
|
12
|
+
.substring(0, 64);
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
describe("EnterpriseLicenseUsageUtil.sanitizeUserEmailHashes", () => {
|
|
16
|
+
it("returns empty array for non-array input", () => {
|
|
17
|
+
expect(EnterpriseLicenseUsageUtil.sanitizeUserEmailHashes(null)).toEqual(
|
|
18
|
+
[],
|
|
19
|
+
);
|
|
20
|
+
expect(
|
|
21
|
+
EnterpriseLicenseUsageUtil.sanitizeUserEmailHashes("not-an-array"),
|
|
22
|
+
).toEqual([]);
|
|
23
|
+
expect(EnterpriseLicenseUsageUtil.sanitizeUserEmailHashes({})).toEqual([]);
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
it("keeps only valid sha256 hex strings and normalizes case", () => {
|
|
27
|
+
const valid: string = fakeHash("1");
|
|
28
|
+
|
|
29
|
+
const result: Array<string> =
|
|
30
|
+
EnterpriseLicenseUsageUtil.sanitizeUserEmailHashes([
|
|
31
|
+
valid.toUpperCase(),
|
|
32
|
+
` ${valid} `,
|
|
33
|
+
"short",
|
|
34
|
+
12345,
|
|
35
|
+
"z".repeat(64), // not hex
|
|
36
|
+
null,
|
|
37
|
+
]);
|
|
38
|
+
|
|
39
|
+
expect(result).toEqual([valid]);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it("removes duplicates", () => {
|
|
43
|
+
const a: string = fakeHash("a");
|
|
44
|
+
const b: string = fakeHash("b");
|
|
45
|
+
|
|
46
|
+
const result: Array<string> =
|
|
47
|
+
EnterpriseLicenseUsageUtil.sanitizeUserEmailHashes([a, b, a, b, a]);
|
|
48
|
+
|
|
49
|
+
expect(result.sort()).toEqual([a, b].sort());
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
describe("EnterpriseLicenseUsageUtil.getUniqueUserCount", () => {
|
|
54
|
+
const now: Date = OneUptimeDate.getCurrentDate();
|
|
55
|
+
const fresh: Date = OneUptimeDate.addRemoveDays(now, -1);
|
|
56
|
+
const stale: Date = OneUptimeDate.addRemoveDays(now, -60);
|
|
57
|
+
|
|
58
|
+
it("counts the same user on multiple instances once", () => {
|
|
59
|
+
const sharedUser: string = fakeHash("shared");
|
|
60
|
+
const stagingOnlyUser: string = fakeHash("staging");
|
|
61
|
+
const prodOnlyUser: string = fakeHash("prod");
|
|
62
|
+
|
|
63
|
+
const count: number = EnterpriseLicenseUsageUtil.getUniqueUserCount(
|
|
64
|
+
[
|
|
65
|
+
{
|
|
66
|
+
userCount: 2,
|
|
67
|
+
userEmailHashes: [sharedUser, stagingOnlyUser],
|
|
68
|
+
lastReportedAt: fresh,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
userCount: 2,
|
|
72
|
+
userEmailHashes: [sharedUser, prodOnlyUser],
|
|
73
|
+
lastReportedAt: fresh,
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
now,
|
|
77
|
+
);
|
|
78
|
+
|
|
79
|
+
expect(count).toBe(3);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it("adds plain user counts for instances without hashes", () => {
|
|
83
|
+
const count: number = EnterpriseLicenseUsageUtil.getUniqueUserCount(
|
|
84
|
+
[
|
|
85
|
+
{
|
|
86
|
+
userCount: 2,
|
|
87
|
+
userEmailHashes: [fakeHash("a"), fakeHash("b")],
|
|
88
|
+
lastReportedAt: fresh,
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
// Older installation that reports a count but no hashes.
|
|
92
|
+
userCount: 7,
|
|
93
|
+
userEmailHashes: undefined,
|
|
94
|
+
lastReportedAt: fresh,
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
now,
|
|
98
|
+
);
|
|
99
|
+
|
|
100
|
+
expect(count).toBe(9);
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
it("counts overflow users when the hash list was capped", () => {
|
|
104
|
+
/*
|
|
105
|
+
* An instance with more users than the hash cap: userCount is larger
|
|
106
|
+
* than the number of hashes stored. The overflow must still count.
|
|
107
|
+
*/
|
|
108
|
+
const count: number = EnterpriseLicenseUsageUtil.getUniqueUserCount(
|
|
109
|
+
[
|
|
110
|
+
{
|
|
111
|
+
userCount: 250_000,
|
|
112
|
+
userEmailHashes: [fakeHash("a"), fakeHash("b")], // capped list
|
|
113
|
+
lastReportedAt: fresh,
|
|
114
|
+
},
|
|
115
|
+
],
|
|
116
|
+
now,
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
expect(count).toBe(250_000);
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
it("ignores instances that stopped reporting", () => {
|
|
123
|
+
const count: number = EnterpriseLicenseUsageUtil.getUniqueUserCount(
|
|
124
|
+
[
|
|
125
|
+
{
|
|
126
|
+
userCount: 4,
|
|
127
|
+
userEmailHashes: [
|
|
128
|
+
fakeHash("a"),
|
|
129
|
+
fakeHash("b"),
|
|
130
|
+
fakeHash("c"),
|
|
131
|
+
fakeHash("d"),
|
|
132
|
+
],
|
|
133
|
+
lastReportedAt: fresh,
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
userCount: 100,
|
|
137
|
+
userEmailHashes: [fakeHash("e")],
|
|
138
|
+
lastReportedAt: stale,
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
now,
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
expect(count).toBe(4);
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
it("ignores instances that never reported", () => {
|
|
148
|
+
const count: number = EnterpriseLicenseUsageUtil.getUniqueUserCount(
|
|
149
|
+
[
|
|
150
|
+
{
|
|
151
|
+
userCount: undefined,
|
|
152
|
+
userEmailHashes: undefined,
|
|
153
|
+
lastReportedAt: undefined,
|
|
154
|
+
},
|
|
155
|
+
],
|
|
156
|
+
now,
|
|
157
|
+
);
|
|
158
|
+
|
|
159
|
+
expect(count).toBe(0);
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
it("returns 0 for no instances", () => {
|
|
163
|
+
expect(EnterpriseLicenseUsageUtil.getUniqueUserCount([], now)).toBe(0);
|
|
164
|
+
});
|
|
165
|
+
});
|
|
@@ -37,11 +37,13 @@ enum EmailTemplateType {
|
|
|
37
37
|
IncidentOwnerNotePosted = "IncidentOwnerNotePosted.hbs",
|
|
38
38
|
IncidentOwnerResourceCreated = "IncidentOwnerResourceCreated.hbs",
|
|
39
39
|
IncidentMemberAdded = "IncidentMemberAdded.hbs",
|
|
40
|
+
IncidentOwnerUnresolvedReminder = "IncidentOwnerUnresolvedReminder.hbs",
|
|
40
41
|
|
|
41
42
|
AlertOwnerAdded = "AlertOwnerAdded.hbs",
|
|
42
43
|
AlertOwnerStateChanged = "AlertOwnerStateChanged.hbs",
|
|
43
44
|
AlertOwnerNotePosted = "AlertOwnerNotePosted.hbs",
|
|
44
45
|
AlertOwnerResourceCreated = "AlertOwnerResourceCreated.hbs",
|
|
46
|
+
AlertOwnerUnresolvedReminder = "AlertOwnerUnresolvedReminder.hbs",
|
|
45
47
|
|
|
46
48
|
AlertEpisodeOwnerAdded = "AlertEpisodeOwnerAdded.hbs",
|
|
47
49
|
AlertEpisodeOwnerStateChanged = "AlertEpisodeOwnerStateChanged.hbs",
|
|
@@ -63,6 +65,7 @@ enum EmailTemplateType {
|
|
|
63
65
|
ScheduledMaintenanceOwnerAdded = "ScheduledMaintenanceOwnerAdded.hbs",
|
|
64
66
|
ScheduledMaintenanceOwnerStateChanged = "ScheduledMaintenanceOwnerStateChanged.hbs",
|
|
65
67
|
ScheduledMaintenanceOwnerResourceCreated = "ScheduledMaintenanceOwnerResourceCreated.hbs",
|
|
68
|
+
ScheduledMaintenanceOwnerUnresolvedReminder = "ScheduledMaintenanceOwnerUnresolvedReminder.hbs",
|
|
66
69
|
StatusPageOwnerResourceCreated = "StatusPageOwnerResourceCreated.hbs",
|
|
67
70
|
StatusPageOwnerAdded = "StatusPageOwnerAdded.hbs",
|
|
68
71
|
StatusPageOwnerAnnouncementPosted = "StatusPageOwnerAnnouncementPosted.hbs",
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Summary of a self-hosted OneUptime instance that uses an enterprise
|
|
3
|
+
* license. Returned by the license server (oneuptime.com) on validate and
|
|
4
|
+
* report-user-count calls, stored in GlobalConfig on the customer's
|
|
5
|
+
* instances, and shown in the license modal.
|
|
6
|
+
*
|
|
7
|
+
* Kept as a `type` of plain primitives (not an interface) so it stays
|
|
8
|
+
* structurally compatible with JSONObject and safe to store in JSON columns.
|
|
9
|
+
*/
|
|
10
|
+
type EnterpriseLicenseInstanceSummary = {
|
|
11
|
+
instanceId: string;
|
|
12
|
+
host: string | null;
|
|
13
|
+
userCount: number | null;
|
|
14
|
+
// ISO date string of the most recent usage report from this instance.
|
|
15
|
+
lastReportedAt: string | null;
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
export default EnterpriseLicenseInstanceSummary;
|
|
@@ -68,6 +68,7 @@ import MonitorStepCephMonitor, {
|
|
|
68
68
|
import MonitorStepIoTMonitor, {
|
|
69
69
|
MonitorStepIoTMonitorUtil,
|
|
70
70
|
} from "./MonitorStepIoTMonitor";
|
|
71
|
+
import MetricsViewConfig from "../Metrics/MetricsViewConfig";
|
|
71
72
|
import Zod, { ZodSchema } from "../../Utils/Schema/Zod";
|
|
72
73
|
|
|
73
74
|
/*
|
|
@@ -305,6 +306,37 @@ export default class MonitorStep extends DatabaseProperty {
|
|
|
305
306
|
return monitorStep;
|
|
306
307
|
}
|
|
307
308
|
|
|
309
|
+
/**
|
|
310
|
+
* Telemetry monitor steps store their metric query configs under their
|
|
311
|
+
* own step shape (metricMonitor, iotMonitor, kubernetesMonitor, ...),
|
|
312
|
+
* yet all of them produce a MetricMonitorResponse whose result slots
|
|
313
|
+
* are ordered by these configs. Criteria evaluation must resolve
|
|
314
|
+
* metric aliases through whichever shape the step carries — reading
|
|
315
|
+
* only `metricMonitor` silently falls back to result slot 0 for every
|
|
316
|
+
* other telemetry monitor type.
|
|
317
|
+
*/
|
|
318
|
+
public static getMetricsViewConfig(
|
|
319
|
+
monitorStep: MonitorStep | undefined,
|
|
320
|
+
): MetricsViewConfig | undefined {
|
|
321
|
+
const data: MonitorStepType | undefined = monitorStep?.data;
|
|
322
|
+
|
|
323
|
+
if (!data) {
|
|
324
|
+
return undefined;
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
return (
|
|
328
|
+
data.metricMonitor?.metricViewConfig ||
|
|
329
|
+
data.iotMonitor?.metricViewConfig ||
|
|
330
|
+
data.kubernetesMonitor?.metricViewConfig ||
|
|
331
|
+
data.dockerMonitor?.metricViewConfig ||
|
|
332
|
+
data.dockerSwarmMonitor?.metricViewConfig ||
|
|
333
|
+
data.hostMonitor?.metricViewConfig ||
|
|
334
|
+
data.podmanMonitor?.metricViewConfig ||
|
|
335
|
+
data.proxmoxMonitor?.metricViewConfig ||
|
|
336
|
+
data.cephMonitor?.metricViewConfig
|
|
337
|
+
);
|
|
338
|
+
}
|
|
339
|
+
|
|
308
340
|
public get id(): ObjectID {
|
|
309
341
|
return new ObjectID(this.data?.id as string);
|
|
310
342
|
}
|
|
@@ -5,6 +5,7 @@ enum NotificationSettingEventType {
|
|
|
5
5
|
SEND_INCIDENT_STATE_CHANGED_OWNER_NOTIFICATION = "Send incident state changed notification when I am the owner of the incident",
|
|
6
6
|
SEND_INCIDENT_OWNER_ADDED_NOTIFICATION = "Send notification when I am added as a owner to the incident",
|
|
7
7
|
SEND_INCIDENT_MEMBER_ADDED_NOTIFICATION = "Send notification when I am assigned to an incident as a member",
|
|
8
|
+
SEND_INCIDENT_REMINDER_OWNER_NOTIFICATION = "Send reminder notification when an incident I own is still open",
|
|
8
9
|
|
|
9
10
|
// Alerts
|
|
10
11
|
|
|
@@ -12,6 +13,7 @@ enum NotificationSettingEventType {
|
|
|
12
13
|
SEND_ALERT_NOTE_POSTED_OWNER_NOTIFICATION = "Send alert note posted notification when I am the owner of the alert",
|
|
13
14
|
SEND_ALERT_STATE_CHANGED_OWNER_NOTIFICATION = "Send alert state changed notification when I am the owner of the alert",
|
|
14
15
|
SEND_ALERT_OWNER_ADDED_NOTIFICATION = "Send notification when I am added as a owner to the alert",
|
|
16
|
+
SEND_ALERT_REMINDER_OWNER_NOTIFICATION = "Send reminder notification when an alert I own is still open",
|
|
15
17
|
|
|
16
18
|
// Alert Episodes
|
|
17
19
|
|
|
@@ -41,6 +43,7 @@ enum NotificationSettingEventType {
|
|
|
41
43
|
SEND_SCHEDULED_MAINTENANCE_NOTE_POSTED_OWNER_NOTIFICATION = "Send event note posted notification when I am the owner of the event",
|
|
42
44
|
SEND_SCHEDULED_MAINTENANCE_OWNER_ADDED_NOTIFICATION = "Send notification when I am added as a owner to the event",
|
|
43
45
|
SEND_SCHEDULED_MAINTENANCE_STATE_CHANGED_OWNER_NOTIFICATION = "Send event state changed notification when I am the owner of the event",
|
|
46
|
+
SEND_SCHEDULED_MAINTENANCE_REMINDER_OWNER_NOTIFICATION = "Send reminder notification when a scheduled maintenance event I own is still not complete",
|
|
44
47
|
|
|
45
48
|
// Status Page
|
|
46
49
|
SEND_STATUS_PAGE_ANNOUNCEMENT_CREATED_OWNER_NOTIFICATION = "Send status page announcement created notification when I am the owner of the status page",
|
package/Types/Permission.ts
CHANGED
|
@@ -421,6 +421,12 @@ enum Permission {
|
|
|
421
421
|
EditScheduledMaintenanceLabelRule = "EditScheduledMaintenanceLabelRule",
|
|
422
422
|
ReadScheduledMaintenanceLabelRule = "ReadScheduledMaintenanceLabelRule",
|
|
423
423
|
|
|
424
|
+
// Scheduled Maintenance Reminder Rule Permissions
|
|
425
|
+
CreateScheduledMaintenanceReminderRule = "CreateScheduledMaintenanceReminderRule",
|
|
426
|
+
DeleteScheduledMaintenanceReminderRule = "DeleteScheduledMaintenanceReminderRule",
|
|
427
|
+
EditScheduledMaintenanceReminderRule = "EditScheduledMaintenanceReminderRule",
|
|
428
|
+
ReadScheduledMaintenanceReminderRule = "ReadScheduledMaintenanceReminderRule",
|
|
429
|
+
|
|
424
430
|
CreateStatusPageOwnerTeam = "CreateStatusPageOwnerTeam",
|
|
425
431
|
DeleteStatusPageOwnerTeam = "DeleteStatusPageOwnerTeam",
|
|
426
432
|
EditStatusPageOwnerTeam = "EditStatusPageOwnerTeam",
|
|
@@ -1407,6 +1413,12 @@ enum Permission {
|
|
|
1407
1413
|
EditAlertGroupingRule = "EditAlertGroupingRule",
|
|
1408
1414
|
ReadAlertGroupingRule = "ReadAlertGroupingRule",
|
|
1409
1415
|
|
|
1416
|
+
// Alert Reminder Rule Permissions
|
|
1417
|
+
CreateAlertReminderRule = "CreateAlertReminderRule",
|
|
1418
|
+
DeleteAlertReminderRule = "DeleteAlertReminderRule",
|
|
1419
|
+
EditAlertReminderRule = "EditAlertReminderRule",
|
|
1420
|
+
ReadAlertReminderRule = "ReadAlertReminderRule",
|
|
1421
|
+
|
|
1410
1422
|
// Alert On-Call Rule Permissions
|
|
1411
1423
|
CreateAlertOnCallRule = "CreateAlertOnCallRule",
|
|
1412
1424
|
DeleteAlertOnCallRule = "DeleteAlertOnCallRule",
|
|
@@ -1587,6 +1599,12 @@ enum Permission {
|
|
|
1587
1599
|
EditIncidentSlaRule = "EditIncidentSlaRule",
|
|
1588
1600
|
ReadIncidentSlaRule = "ReadIncidentSlaRule",
|
|
1589
1601
|
|
|
1602
|
+
// Incident Reminder Rule Permissions
|
|
1603
|
+
CreateIncidentReminderRule = "CreateIncidentReminderRule",
|
|
1604
|
+
DeleteIncidentReminderRule = "DeleteIncidentReminderRule",
|
|
1605
|
+
EditIncidentReminderRule = "EditIncidentReminderRule",
|
|
1606
|
+
ReadIncidentReminderRule = "ReadIncidentReminderRule",
|
|
1607
|
+
|
|
1590
1608
|
// Incident SLA Permissions
|
|
1591
1609
|
CreateIncidentSla = "CreateIncidentSla",
|
|
1592
1610
|
DeleteIncidentSla = "DeleteIncidentSla",
|
|
@@ -11996,6 +12014,48 @@ export class PermissionHelper {
|
|
|
11996
12014
|
group: PermissionGroup.ScheduledMaintenance,
|
|
11997
12015
|
},
|
|
11998
12016
|
|
|
12017
|
+
// Scheduled Maintenance Reminder Rule Permissions
|
|
12018
|
+
{
|
|
12019
|
+
permission: Permission.CreateScheduledMaintenanceReminderRule,
|
|
12020
|
+
title: "Create Scheduled Maintenance Reminder Rule",
|
|
12021
|
+
description:
|
|
12022
|
+
"This permission can create Scheduled Maintenance Reminder Rules in this project.",
|
|
12023
|
+
isAssignableToTenant: true,
|
|
12024
|
+
isAccessControlPermission: false,
|
|
12025
|
+
isRolePermission: false,
|
|
12026
|
+
group: PermissionGroup.ScheduledMaintenance,
|
|
12027
|
+
},
|
|
12028
|
+
{
|
|
12029
|
+
permission: Permission.DeleteScheduledMaintenanceReminderRule,
|
|
12030
|
+
title: "Delete Scheduled Maintenance Reminder Rule",
|
|
12031
|
+
description:
|
|
12032
|
+
"This permission can delete Scheduled Maintenance Reminder Rules of this project.",
|
|
12033
|
+
isAssignableToTenant: true,
|
|
12034
|
+
isAccessControlPermission: false,
|
|
12035
|
+
isRolePermission: false,
|
|
12036
|
+
group: PermissionGroup.ScheduledMaintenance,
|
|
12037
|
+
},
|
|
12038
|
+
{
|
|
12039
|
+
permission: Permission.EditScheduledMaintenanceReminderRule,
|
|
12040
|
+
title: "Edit Scheduled Maintenance Reminder Rule",
|
|
12041
|
+
description:
|
|
12042
|
+
"This permission can edit Scheduled Maintenance Reminder Rules of this project.",
|
|
12043
|
+
isAssignableToTenant: true,
|
|
12044
|
+
isAccessControlPermission: false,
|
|
12045
|
+
isRolePermission: false,
|
|
12046
|
+
group: PermissionGroup.ScheduledMaintenance,
|
|
12047
|
+
},
|
|
12048
|
+
{
|
|
12049
|
+
permission: Permission.ReadScheduledMaintenanceReminderRule,
|
|
12050
|
+
title: "Read Scheduled Maintenance Reminder Rule",
|
|
12051
|
+
description:
|
|
12052
|
+
"This permission can read Scheduled Maintenance Reminder Rules of this project.",
|
|
12053
|
+
isAssignableToTenant: true,
|
|
12054
|
+
isAccessControlPermission: false,
|
|
12055
|
+
isRolePermission: false,
|
|
12056
|
+
group: PermissionGroup.ScheduledMaintenance,
|
|
12057
|
+
},
|
|
12058
|
+
|
|
11999
12059
|
// Alert Episode Permissions
|
|
12000
12060
|
{
|
|
12001
12061
|
permission: Permission.CreateAlertEpisode,
|
|
@@ -12120,6 +12180,48 @@ export class PermissionHelper {
|
|
|
12120
12180
|
group: PermissionGroup.Alert,
|
|
12121
12181
|
},
|
|
12122
12182
|
|
|
12183
|
+
// Alert Reminder Rule Permissions
|
|
12184
|
+
{
|
|
12185
|
+
permission: Permission.CreateAlertReminderRule,
|
|
12186
|
+
title: "Create Alert Reminder Rule",
|
|
12187
|
+
description:
|
|
12188
|
+
"This permission can create Alert Reminder Rules in this project.",
|
|
12189
|
+
isAssignableToTenant: true,
|
|
12190
|
+
isAccessControlPermission: false,
|
|
12191
|
+
isRolePermission: false,
|
|
12192
|
+
group: PermissionGroup.Alert,
|
|
12193
|
+
},
|
|
12194
|
+
{
|
|
12195
|
+
permission: Permission.DeleteAlertReminderRule,
|
|
12196
|
+
title: "Delete Alert Reminder Rule",
|
|
12197
|
+
description:
|
|
12198
|
+
"This permission can delete Alert Reminder Rules of this project.",
|
|
12199
|
+
isAssignableToTenant: true,
|
|
12200
|
+
isAccessControlPermission: false,
|
|
12201
|
+
isRolePermission: false,
|
|
12202
|
+
group: PermissionGroup.Alert,
|
|
12203
|
+
},
|
|
12204
|
+
{
|
|
12205
|
+
permission: Permission.EditAlertReminderRule,
|
|
12206
|
+
title: "Edit Alert Reminder Rule",
|
|
12207
|
+
description:
|
|
12208
|
+
"This permission can edit Alert Reminder Rules of this project.",
|
|
12209
|
+
isAssignableToTenant: true,
|
|
12210
|
+
isAccessControlPermission: false,
|
|
12211
|
+
isRolePermission: false,
|
|
12212
|
+
group: PermissionGroup.Alert,
|
|
12213
|
+
},
|
|
12214
|
+
{
|
|
12215
|
+
permission: Permission.ReadAlertReminderRule,
|
|
12216
|
+
title: "Read Alert Reminder Rule",
|
|
12217
|
+
description:
|
|
12218
|
+
"This permission can read Alert Reminder Rules of this project.",
|
|
12219
|
+
isAssignableToTenant: true,
|
|
12220
|
+
isAccessControlPermission: false,
|
|
12221
|
+
isRolePermission: false,
|
|
12222
|
+
group: PermissionGroup.Alert,
|
|
12223
|
+
},
|
|
12224
|
+
|
|
12123
12225
|
// Alert On-Call Rule Permissions
|
|
12124
12226
|
{
|
|
12125
12227
|
permission: Permission.CreateAlertOnCallRule,
|
|
@@ -13402,6 +13504,48 @@ export class PermissionHelper {
|
|
|
13402
13504
|
group: PermissionGroup.Incident,
|
|
13403
13505
|
},
|
|
13404
13506
|
|
|
13507
|
+
// Incident Reminder Rule Permissions
|
|
13508
|
+
{
|
|
13509
|
+
permission: Permission.CreateIncidentReminderRule,
|
|
13510
|
+
title: "Create Incident Reminder Rule",
|
|
13511
|
+
description:
|
|
13512
|
+
"This permission can create Incident Reminder Rules in this project.",
|
|
13513
|
+
isAssignableToTenant: true,
|
|
13514
|
+
isAccessControlPermission: false,
|
|
13515
|
+
isRolePermission: false,
|
|
13516
|
+
group: PermissionGroup.Incident,
|
|
13517
|
+
},
|
|
13518
|
+
{
|
|
13519
|
+
permission: Permission.DeleteIncidentReminderRule,
|
|
13520
|
+
title: "Delete Incident Reminder Rule",
|
|
13521
|
+
description:
|
|
13522
|
+
"This permission can delete Incident Reminder Rules of this project.",
|
|
13523
|
+
isAssignableToTenant: true,
|
|
13524
|
+
isAccessControlPermission: false,
|
|
13525
|
+
isRolePermission: false,
|
|
13526
|
+
group: PermissionGroup.Incident,
|
|
13527
|
+
},
|
|
13528
|
+
{
|
|
13529
|
+
permission: Permission.EditIncidentReminderRule,
|
|
13530
|
+
title: "Edit Incident Reminder Rule",
|
|
13531
|
+
description:
|
|
13532
|
+
"This permission can edit Incident Reminder Rules of this project.",
|
|
13533
|
+
isAssignableToTenant: true,
|
|
13534
|
+
isAccessControlPermission: false,
|
|
13535
|
+
isRolePermission: false,
|
|
13536
|
+
group: PermissionGroup.Incident,
|
|
13537
|
+
},
|
|
13538
|
+
{
|
|
13539
|
+
permission: Permission.ReadIncidentReminderRule,
|
|
13540
|
+
title: "Read Incident Reminder Rule",
|
|
13541
|
+
description:
|
|
13542
|
+
"This permission can read Incident Reminder Rules of this project.",
|
|
13543
|
+
isAssignableToTenant: true,
|
|
13544
|
+
isAccessControlPermission: false,
|
|
13545
|
+
isRolePermission: false,
|
|
13546
|
+
group: PermissionGroup.Incident,
|
|
13547
|
+
},
|
|
13548
|
+
|
|
13405
13549
|
// Incident SLA Permissions
|
|
13406
13550
|
{
|
|
13407
13551
|
permission: Permission.CreateIncidentSla,
|
|
@@ -10,6 +10,8 @@ type TemplateIdsMap = {
|
|
|
10
10
|
readonly IncidentStateChangedOwnerNotification: "oneuptime_incident_state_change_owner_notification";
|
|
11
11
|
readonly IncidentOwnerAddedNotification: "oneuptime_incident_owner_added_notification";
|
|
12
12
|
readonly IncidentMemberAddedNotification: "oneuptime_incident_member_added_notification";
|
|
13
|
+
readonly IncidentReminderOwnerNotification: "oneuptime_incident_reminder_owner_notification";
|
|
14
|
+
readonly AlertReminderOwnerNotification: "oneuptime_alert_reminder_owner_notification";
|
|
13
15
|
readonly AlertCreatedOwnerNotification: "oneuptime_alert_created_owner_notification";
|
|
14
16
|
readonly AlertNotePostedOwnerNotification: "oneuptime_alert_note_posted_owner_notification";
|
|
15
17
|
readonly AlertStateChangedOwnerNotification: "oneuptime_alert_state_changed_owner_notification";
|
|
@@ -33,6 +35,7 @@ type TemplateIdsMap = {
|
|
|
33
35
|
readonly ScheduledMaintenanceNotePostedOwnerNotification: "oneuptime_scheduled_maintenance_note_posted_owner_notification";
|
|
34
36
|
readonly ScheduledMaintenanceOwnerAddedNotification: "oneuptime_scheduled_maintenance_owner_added_notification";
|
|
35
37
|
readonly ScheduledMaintenanceStateChangedOwnerNotification: "oneuptime_scheduled_maintenance_state_changed_owner_notification";
|
|
38
|
+
readonly ScheduledMaintenanceReminderOwnerNotification: "oneuptime_scheduled_maintenance_reminder_owner_notification";
|
|
36
39
|
readonly StatusPageAnnouncementCreatedOwnerNotification: "oneuptime_status_page_announcement_created_owner_notification";
|
|
37
40
|
readonly StatusPageCreatedOwnerNotification: "oneuptime_status_page_created_owner_notification";
|
|
38
41
|
readonly StatusPageOwnerAddedNotification: "oneuptime_status_page_owner_added_notification";
|
|
@@ -63,6 +66,9 @@ const templateIds: TemplateIdsMap = {
|
|
|
63
66
|
IncidentOwnerAddedNotification: "oneuptime_incident_owner_added_notification",
|
|
64
67
|
IncidentMemberAddedNotification:
|
|
65
68
|
"oneuptime_incident_member_added_notification",
|
|
69
|
+
IncidentReminderOwnerNotification:
|
|
70
|
+
"oneuptime_incident_reminder_owner_notification",
|
|
71
|
+
AlertReminderOwnerNotification: "oneuptime_alert_reminder_owner_notification",
|
|
66
72
|
AlertCreatedOwnerNotification: "oneuptime_alert_created_owner_notification",
|
|
67
73
|
AlertNotePostedOwnerNotification:
|
|
68
74
|
"oneuptime_alert_note_posted_owner_notification",
|
|
@@ -106,6 +112,8 @@ const templateIds: TemplateIdsMap = {
|
|
|
106
112
|
"oneuptime_scheduled_maintenance_owner_added_notification",
|
|
107
113
|
ScheduledMaintenanceStateChangedOwnerNotification:
|
|
108
114
|
"oneuptime_scheduled_maintenance_state_changed_owner_notification",
|
|
115
|
+
ScheduledMaintenanceReminderOwnerNotification:
|
|
116
|
+
"oneuptime_scheduled_maintenance_reminder_owner_notification",
|
|
109
117
|
StatusPageAnnouncementCreatedOwnerNotification:
|
|
110
118
|
"oneuptime_status_page_announcement_created_owner_notification",
|
|
111
119
|
StatusPageCreatedOwnerNotification:
|
|
@@ -154,6 +162,8 @@ export const WhatsAppTemplateMessages: WhatsAppTemplateMessagesDefinition = {
|
|
|
154
162
|
[WhatsAppTemplateIds.IncidentStateChangedOwnerNotification]: `Incident #{{incident_number}} ({{incident_title}}) state changed to {{incident_state}}. Track the incident status using {{incident_link}} on the OneUptime dashboard for more context.`,
|
|
155
163
|
[WhatsAppTemplateIds.IncidentOwnerAddedNotification]: `You have been added as an owner of incident #{{incident_number}} ({{incident_title}}). Manage the incident using {{incident_link}} on the OneUptime dashboard.`,
|
|
156
164
|
[WhatsAppTemplateIds.IncidentMemberAddedNotification]: `You have been assigned as {{incident_role}} to incident #{{incident_number}} ({{incident_title}}). Manage the incident using {{incident_link}} on the OneUptime dashboard.`,
|
|
165
|
+
[WhatsAppTemplateIds.IncidentReminderOwnerNotification]: `Reminder: Incident #{{incident_number}} ({{incident_title}}) is still {{incident_state}} and has been open for {{elapsed_time}}. Review the incident using {{incident_link}} on the OneUptime dashboard.`,
|
|
166
|
+
[WhatsAppTemplateIds.AlertReminderOwnerNotification]: `Reminder: Alert #{{alert_number}} ({{alert_title}}) is still {{alert_state}} and has been open for {{elapsed_time}}. Review the alert using {{alert_link}} on the OneUptime dashboard.`,
|
|
157
167
|
[WhatsAppTemplateIds.AlertCreatedOwnerNotification]: `Alert #{{alert_number}} ({{alert_title}}) has been created for project {{project_name}}. View alert details using {{alert_link}} on the OneUptime dashboard `,
|
|
158
168
|
[WhatsAppTemplateIds.AlertNotePostedOwnerNotification]: `A new note was posted on alert #{{alert_number}} ({{alert_title}}). Review the alert using {{alert_link}} on the OneUptime dashboard for updates.`,
|
|
159
169
|
[WhatsAppTemplateIds.AlertStateChangedOwnerNotification]: `Alert #{{alert_number}} ({{alert_title}}) state changed to {{alert_state}}. Track the alert status using {{alert_link}} on the OneUptime dashboard to stay informed.`,
|
|
@@ -177,6 +187,7 @@ export const WhatsAppTemplateMessages: WhatsAppTemplateMessagesDefinition = {
|
|
|
177
187
|
[WhatsAppTemplateIds.ScheduledMaintenanceNotePostedOwnerNotification]: `A new note was posted on scheduled maintenance #{{event_number}} ({{event_title}}). Review the event using {{maintenance_link}} on the OneUptime dashboard for the latest updates.`,
|
|
178
188
|
[WhatsAppTemplateIds.ScheduledMaintenanceOwnerAddedNotification]: `You have been added as an owner of scheduled maintenance #{{event_number}} ({{event_title}}). Please check the event using {{maintenance_link}} on the OneUptime dashboard.`,
|
|
179
189
|
[WhatsAppTemplateIds.ScheduledMaintenanceStateChangedOwnerNotification]: `Scheduled maintenance #{{event_number}} ({{event_title}}) state changed to {{event_state}}. Track event status using {{maintenance_link}} on the OneUptime dashboard to stay aligned.`,
|
|
190
|
+
[WhatsAppTemplateIds.ScheduledMaintenanceReminderOwnerNotification]: `Reminder: Scheduled maintenance #{{event_number}} ({{event_title}}) is still {{event_state}} and has been open for {{elapsed_time}}. Review the event using {{event_link}} on the OneUptime dashboard.`,
|
|
180
191
|
[WhatsAppTemplateIds.StatusPageAnnouncementCreatedOwnerNotification]: `Announcement {{announcement_title}} was published on status page {{status_page_name}}. View the announcement using {{status_page_link}} on the OneUptime dashboard `,
|
|
181
192
|
[WhatsAppTemplateIds.StatusPageCreatedOwnerNotification]: `Status page {{status_page_name}} has been created. View status page details using {{status_page_link}} on the OneUptime dashboard for full context.`,
|
|
182
193
|
[WhatsAppTemplateIds.StatusPageOwnerAddedNotification]: `You have been added as an owner of status page {{status_page_name}}. Manage the status page using {{status_page_link}} on the OneUptime dashboard to stay engaged.`,
|
|
@@ -203,6 +214,8 @@ export const WhatsAppTemplateLanguage: Record<WhatsAppTemplateId, string> = {
|
|
|
203
214
|
[WhatsAppTemplateIds.IncidentStateChangedOwnerNotification]: "en",
|
|
204
215
|
[WhatsAppTemplateIds.IncidentOwnerAddedNotification]: "en",
|
|
205
216
|
[WhatsAppTemplateIds.IncidentMemberAddedNotification]: "en",
|
|
217
|
+
[WhatsAppTemplateIds.IncidentReminderOwnerNotification]: "en",
|
|
218
|
+
[WhatsAppTemplateIds.AlertReminderOwnerNotification]: "en",
|
|
206
219
|
[WhatsAppTemplateIds.AlertCreatedOwnerNotification]: "en",
|
|
207
220
|
[WhatsAppTemplateIds.AlertNotePostedOwnerNotification]: "en",
|
|
208
221
|
[WhatsAppTemplateIds.AlertStateChangedOwnerNotification]: "en",
|
|
@@ -226,6 +239,7 @@ export const WhatsAppTemplateLanguage: Record<WhatsAppTemplateId, string> = {
|
|
|
226
239
|
[WhatsAppTemplateIds.ScheduledMaintenanceNotePostedOwnerNotification]: "en",
|
|
227
240
|
[WhatsAppTemplateIds.ScheduledMaintenanceOwnerAddedNotification]: "en",
|
|
228
241
|
[WhatsAppTemplateIds.ScheduledMaintenanceStateChangedOwnerNotification]: "en",
|
|
242
|
+
[WhatsAppTemplateIds.ScheduledMaintenanceReminderOwnerNotification]: "en",
|
|
229
243
|
[WhatsAppTemplateIds.StatusPageAnnouncementCreatedOwnerNotification]: "en",
|
|
230
244
|
[WhatsAppTemplateIds.StatusPageCreatedOwnerNotification]: "en",
|
|
231
245
|
[WhatsAppTemplateIds.StatusPageOwnerAddedNotification]: "en",
|