@oneuptime/common 11.3.20 → 11.3.21
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/DatabaseModels/EnterpriseLicenseInstance.ts +173 -0
- package/Models/DatabaseModels/GlobalConfig.ts +19 -0
- package/Models/DatabaseModels/Index.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/Index.ts +2 -0
- package/Server/Services/EnterpriseLicenseInstanceService.ts +10 -0
- package/Server/Services/Index.ts +2 -0
- package/Server/Services/IoTDeviceService.ts +99 -4
- package/Server/Services/StatusPageService.ts +104 -45
- 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/ServiceRoute.ts +4 -0
- package/Tests/Server/Services/IoTDeviceService.test.ts +280 -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/EnterpriseLicense/EnterpriseLicenseInstanceSummary.ts +18 -0
- package/Types/Monitor/MonitorStep.ts +32 -0
- package/UI/Components/EditionLabel/EditionLabel.tsx +172 -0
- package/Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts +125 -0
- 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/Index.js +2 -0
- package/build/dist/Models/DatabaseModels/Index.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/Index.js +2 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.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/Index.js +2 -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/StatusPageService.js +91 -43
- package/build/dist/Server/Services/StatusPageService.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/ServiceRoute.js +1 -0
- package/build/dist/ServiceRoute.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/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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnterpriseLicenseAPI.js","sourceRoot":"","sources":["../../../../Server/API/EnterpriseLicenseAPI.ts"],"names":[],"mappings":"AAAA,OAAO,iBAAiB,MAAM,+CAA+C,CAAC;AAC9E,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"EnterpriseLicenseAPI.js","sourceRoot":"","sources":["../../../../Server/API/EnterpriseLicenseAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import ObjectID from "../../Types/ObjectID";
|
|
|
6
6
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
7
7
|
import API from "../../Utils/API";
|
|
8
8
|
import HTTPErrorResponse from "../../Types/API/HTTPErrorResponse";
|
|
9
|
-
import { EnterpriseLicenseValidationUrl } from "../EnvironmentConfig";
|
|
9
|
+
import { EnterpriseLicenseValidationUrl, Host } from "../EnvironmentConfig";
|
|
10
10
|
import UserMiddleware from "../Middleware/UserAuthorization";
|
|
11
11
|
export default class GlobalConfigAPI extends BaseAPI {
|
|
12
12
|
constructor() {
|
|
@@ -31,7 +31,8 @@ export default class GlobalConfigAPI extends BaseAPI {
|
|
|
31
31
|
next(err);
|
|
32
32
|
}
|
|
33
33
|
});
|
|
34
|
-
this.router.get(`${(_b = new this.entityType().getCrudApiPath()) === null || _b === void 0 ? void 0 : _b.toString()}/license`, async (req, res, next) => {
|
|
34
|
+
this.router.get(`${(_b = new this.entityType().getCrudApiPath()) === null || _b === void 0 ? void 0 : _b.toString()}/license`, UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
35
|
+
var _a;
|
|
35
36
|
try {
|
|
36
37
|
const config = await GlobalConfigService.findOneById({
|
|
37
38
|
id: ObjectID.getZeroObjectID(),
|
|
@@ -43,18 +44,35 @@ export default class GlobalConfigAPI extends BaseAPI {
|
|
|
43
44
|
enterpriseLicenseUserLimit: true,
|
|
44
45
|
enterpriseLicenseCurrentUserCount: true,
|
|
45
46
|
enterpriseLicenseUserCountUpdatedAt: true,
|
|
47
|
+
enterpriseLicenseInstances: true,
|
|
48
|
+
instanceId: true,
|
|
46
49
|
},
|
|
47
50
|
props: {
|
|
48
51
|
isRoot: true,
|
|
49
52
|
},
|
|
50
53
|
});
|
|
54
|
+
/*
|
|
55
|
+
* This route also serves the login page (before sign-in), so it
|
|
56
|
+
* cannot require authentication outright. Anonymous callers only
|
|
57
|
+
* get enough to render the edition pill — the license key, token
|
|
58
|
+
* and instance topology require a signed-in user.
|
|
59
|
+
*/
|
|
60
|
+
const isAuthenticatedUser = Boolean((_a = req.userAuthorization) === null || _a === void 0 ? void 0 : _a.userId);
|
|
61
|
+
const licenseValid = Boolean((config === null || config === void 0 ? void 0 : config.enterpriseLicenseToken) &&
|
|
62
|
+
(config === null || config === void 0 ? void 0 : config.enterpriseLicenseExpiresAt) &&
|
|
63
|
+
config.enterpriseLicenseExpiresAt.getTime() > Date.now());
|
|
51
64
|
const responseBody = {
|
|
52
65
|
companyName: (config === null || config === void 0 ? void 0 : config.enterpriseCompanyName) || null,
|
|
53
66
|
expiresAt: (config === null || config === void 0 ? void 0 : config.enterpriseLicenseExpiresAt)
|
|
54
67
|
? config.enterpriseLicenseExpiresAt.toISOString()
|
|
55
68
|
: null,
|
|
56
|
-
licenseKey:
|
|
57
|
-
|
|
69
|
+
licenseKey: isAuthenticatedUser
|
|
70
|
+
? (config === null || config === void 0 ? void 0 : config.enterpriseLicenseKey) || null
|
|
71
|
+
: null,
|
|
72
|
+
token: isAuthenticatedUser
|
|
73
|
+
? (config === null || config === void 0 ? void 0 : config.enterpriseLicenseToken) || null
|
|
74
|
+
: null,
|
|
75
|
+
licenseValid: licenseValid,
|
|
58
76
|
userLimit: typeof (config === null || config === void 0 ? void 0 : config.enterpriseLicenseUserLimit) === "number"
|
|
59
77
|
? config.enterpriseLicenseUserLimit
|
|
60
78
|
: null,
|
|
@@ -64,6 +82,13 @@ export default class GlobalConfigAPI extends BaseAPI {
|
|
|
64
82
|
userCountUpdatedAt: (config === null || config === void 0 ? void 0 : config.enterpriseLicenseUserCountUpdatedAt)
|
|
65
83
|
? config.enterpriseLicenseUserCountUpdatedAt.toISOString()
|
|
66
84
|
: null,
|
|
85
|
+
instances: isAuthenticatedUser &&
|
|
86
|
+
Array.isArray(config === null || config === void 0 ? void 0 : config.enterpriseLicenseInstances)
|
|
87
|
+
? config.enterpriseLicenseInstances
|
|
88
|
+
: [],
|
|
89
|
+
instanceId: isAuthenticatedUser && (config === null || config === void 0 ? void 0 : config.instanceId)
|
|
90
|
+
? config.instanceId.toString()
|
|
91
|
+
: null,
|
|
67
92
|
};
|
|
68
93
|
return Response.sendJsonObjectResponse(req, res, responseBody);
|
|
69
94
|
}
|
|
@@ -78,10 +103,31 @@ export default class GlobalConfigAPI extends BaseAPI {
|
|
|
78
103
|
if (!licenseKey) {
|
|
79
104
|
throw new BadDataException("License key is required");
|
|
80
105
|
}
|
|
106
|
+
const globalConfigId = ObjectID.getZeroObjectID();
|
|
107
|
+
const existingConfig = await GlobalConfigService.findOneById({
|
|
108
|
+
id: globalConfigId,
|
|
109
|
+
select: {
|
|
110
|
+
_id: true,
|
|
111
|
+
instanceId: true,
|
|
112
|
+
},
|
|
113
|
+
props: {
|
|
114
|
+
isRoot: true,
|
|
115
|
+
ignoreHooks: true,
|
|
116
|
+
},
|
|
117
|
+
});
|
|
118
|
+
/*
|
|
119
|
+
* Send this instance's id and host along with the key so the
|
|
120
|
+
* license server registers this instance against the license and
|
|
121
|
+
* it shows up in the instance list on all instances that share
|
|
122
|
+
* the license.
|
|
123
|
+
*/
|
|
124
|
+
const instanceId = (existingConfig === null || existingConfig === void 0 ? void 0 : existingConfig.instanceId) || ObjectID.generate();
|
|
81
125
|
const validationResponse = await API.post({
|
|
82
126
|
url: EnterpriseLicenseValidationUrl,
|
|
83
127
|
data: {
|
|
84
128
|
licenseKey,
|
|
129
|
+
instanceId: instanceId.toString(),
|
|
130
|
+
host: Host,
|
|
85
131
|
},
|
|
86
132
|
});
|
|
87
133
|
if (!validationResponse.isSuccess()) {
|
|
@@ -121,6 +167,9 @@ export default class GlobalConfigAPI extends BaseAPI {
|
|
|
121
167
|
userCountUpdatedAt = parsedReportedAt;
|
|
122
168
|
}
|
|
123
169
|
}
|
|
170
|
+
const instances = Array.isArray(payload["instances"])
|
|
171
|
+
? payload["instances"]
|
|
172
|
+
: [];
|
|
124
173
|
const updatePayload = {
|
|
125
174
|
enterpriseCompanyName: companyNameRaw || null,
|
|
126
175
|
enterpriseLicenseKey: licenseKeyRaw || null,
|
|
@@ -129,18 +178,12 @@ export default class GlobalConfigAPI extends BaseAPI {
|
|
|
129
178
|
enterpriseLicenseUserLimit: userLimit,
|
|
130
179
|
enterpriseLicenseCurrentUserCount: currentUserCount,
|
|
131
180
|
enterpriseLicenseUserCountUpdatedAt: userCountUpdatedAt,
|
|
181
|
+
enterpriseLicenseInstances: instances,
|
|
132
182
|
};
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
_id: true,
|
|
138
|
-
},
|
|
139
|
-
props: {
|
|
140
|
-
isRoot: true,
|
|
141
|
-
ignoreHooks: true,
|
|
142
|
-
},
|
|
143
|
-
});
|
|
183
|
+
if (!(existingConfig === null || existingConfig === void 0 ? void 0 : existingConfig.instanceId)) {
|
|
184
|
+
// Installs that predate instance ids: persist the one we generated.
|
|
185
|
+
updatePayload.instanceId = instanceId;
|
|
186
|
+
}
|
|
144
187
|
if (existingConfig) {
|
|
145
188
|
await GlobalConfigService.updateOneById({
|
|
146
189
|
id: globalConfigId,
|
|
@@ -176,6 +219,8 @@ export default class GlobalConfigAPI extends BaseAPI {
|
|
|
176
219
|
newConfig.enterpriseLicenseUserCountUpdatedAt =
|
|
177
220
|
userCountUpdatedAt;
|
|
178
221
|
}
|
|
222
|
+
newConfig.enterpriseLicenseInstances = instances;
|
|
223
|
+
newConfig.instanceId = instanceId;
|
|
179
224
|
await GlobalConfigService.create({
|
|
180
225
|
data: newConfig,
|
|
181
226
|
props: {
|
|
@@ -194,6 +239,8 @@ export default class GlobalConfigAPI extends BaseAPI {
|
|
|
194
239
|
userCountUpdatedAt: userCountUpdatedAt
|
|
195
240
|
? userCountUpdatedAt.toISOString()
|
|
196
241
|
: null,
|
|
242
|
+
instances: instances,
|
|
243
|
+
instanceId: instanceId.toString(),
|
|
197
244
|
});
|
|
198
245
|
}
|
|
199
246
|
catch (err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GlobalConfigAPI.js","sourceRoot":"","sources":["../../../../Server/API/GlobalConfigAPI.ts"],"names":[],"mappings":"AAAA,OAAO,mBAEN,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"GlobalConfigAPI.js","sourceRoot":"","sources":["../../../../Server/API/GlobalConfigAPI.ts"],"names":[],"mappings":"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"}
|
|
@@ -1021,8 +1021,13 @@ export default class StatusPageAPI extends BaseAPI {
|
|
|
1021
1021
|
next(err);
|
|
1022
1022
|
}
|
|
1023
1023
|
});
|
|
1024
|
-
|
|
1025
|
-
|
|
1024
|
+
/*
|
|
1025
|
+
* Shared handler for the overview endpoint. Registered for both POST
|
|
1026
|
+
* (used by the status page SPA) and GET (machine-readable access for
|
|
1027
|
+
* crawlers / AI agents) so the authentication and authorization path
|
|
1028
|
+
* can never drift between the two methods. It does not read req.body.
|
|
1029
|
+
*/
|
|
1030
|
+
const overviewHandler = async (req, res, next) => {
|
|
1026
1031
|
var _a;
|
|
1027
1032
|
try {
|
|
1028
1033
|
const statusPageId = await resolveStatusPageIdOrThrow(req.params["statusPageIdOrDomain"]);
|
|
@@ -1489,26 +1494,25 @@ export default class StatusPageAPI extends BaseAPI {
|
|
|
1489
1494
|
}
|
|
1490
1495
|
let scheduledMaintenanceEvents = [];
|
|
1491
1496
|
if (statusPage.showScheduledMaintenanceEventsOnStatusPage) {
|
|
1492
|
-
scheduledMaintenanceEvents =
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
isOngoingState: true,
|
|
1497
|
-
},
|
|
1498
|
-
statusPages: statusPageId,
|
|
1499
|
-
projectId: statusPage.projectId,
|
|
1500
|
-
isVisibleOnStatusPage: true,
|
|
1501
|
-
},
|
|
1502
|
-
select: scheduledEventsSelect,
|
|
1503
|
-
sort: {
|
|
1504
|
-
startsAt: SortOrder.Ascending,
|
|
1505
|
-
},
|
|
1506
|
-
skip: 0,
|
|
1507
|
-
limit: LIMIT_PER_PROJECT,
|
|
1508
|
-
props: {
|
|
1509
|
-
isRoot: true,
|
|
1497
|
+
scheduledMaintenanceEvents = await ScheduledMaintenanceService.findBy({
|
|
1498
|
+
query: {
|
|
1499
|
+
currentScheduledMaintenanceState: {
|
|
1500
|
+
isOngoingState: true,
|
|
1510
1501
|
},
|
|
1511
|
-
|
|
1502
|
+
statusPages: statusPageId,
|
|
1503
|
+
projectId: statusPage.projectId,
|
|
1504
|
+
isVisibleOnStatusPage: true,
|
|
1505
|
+
},
|
|
1506
|
+
select: scheduledEventsSelect,
|
|
1507
|
+
sort: {
|
|
1508
|
+
startsAt: SortOrder.Ascending,
|
|
1509
|
+
},
|
|
1510
|
+
skip: 0,
|
|
1511
|
+
limit: LIMIT_PER_PROJECT,
|
|
1512
|
+
props: {
|
|
1513
|
+
isRoot: true,
|
|
1514
|
+
},
|
|
1515
|
+
});
|
|
1512
1516
|
}
|
|
1513
1517
|
let futureScheduledMaintenanceEvents = [];
|
|
1514
1518
|
if (statusPage.showScheduledMaintenanceEventsOnStatusPage) {
|
|
@@ -1693,12 +1697,23 @@ export default class StatusPageAPI extends BaseAPI {
|
|
|
1693
1697
|
monitorsInGroup: JSONFunctions.serialize(monitorsInGroup),
|
|
1694
1698
|
timelineIncidents: BaseModel.toJSONArray(timelineIncidents, Incident),
|
|
1695
1699
|
};
|
|
1700
|
+
// These can serve private-page data on a GET; never let shared caches store them.
|
|
1701
|
+
Response.setNoCacheHeaders(res);
|
|
1696
1702
|
return Response.sendJsonObjectResponse(req, res, response);
|
|
1697
1703
|
}
|
|
1698
1704
|
catch (err) {
|
|
1699
1705
|
next(err);
|
|
1700
1706
|
}
|
|
1701
|
-
}
|
|
1707
|
+
};
|
|
1708
|
+
const overviewApiPath = `${(_x = new this.entityType()
|
|
1709
|
+
.getCrudApiPath()) === null || _x === void 0 ? void 0 : _x.toString()}/overview/:statusPageIdOrDomain`;
|
|
1710
|
+
this.router.post(overviewApiPath, UserMiddleware.getUserMiddleware, overviewHandler);
|
|
1711
|
+
/*
|
|
1712
|
+
* GET variant of the overview endpoint. Same middleware and same handler
|
|
1713
|
+
* as the POST route above — private status pages are rejected for
|
|
1714
|
+
* unauthenticated callers exactly as they are on POST.
|
|
1715
|
+
*/
|
|
1716
|
+
this.router.get(overviewApiPath, UserMiddleware.getUserMiddleware, overviewHandler);
|
|
1702
1717
|
this.router.put(`${(_y = new this.entityType()
|
|
1703
1718
|
.getCrudApiPath()) === null || _y === void 0 ? void 0 : _y.toString()}/update-subscription/:statusPageId/:subscriberId`, UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
1704
1719
|
try {
|
|
@@ -1739,39 +1754,67 @@ export default class StatusPageAPI extends BaseAPI {
|
|
|
1739
1754
|
next(err);
|
|
1740
1755
|
}
|
|
1741
1756
|
});
|
|
1742
|
-
|
|
1743
|
-
|
|
1757
|
+
/*
|
|
1758
|
+
* Shared handler for the incidents list endpoint. Registered for both
|
|
1759
|
+
* POST and GET (same auth path). It does not read req.body.
|
|
1760
|
+
*/
|
|
1761
|
+
const incidentsListHandler = async (req, res, next) => {
|
|
1744
1762
|
try {
|
|
1745
1763
|
const objectId = await resolveStatusPageIdOrThrow(req.params["statusPageIdOrDomain"]);
|
|
1746
1764
|
const response = await this.getIncidents(objectId, null, req);
|
|
1765
|
+
// These can serve private-page data on a GET; never let shared caches store them.
|
|
1766
|
+
Response.setNoCacheHeaders(res);
|
|
1747
1767
|
return Response.sendJsonObjectResponse(req, res, response);
|
|
1748
1768
|
}
|
|
1749
1769
|
catch (err) {
|
|
1750
1770
|
next(err);
|
|
1751
1771
|
}
|
|
1752
|
-
}
|
|
1753
|
-
|
|
1754
|
-
.getCrudApiPath()) === null ||
|
|
1772
|
+
};
|
|
1773
|
+
const incidentsListApiPath = `${(_2 = new this.entityType()
|
|
1774
|
+
.getCrudApiPath()) === null || _2 === void 0 ? void 0 : _2.toString()}/incidents/:statusPageIdOrDomain`;
|
|
1775
|
+
this.router.post(incidentsListApiPath, UserMiddleware.getUserMiddleware, incidentsListHandler);
|
|
1776
|
+
this.router.get(incidentsListApiPath, UserMiddleware.getUserMiddleware, incidentsListHandler);
|
|
1777
|
+
/*
|
|
1778
|
+
* Shared handler for the scheduled maintenance events list endpoint.
|
|
1779
|
+
* Registered for both POST and GET (same auth path). It does not read
|
|
1780
|
+
* req.body.
|
|
1781
|
+
*/
|
|
1782
|
+
const scheduledMaintenanceEventsListHandler = async (req, res, next) => {
|
|
1755
1783
|
try {
|
|
1756
1784
|
const objectId = await resolveStatusPageIdOrThrow(req.params["statusPageIdOrDomain"]);
|
|
1757
1785
|
const response = await this.getScheduledMaintenanceEvents(objectId, null, req);
|
|
1786
|
+
// These can serve private-page data on a GET; never let shared caches store them.
|
|
1787
|
+
Response.setNoCacheHeaders(res);
|
|
1758
1788
|
return Response.sendJsonObjectResponse(req, res, response);
|
|
1759
1789
|
}
|
|
1760
1790
|
catch (err) {
|
|
1761
1791
|
next(err);
|
|
1762
1792
|
}
|
|
1763
|
-
}
|
|
1764
|
-
|
|
1765
|
-
.getCrudApiPath()) === null ||
|
|
1793
|
+
};
|
|
1794
|
+
const scheduledMaintenanceEventsListApiPath = `${(_3 = new this.entityType()
|
|
1795
|
+
.getCrudApiPath()) === null || _3 === void 0 ? void 0 : _3.toString()}/scheduled-maintenance-events/:statusPageIdOrDomain`;
|
|
1796
|
+
this.router.post(scheduledMaintenanceEventsListApiPath, UserMiddleware.getUserMiddleware, scheduledMaintenanceEventsListHandler);
|
|
1797
|
+
this.router.get(scheduledMaintenanceEventsListApiPath, UserMiddleware.getUserMiddleware, scheduledMaintenanceEventsListHandler);
|
|
1798
|
+
/*
|
|
1799
|
+
* Shared handler for the announcements list endpoint. Registered for
|
|
1800
|
+
* both POST and GET (same auth path). It does not read req.body.
|
|
1801
|
+
*/
|
|
1802
|
+
const announcementsListHandler = async (req, res, next) => {
|
|
1766
1803
|
try {
|
|
1767
1804
|
const objectId = await resolveStatusPageIdOrThrow(req.params["statusPageIdOrDomain"]);
|
|
1768
1805
|
const response = await this.getAnnouncements(objectId, null, req);
|
|
1806
|
+
// These can serve private-page data on a GET; never let shared caches store them.
|
|
1807
|
+
Response.setNoCacheHeaders(res);
|
|
1769
1808
|
return Response.sendJsonObjectResponse(req, res, response);
|
|
1770
1809
|
}
|
|
1771
1810
|
catch (err) {
|
|
1772
1811
|
next(err);
|
|
1773
1812
|
}
|
|
1774
|
-
}
|
|
1813
|
+
};
|
|
1814
|
+
const announcementsListApiPath = `${(_4 = new this.entityType()
|
|
1815
|
+
.getCrudApiPath()) === null || _4 === void 0 ? void 0 : _4.toString()}/announcements/:statusPageIdOrDomain`;
|
|
1816
|
+
this.router.post(announcementsListApiPath, UserMiddleware.getUserMiddleware, announcementsListHandler);
|
|
1817
|
+
this.router.get(announcementsListApiPath, UserMiddleware.getUserMiddleware, announcementsListHandler);
|
|
1775
1818
|
this.router.post(`${(_5 = new this.entityType()
|
|
1776
1819
|
.getCrudApiPath()) === null || _5 === void 0 ? void 0 : _5.toString()}/incidents/:statusPageIdOrDomain/:incidentId`, UserMiddleware.getUserMiddleware, async (req, res, next) => {
|
|
1777
1820
|
try {
|