@oneuptime/common 12.0.12 → 12.0.13

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 (234) hide show
  1. package/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.ts +32 -5
  2. package/Models/DatabaseModels/NetworkDevice.ts +64 -0
  3. package/Models/DatabaseModels/StatusPage.ts +59 -0
  4. package/Models/DatabaseModels/StatusPageOidc.ts +2 -0
  5. package/Models/DatabaseModels/WorkspaceProjectAuthToken.ts +19 -2
  6. package/Server/API/AIChatAPI.ts +55 -56
  7. package/Server/API/CommonAPI.ts +89 -0
  8. package/Server/API/MicrosoftTeamsAPI.ts +20 -9
  9. package/Server/API/SlackAPI.ts +13 -10
  10. package/Server/API/StatusPageAPI.ts +2197 -2128
  11. package/Server/API/TelemetryAPI.ts +72 -3
  12. package/Server/Infrastructure/Postgres/SchemaMigrations/1787500000000-AddEnableSearchEngineIndexingToStatusPage.ts +30 -0
  13. package/Server/Infrastructure/Postgres/SchemaMigrations/1787600000000-AddNetworkDeviceReachabilityColumns.ts +47 -0
  14. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
  15. package/Server/Middleware/UserAuthorization.ts +11 -2
  16. package/Server/Services/ApiKeyPermissionService.ts +116 -2
  17. package/Server/Services/DatabaseService.ts +17 -6
  18. package/Server/Services/LogAggregationService.ts +34 -0
  19. package/Server/Services/LogService.ts +21 -0
  20. package/Server/Services/NetworkSiteService.ts +12 -0
  21. package/Server/Services/SpanService.ts +21 -0
  22. package/Server/Services/TraceAggregationService.ts +15 -0
  23. package/Server/Services/WorkspaceNotificationRuleService.ts +172 -220
  24. package/Server/Types/AnalyticsDatabase/ModelPermission.ts +9 -0
  25. package/Server/Types/Database/Permissions/AccessControlPermission.ts +47 -16
  26. package/Server/Utils/APIKey/AccessPermission.ts +16 -40
  27. package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +144 -0
  28. package/Server/Utils/LogRedaction.ts +576 -0
  29. package/Server/Utils/Logger.ts +123 -46
  30. package/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.ts +94 -23
  31. package/Server/Utils/Monitor/MonitorResource.ts +29 -9
  32. package/Server/Utils/Monitor/NetworkInventoryUtil.ts +28 -7
  33. package/Server/Utils/SessionReplay/SessionReplayGateCacheStore.ts +56 -10
  34. package/Server/Utils/StartServer.ts +30 -9
  35. package/Server/Utils/StatusPageSearchEngineIndexing.ts +33 -0
  36. package/Server/Utils/Telemetry/ResourceEntityFilter.ts +441 -0
  37. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +488 -46
  38. package/Tests/App/Dashboard/MonitorTypePicker.test.tsx +300 -0
  39. package/Tests/App/StatusPage/StatusPageIndexPageRobotsMeta.test.ts +130 -0
  40. package/Tests/Models/DatabaseModels/DatabaseBaseModelToJSONObjectCache.test.ts +180 -0
  41. package/Tests/Models/StatusPageEnableSearchEngineIndexing.test.ts +157 -0
  42. package/Tests/Server/API/AIChatCancelAndFeedback.test.ts +23 -1
  43. package/Tests/Server/API/AIChatRouteAuthorization.test.ts +785 -0
  44. package/Tests/Server/API/BaseAPIApiKeyAuth.test.ts +21 -8
  45. package/Tests/Server/API/CommonAPIAuthGuard.test.ts +290 -0
  46. package/Tests/Server/API/MicrosoftTeamsManifest.test.ts +7 -1
  47. package/Tests/Server/API/StatusPageOverviewCache.test.ts +474 -0
  48. package/Tests/Server/API/StatusPageSeoSearchEngineIndexing.test.ts +189 -0
  49. package/Tests/Server/Infrastructure/InMemoryTTLCache.test.ts +158 -0
  50. package/Tests/Server/Infrastructure/Postgres/DeviceRoleAndDeclaredLinkParentMigration.test.ts +9 -60
  51. package/Tests/Server/Middleware/ProjectAuthorizationApiKeyMiddleware.test.ts +24 -15
  52. package/Tests/Server/Middleware/UserAuthorization.test.ts +79 -0
  53. package/Tests/Server/Services/AddNetworkDeviceReachabilityColumnsMigration.test.ts +332 -0
  54. package/Tests/Server/Services/ApiKeyPermissionService.test.ts +347 -0
  55. package/Tests/Server/Services/DatabaseServiceUpdateDebugLogging.test.ts +282 -0
  56. package/Tests/Server/Services/NetworkSiteService.test.ts +56 -2
  57. package/Tests/Server/Services/TelemetryResourceFacetFilters.test.ts +267 -0
  58. package/Tests/Server/Services/WorkspaceNotificationRuleTestRuleChannels.test.ts +702 -0
  59. package/Tests/Server/Types/Database/Permissions/AccessControlPermission.test.ts +165 -0
  60. package/Tests/Server/Utils/APIKey/AccessPermission.test.ts +48 -36
  61. package/Tests/Server/Utils/AnalyticsDatabase/StatementGenerator.test.ts +213 -0
  62. package/Tests/Server/Utils/LogRedaction.test.ts +415 -0
  63. package/Tests/Server/Utils/LoggerCredentialLeak.test.ts +245 -0
  64. package/Tests/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.test.ts +374 -4
  65. package/Tests/Server/Utils/Monitor/MonitorResourceIngestedStepSelection.test.ts +455 -0
  66. package/Tests/Server/Utils/Monitor/NetworkDeviceReachabilityRoundTrip.test.ts +369 -0
  67. package/Tests/Server/Utils/Monitor/NetworkInventoryUtil.test.ts +86 -8
  68. package/Tests/Server/Utils/PrivacyFilterUtil.test.ts +64 -0
  69. package/Tests/Server/Utils/SessionReplay/SessionReplayGateCacheStore.test.ts +207 -0
  70. package/Tests/Server/Utils/StartServerBodyVerify.test.ts +335 -0
  71. package/Tests/Server/Utils/StatusPageSearchEngineIndexing.test.ts +60 -0
  72. package/Tests/Server/Utils/Telemetry/ResourceEntityFilter.test.ts +435 -0
  73. package/Tests/Server/Utils/Workspace/MicrosoftTeamsChannelSend.test.ts +607 -62
  74. package/Tests/Server/Utils/Workspace/MicrosoftTeamsInstalledTeamIdSpace.test.ts +778 -0
  75. package/Tests/Server/Utils/Workspace/MicrosoftTeamsTeamInstalls.test.ts +44 -10
  76. package/Tests/Types/API/HostnameFromAuthority.test.ts +164 -0
  77. package/Tests/Types/Database/AccessControl/ColumnAccessControlCache.test.ts +344 -0
  78. package/Tests/Types/Database/DatabasePropertyFindOperator.test.ts +518 -0
  79. package/Tests/Types/Database/TableColumnMetadataCache.test.ts +286 -0
  80. package/Tests/Types/Monitor/MonitorStep.test.ts +100 -0
  81. package/Tests/Types/Monitor/MonitorTypeKeywords.test.ts +360 -0
  82. package/Tests/Types/StatusPage/SearchEngineIndexing.test.ts +86 -0
  83. package/Tests/Types/Telemetry/ResourceEntityFacet.test.ts +254 -0
  84. package/Tests/UI/Components/CardSelect.test.tsx +1021 -0
  85. package/Tests/UI/Components/MasterPage.test.tsx +36 -1
  86. package/Tests/Utils/Monitor/MonitorMetricType.test.ts +66 -1
  87. package/Tests/Utils/Monitor/NetworkTopologyUtil.test.ts +115 -6
  88. package/Tests/Utils/NetworkDevice/DeviceReachabilityUtil.test.ts +610 -0
  89. package/Tests/Utils/NetworkSite/SiteStatusRollupUtil.test.ts +114 -45
  90. package/Types/API/Hostname.ts +79 -0
  91. package/Types/Database/AccessControl/ColumnAccessControl.ts +33 -11
  92. package/Types/Database/AccessControl/ColumnBillingAccessControl.ts +33 -11
  93. package/Types/Database/DatabaseProperty.ts +38 -0
  94. package/Types/Database/TableColumn.ts +34 -7
  95. package/Types/Events/Recurring.ts +16 -1
  96. package/Types/Monitor/MonitorStep.ts +13 -1
  97. package/Types/Monitor/MonitorType.ts +345 -40
  98. package/Types/Monitor/SSLMonitor/SslMonitorResponse.ts +43 -0
  99. package/Types/StatusPage/SearchEngineIndexing.ts +61 -0
  100. package/Types/Telemetry/ResourceEntityFacet.ts +211 -0
  101. package/UI/Components/CardSelect/CardSelect.tsx +714 -105
  102. package/UI/Components/EmptyState/EmptyState.tsx +8 -1
  103. package/UI/Components/Footer/Footer.tsx +32 -6
  104. package/UI/Components/Forms/Fields/FormField.tsx +3 -0
  105. package/UI/Components/Forms/Types/Field.ts +8 -0
  106. package/UI/Components/Loader/PageLoader.tsx +29 -8
  107. package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +26 -4
  108. package/UI/Components/Markdown.tsx/LazyMarkdownViewer.tsx +17 -1
  109. package/UI/Components/MasterPage/MasterPage.tsx +24 -11
  110. package/Utils/Monitor/MonitorMetricType.ts +16 -1
  111. package/Utils/Monitor/NetworkTopologyUtil.ts +60 -8
  112. package/Utils/NetworkDevice/DeviceReachabilityUtil.ts +262 -0
  113. package/Utils/NetworkSite/SiteStatusRollupUtil.ts +41 -24
  114. package/Utils/Telemetry/CrossSignalScope.ts +75 -4
  115. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js +20 -4
  116. package/build/dist/Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel.js.map +1 -1
  117. package/build/dist/Models/DatabaseModels/NetworkDevice.js +66 -0
  118. package/build/dist/Models/DatabaseModels/NetworkDevice.js.map +1 -1
  119. package/build/dist/Models/DatabaseModels/StatusPage.js +60 -0
  120. package/build/dist/Models/DatabaseModels/StatusPage.js.map +1 -1
  121. package/build/dist/Models/DatabaseModels/StatusPageOidc.js +2 -0
  122. package/build/dist/Models/DatabaseModels/StatusPageOidc.js.map +1 -1
  123. package/build/dist/Models/DatabaseModels/WorkspaceProjectAuthToken.js.map +1 -1
  124. package/build/dist/Server/API/AIChatAPI.js +48 -35
  125. package/build/dist/Server/API/AIChatAPI.js.map +1 -1
  126. package/build/dist/Server/API/CommonAPI.js +59 -0
  127. package/build/dist/Server/API/CommonAPI.js.map +1 -1
  128. package/build/dist/Server/API/MicrosoftTeamsAPI.js +20 -6
  129. package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
  130. package/build/dist/Server/API/SlackAPI.js +13 -10
  131. package/build/dist/Server/API/SlackAPI.js.map +1 -1
  132. package/build/dist/Server/API/StatusPageAPI.js +745 -673
  133. package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
  134. package/build/dist/Server/API/TelemetryAPI.js +34 -3
  135. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  136. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787500000000-AddEnableSearchEngineIndexingToStatusPage.js +23 -0
  137. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787500000000-AddEnableSearchEngineIndexingToStatusPage.js.map +1 -0
  138. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787600000000-AddNetworkDeviceReachabilityColumns.js +34 -0
  139. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1787600000000-AddNetworkDeviceReachabilityColumns.js.map +1 -0
  140. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
  141. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  142. package/build/dist/Server/Middleware/UserAuthorization.js +6 -2
  143. package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
  144. package/build/dist/Server/Services/ApiKeyPermissionService.js +90 -1
  145. package/build/dist/Server/Services/ApiKeyPermissionService.js.map +1 -1
  146. package/build/dist/Server/Services/DatabaseService.js +15 -6
  147. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  148. package/build/dist/Server/Services/LogAggregationService.js +2 -0
  149. package/build/dist/Server/Services/LogAggregationService.js.map +1 -1
  150. package/build/dist/Server/Services/LogService.js +16 -0
  151. package/build/dist/Server/Services/LogService.js.map +1 -1
  152. package/build/dist/Server/Services/NetworkSiteService.js +12 -0
  153. package/build/dist/Server/Services/NetworkSiteService.js.map +1 -1
  154. package/build/dist/Server/Services/SpanService.js +16 -0
  155. package/build/dist/Server/Services/SpanService.js.map +1 -1
  156. package/build/dist/Server/Services/TraceAggregationService.js +2 -0
  157. package/build/dist/Server/Services/TraceAggregationService.js.map +1 -1
  158. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js +137 -164
  159. package/build/dist/Server/Services/WorkspaceNotificationRuleService.js.map +1 -1
  160. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js +9 -0
  161. package/build/dist/Server/Types/AnalyticsDatabase/ModelPermission.js.map +1 -1
  162. package/build/dist/Server/Types/Database/Permissions/AccessControlPermission.js +21 -13
  163. package/build/dist/Server/Types/Database/Permissions/AccessControlPermission.js.map +1 -1
  164. package/build/dist/Server/Utils/APIKey/AccessPermission.js +9 -32
  165. package/build/dist/Server/Utils/APIKey/AccessPermission.js.map +1 -1
  166. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +87 -0
  167. package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
  168. package/build/dist/Server/Utils/LogRedaction.js +449 -0
  169. package/build/dist/Server/Utils/LogRedaction.js.map +1 -0
  170. package/build/dist/Server/Utils/Logger.js +98 -45
  171. package/build/dist/Server/Utils/Logger.js.map +1 -1
  172. package/build/dist/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.js +65 -13
  173. package/build/dist/Server/Utils/Monitor/Criteria/SSLMonitorCriteria.js.map +1 -1
  174. package/build/dist/Server/Utils/Monitor/MonitorResource.js +20 -3
  175. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  176. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js +27 -7
  177. package/build/dist/Server/Utils/Monitor/NetworkInventoryUtil.js.map +1 -1
  178. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCacheStore.js +29 -10
  179. package/build/dist/Server/Utils/SessionReplay/SessionReplayGateCacheStore.js.map +1 -1
  180. package/build/dist/Server/Utils/StartServer.js +10 -7
  181. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  182. package/build/dist/Server/Utils/StatusPageSearchEngineIndexing.js +24 -0
  183. package/build/dist/Server/Utils/StatusPageSearchEngineIndexing.js.map +1 -0
  184. package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js +311 -0
  185. package/build/dist/Server/Utils/Telemetry/ResourceEntityFilter.js.map +1 -0
  186. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +366 -37
  187. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  188. package/build/dist/Types/API/Hostname.js +63 -0
  189. package/build/dist/Types/API/Hostname.js.map +1 -1
  190. package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js +20 -6
  191. package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js.map +1 -1
  192. package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js +20 -6
  193. package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js.map +1 -1
  194. package/build/dist/Types/Database/DatabaseProperty.js +38 -0
  195. package/build/dist/Types/Database/DatabaseProperty.js.map +1 -1
  196. package/build/dist/Types/Database/TableColumn.js +24 -6
  197. package/build/dist/Types/Database/TableColumn.js.map +1 -1
  198. package/build/dist/Types/Events/Recurring.js +13 -1
  199. package/build/dist/Types/Events/Recurring.js.map +1 -1
  200. package/build/dist/Types/Monitor/MonitorStep.js +9 -1
  201. package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
  202. package/build/dist/Types/Monitor/MonitorType.js +330 -31
  203. package/build/dist/Types/Monitor/MonitorType.js.map +1 -1
  204. package/build/dist/Types/StatusPage/SearchEngineIndexing.js +55 -0
  205. package/build/dist/Types/StatusPage/SearchEngineIndexing.js.map +1 -0
  206. package/build/dist/Types/Telemetry/ResourceEntityFacet.js +156 -0
  207. package/build/dist/Types/Telemetry/ResourceEntityFacet.js.map +1 -0
  208. package/build/dist/UI/Components/CardSelect/CardSelect.js +360 -40
  209. package/build/dist/UI/Components/CardSelect/CardSelect.js.map +1 -1
  210. package/build/dist/UI/Components/EmptyState/EmptyState.js +1 -1
  211. package/build/dist/UI/Components/EmptyState/EmptyState.js.map +1 -1
  212. package/build/dist/UI/Components/Footer/Footer.js +7 -4
  213. package/build/dist/UI/Components/Footer/Footer.js.map +1 -1
  214. package/build/dist/UI/Components/Forms/Fields/FormField.js +1 -1
  215. package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
  216. package/build/dist/UI/Components/Loader/PageLoader.js +15 -5
  217. package/build/dist/UI/Components/Loader/PageLoader.js.map +1 -1
  218. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +16 -3
  219. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
  220. package/build/dist/UI/Components/Markdown.tsx/LazyMarkdownViewer.js +13 -1
  221. package/build/dist/UI/Components/Markdown.tsx/LazyMarkdownViewer.js.map +1 -1
  222. package/build/dist/UI/Components/MasterPage/MasterPage.js +10 -2
  223. package/build/dist/UI/Components/MasterPage/MasterPage.js.map +1 -1
  224. package/build/dist/Utils/Monitor/MonitorMetricType.js +13 -1
  225. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  226. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js +34 -7
  227. package/build/dist/Utils/Monitor/NetworkTopologyUtil.js.map +1 -1
  228. package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js +177 -0
  229. package/build/dist/Utils/NetworkDevice/DeviceReachabilityUtil.js.map +1 -0
  230. package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js +23 -27
  231. package/build/dist/Utils/NetworkSite/SiteStatusRollupUtil.js.map +1 -1
  232. package/build/dist/Utils/Telemetry/CrossSignalScope.js +44 -4
  233. package/build/dist/Utils/Telemetry/CrossSignalScope.js.map +1 -1
  234. package/package.json +1 -1
@@ -65,6 +65,14 @@ export interface MonitorTypeProps {
65
65
  description: string;
66
66
  title: string;
67
67
  icon: IconProp;
68
+ /*
69
+ * Words a user is likely to type that do not appear in the title or the
70
+ * description - product names, protocols and synonyms ("k8s", "postgres",
71
+ * "heartbeat", "tls"). The type picker searches these alongside the visible
72
+ * copy, so someone who knows their own vocabulary does not have to learn
73
+ * ours to find the right monitor.
74
+ */
75
+ keywords: Array<string>;
68
76
  }
69
77
 
70
78
  export interface MonitorTypeCategory {
@@ -187,216 +195,498 @@ export class MonitorTypeHelper {
187
195
  monitorType: MonitorType.API,
188
196
  title: "API",
189
197
  description:
190
- "This monitor type lets you monitor any API - GET, POST, PUT, DELETE or more.",
198
+ "Call any HTTP endpoint - GET, POST, PUT, DELETE - and alert on the response.",
191
199
  icon: IconProp.Code,
200
+ keywords: [
201
+ "rest",
202
+ "endpoint",
203
+ "http",
204
+ "https",
205
+ "json",
206
+ "graphql",
207
+ "get",
208
+ "post",
209
+ "put",
210
+ "delete",
211
+ "service",
212
+ ],
192
213
  },
193
214
  {
194
215
  monitorType: MonitorType.Manual,
195
216
  title: "Manual",
196
217
  description:
197
- "This monitor is a static monitor and will not actually monitor anything. It will however help you to integrate OneUptime with external monitoring tools and utilities.",
218
+ "No automatic checks. You set the status yourself, or from an external tool.",
198
219
  icon: IconProp.EmptyCircle,
220
+ keywords: [
221
+ "static",
222
+ "external",
223
+ "integration",
224
+ "placeholder",
225
+ "no check",
226
+ "third party",
227
+ ],
199
228
  },
200
229
  {
201
230
  monitorType: MonitorType.Website,
202
231
  title: "Website",
203
232
  description:
204
- "This monitor type lets you monitor landing pages like home page of your company / blog or more.",
233
+ "Check a page loads and responds - status code, page content, and response time.",
205
234
  icon: IconProp.Globe,
235
+ keywords: [
236
+ "url",
237
+ "http",
238
+ "https",
239
+ "web",
240
+ "webpage",
241
+ "site",
242
+ "landing page",
243
+ "home page",
244
+ "uptime",
245
+ ],
206
246
  },
207
247
  {
208
248
  monitorType: MonitorType.Ping,
209
249
  title: "Ping",
210
- description:
211
- "This monitor type does the basic ping test of an endpoint.",
250
+ description: "ICMP reachability and round trip time for a host.",
212
251
  icon: IconProp.Signal,
252
+ keywords: [
253
+ "icmp",
254
+ "echo",
255
+ "reachable",
256
+ "reachability",
257
+ "latency",
258
+ "rtt",
259
+ "packet loss",
260
+ ],
213
261
  },
214
262
  {
215
263
  monitorType: MonitorType.Kubernetes,
216
264
  title: "Kubernetes",
217
- description:
218
- "This monitor type lets you monitor Kubernetes clusters, workloads, nodes, and pods.",
265
+ description: "Cluster, node, workload, and pod health.",
219
266
  icon: IconProp.Cube,
267
+ keywords: [
268
+ "k8s",
269
+ "cluster",
270
+ "pod",
271
+ "node",
272
+ "workload",
273
+ "deployment",
274
+ "namespace",
275
+ "container",
276
+ "eks",
277
+ "gke",
278
+ "aks",
279
+ "openshift",
280
+ ],
220
281
  },
221
282
  {
222
283
  monitorType: MonitorType.Docker,
223
284
  title: "Docker Container",
224
285
  description:
225
- "This monitor type lets you monitor Docker containers — CPU, memory, network, restarts, and lifecycle events.",
286
+ "Container CPU, memory, network, restarts, and lifecycle events.",
226
287
  icon: IconProp.Cube,
288
+ keywords: [
289
+ "container",
290
+ "dockerd",
291
+ "image",
292
+ "restart",
293
+ "compose",
294
+ "oci",
295
+ ],
227
296
  },
228
297
  {
229
298
  monitorType: MonitorType.Host,
230
299
  title: "Host",
231
300
  description:
232
- "This monitor type lets you monitor OpenTelemetry-instrumented hosts and servers (the Hosts product) — CPU, memory, disk, network, load average, and process count via the OneUptime Infrastructure Agent. It is the telemetry-metric counterpart to the agent-push Server / VM Monitor.",
301
+ "CPU, memory, disk, network, and load for hosts running the Infrastructure Agent.",
233
302
  icon: IconProp.Server,
303
+ keywords: [
304
+ "server",
305
+ "vm",
306
+ "machine",
307
+ "cpu",
308
+ "memory",
309
+ "ram",
310
+ "disk",
311
+ "load average",
312
+ "otel",
313
+ "opentelemetry",
314
+ "agent",
315
+ "linux",
316
+ "infrastructure",
317
+ ],
234
318
  },
235
319
  {
236
320
  monitorType: MonitorType.Podman,
237
321
  title: "Podman Container",
238
322
  description:
239
- "This monitor type lets you monitor Podman containers — CPU, memory, network, restarts, and lifecycle events.",
323
+ "Container CPU, memory, network, restarts, and lifecycle events.",
240
324
  icon: IconProp.Podman,
325
+ keywords: [
326
+ "container",
327
+ "rootless",
328
+ "redhat",
329
+ "oci",
330
+ "quadlet",
331
+ "buildah",
332
+ ],
241
333
  },
242
334
  {
243
335
  monitorType: MonitorType.DockerSwarm,
244
336
  title: "Docker Swarm",
245
337
  description:
246
- "This monitor type lets you monitor Docker Swarm clusters — per-task container CPU, memory, network, process count, and uptime across the cluster's services and nodes.",
338
+ "Per task container health across the cluster's services and nodes.",
247
339
  icon: IconProp.DockerSwarm,
340
+ keywords: [
341
+ "swarm",
342
+ "cluster",
343
+ "service",
344
+ "task",
345
+ "orchestration",
346
+ "stack",
347
+ "docker",
348
+ ],
248
349
  },
249
350
  {
250
351
  monitorType: MonitorType.Proxmox,
251
352
  title: "Proxmox",
252
353
  description:
253
- "This monitor type lets you monitor Proxmox VE clusters — node availability, VM and container (guest) health, CPU, memory, storage, and HA state.",
354
+ "Node availability, VM and container guests, storage, and HA state.",
254
355
  icon: IconProp.Proxmox,
356
+ keywords: [
357
+ "pve",
358
+ "hypervisor",
359
+ "vm",
360
+ "virtual machine",
361
+ "lxc",
362
+ "guest",
363
+ "virtualization",
364
+ "ha",
365
+ "cluster",
366
+ ],
255
367
  },
256
368
  {
257
369
  monitorType: MonitorType.Ceph,
258
370
  title: "Ceph",
259
371
  description:
260
- "This monitor type lets you monitor Ceph storage clusters — cluster health, monitor quorum, OSD availability, pool capacity, and placement group states.",
372
+ "Cluster health, monitor quorum, OSD availability, and pool capacity.",
261
373
  icon: IconProp.Ceph,
374
+ keywords: [
375
+ "storage",
376
+ "osd",
377
+ "placement group",
378
+ "pool",
379
+ "quorum",
380
+ "rados",
381
+ "cluster",
382
+ "object storage",
383
+ ],
262
384
  },
263
385
  {
264
386
  monitorType: MonitorType.IoTDevice,
265
387
  title: "IoT Device",
266
388
  description:
267
- "This monitor type lets you monitor IoT device fleets — device availability, battery level, connectivity and signal strength, temperature, and system health across your devices and gateways.",
389
+ "Device fleet availability, battery, connectivity, and signal strength.",
268
390
  icon: IconProp.IoT,
391
+ keywords: [
392
+ "iot",
393
+ "device",
394
+ "fleet",
395
+ "sensor",
396
+ "battery",
397
+ "gateway",
398
+ "embedded",
399
+ "signal",
400
+ ],
269
401
  },
270
402
  {
271
403
  monitorType: MonitorType.IP,
272
404
  title: "IP",
273
- description:
274
- "This monitor type lets you monitor any IPv4 or IPv6 addresses.",
405
+ description: "Reachability of any IPv4 or IPv6 address.",
275
406
  icon: IconProp.AltGlobe,
407
+ keywords: ["ipv4", "ipv6", "address", "reachability", "host"],
276
408
  },
277
409
  {
278
410
  monitorType: MonitorType.IncomingRequest,
279
411
  title: "Incoming Request",
280
412
  description:
281
- "This monitor type lets you ping OneUptime from any external device or service with a custom payload.",
413
+ "Have something call OneUptime - heartbeats, cron jobs, and webhooks.",
282
414
  icon: IconProp.Webhook,
415
+ keywords: [
416
+ "webhook",
417
+ "heartbeat",
418
+ "push",
419
+ "cron",
420
+ "inbound",
421
+ "dead man switch",
422
+ "alertmanager",
423
+ "curl",
424
+ ],
283
425
  },
284
426
  {
285
427
  monitorType: MonitorType.IncomingEmail,
286
428
  title: "Incoming Email",
287
429
  description:
288
- "This monitor type triggers alerts when emails are received at a unique email address with matching criteria.",
430
+ "Alert when email arrives at a unique address and matches your criteria.",
289
431
  icon: IconProp.Email,
432
+ keywords: ["email", "mail", "inbox", "smtp", "imap", "mailbox"],
290
433
  },
291
434
  {
292
435
  monitorType: MonitorType.Port,
293
436
  title: "Port",
294
- description: "This monitor type lets you monitor any TCP or UDP port.",
437
+ description: "Whether a TCP or UDP port accepts connections.",
295
438
  icon: IconProp.Terminal,
439
+ keywords: ["tcp", "udp", "socket", "telnet", "open port", "connection"],
296
440
  },
297
441
  {
298
442
  monitorType: MonitorType.Server,
299
443
  title: "Server / VM",
300
444
  description:
301
- "This monitor type lets you monitor any server, VM, or any machine.",
445
+ "Any server, VM, or machine, reporting in through the OneUptime agent.",
302
446
  icon: IconProp.Cube,
447
+ keywords: [
448
+ "vm",
449
+ "machine",
450
+ "agent",
451
+ "linux",
452
+ "windows",
453
+ "cpu",
454
+ "memory",
455
+ "disk",
456
+ ],
303
457
  },
304
458
  {
305
459
  monitorType: MonitorType.SSLCertificate,
306
460
  title: "SSL Certificate",
307
- description:
308
- "This monitor type lets you monitor SSL certificates of any domain.",
461
+ description: "Certificate validity and expiry for a domain.",
309
462
  icon: IconProp.ShieldCheck,
463
+ keywords: [
464
+ "tls",
465
+ "ssl",
466
+ "cert",
467
+ "certificate",
468
+ "https",
469
+ "expiry",
470
+ "expiration",
471
+ "x509",
472
+ "chain",
473
+ "handshake",
474
+ ],
310
475
  },
311
476
  {
312
477
  monitorType: MonitorType.SQLQuery,
313
478
  title: "SQL Query",
314
479
  description:
315
- "This monitor type runs a read-only SQL query on a schedule against a database (PostgreSQL, MySQL, or Microsoft SQL Server) and alerts on the result — row count, a scalar value, execution time, or query errors. Requires a probe with network access to your database.",
480
+ "Run a read only query on a schedule and alert on rows, values, or errors.",
316
481
  icon: IconProp.Database,
482
+ keywords: [
483
+ "database",
484
+ "db",
485
+ "postgres",
486
+ "postgresql",
487
+ "mysql",
488
+ "mariadb",
489
+ "mssql",
490
+ "sql server",
491
+ "query",
492
+ "row count",
493
+ ],
317
494
  },
318
495
  {
319
496
  monitorType: MonitorType.SyntheticMonitor,
320
497
  title: "Synthetic Monitor",
321
498
  description:
322
- "This monitor type lets you monitor your web application UI.",
499
+ "Drive your web app in a real browser and alert when the journey fails.",
323
500
  icon: IconProp.Window,
501
+ keywords: [
502
+ "browser",
503
+ "playwright",
504
+ "e2e",
505
+ "user journey",
506
+ "ui",
507
+ "click",
508
+ "flow",
509
+ "transaction",
510
+ "headless",
511
+ ],
324
512
  },
325
513
  {
326
514
  monitorType: MonitorType.CustomJavaScriptCode,
327
515
  title: "Custom JavaScript Code",
328
516
  description:
329
- "This monitor type lets you run custom JavaScript code on a schedule.",
517
+ "Run your own JavaScript on a schedule and alert on what it returns.",
330
518
  icon: IconProp.Code,
519
+ keywords: [
520
+ "js",
521
+ "javascript",
522
+ "script",
523
+ "code",
524
+ "custom",
525
+ "node",
526
+ "programmatic",
527
+ ],
331
528
  },
332
529
  {
333
530
  monitorType: MonitorType.Logs,
334
531
  title: "Logs",
335
- description: "This monitor type lets you monitor logs from any source.",
532
+ description:
533
+ "Alert on log volume or matching log content from any source.",
336
534
  icon: IconProp.Logs,
535
+ keywords: [
536
+ "log",
537
+ "otel",
538
+ "opentelemetry",
539
+ "log query",
540
+ "error log",
541
+ "search logs",
542
+ ],
337
543
  },
338
544
  {
339
545
  monitorType: MonitorType.Exceptions,
340
546
  title: "Exceptions",
341
- description:
342
- "This monitor type lets you monitor exceptions and error groups from any source.",
547
+ description: "Alert on exceptions and error groups from any source.",
343
548
  icon: IconProp.Bug,
549
+ keywords: [
550
+ "exception",
551
+ "error",
552
+ "crash",
553
+ "stack trace",
554
+ "bug",
555
+ "error group",
556
+ ],
344
557
  },
345
558
  {
346
559
  monitorType: MonitorType.Traces,
347
560
  title: "Traces",
348
- description:
349
- "This monitor type lets you monitor traces from any source.",
561
+ description: "Alert on span latency and error rate from any source.",
350
562
  icon: IconProp.Waterfall,
563
+ keywords: [
564
+ "trace",
565
+ "span",
566
+ "otel",
567
+ "opentelemetry",
568
+ "distributed tracing",
569
+ "apm",
570
+ "latency",
571
+ ],
351
572
  },
352
573
  {
353
574
  monitorType: MonitorType.Metrics,
354
575
  title: "Metrics",
355
- description:
356
- "This monitor type lets you monitor metrics from any source.",
576
+ description: "Alert on any metric you ingest.",
357
577
  icon: IconProp.Heartbeat,
578
+ keywords: [
579
+ "metric",
580
+ "otel",
581
+ "opentelemetry",
582
+ "gauge",
583
+ "counter",
584
+ "histogram",
585
+ "timeseries",
586
+ "prometheus",
587
+ ],
358
588
  },
359
589
  {
360
590
  monitorType: MonitorType.Profiles,
361
591
  title: "Profiles",
362
- description:
363
- "This monitor type lets you monitor continuous profiling data from any source.",
592
+ description: "Alert on continuous profiling data from any source.",
364
593
  icon: IconProp.Fire,
594
+ keywords: [
595
+ "profiling",
596
+ "cpu profile",
597
+ "flamegraph",
598
+ "pprof",
599
+ "continuous profiling",
600
+ ],
365
601
  },
366
602
  {
367
603
  monitorType: MonitorType.NetworkDevice,
368
604
  title: "Network Device",
369
605
  description:
370
- "This monitor type alerts on a registered Network Device (switch, router, firewall, or access point) — availability, interface status, bandwidth, health OIDs, and traps. The device itself is polled by its assigned probe; the monitor chooses what to alert on.",
606
+ "Alert on a registered switch, router, firewall, or access point.",
371
607
  icon: IconProp.Signal,
608
+ keywords: [
609
+ "snmp",
610
+ "switch",
611
+ "router",
612
+ "firewall",
613
+ "access point",
614
+ "interface",
615
+ "oid",
616
+ "trap",
617
+ "bandwidth",
618
+ ],
372
619
  },
373
620
  {
374
621
  monitorType: MonitorType.DNS,
375
622
  title: "DNS",
376
- description:
377
- "This monitor type lets you monitor DNS resolution for your domains, verify record values, and check DNSSEC validity.",
623
+ description: "Resolution and record values for your domains.",
378
624
  icon: IconProp.GlobeAlt,
625
+ keywords: [
626
+ "resolution",
627
+ "resolve",
628
+ "record",
629
+ "cname",
630
+ "mx",
631
+ "txt",
632
+ "ns",
633
+ "srv",
634
+ "resolver",
635
+ "nslookup",
636
+ "dig",
637
+ ],
379
638
  },
380
639
  {
381
640
  monitorType: MonitorType.DNSSEC,
382
641
  title: "DNSSEC",
383
642
  description:
384
- "This monitor type performs full DNSSEC validation DNSKEY, DS at the parent zone, RRSIG validity windows, AD-flag/SERVFAIL behavior across public resolvers, and primary/secondary nameserver consistency.",
643
+ "Full DNSSEC validation - DNSKEY, DS, RRSIG, and resolver behaviour.",
385
644
  icon: IconProp.Key,
645
+ keywords: [
646
+ "dnskey",
647
+ "ds record",
648
+ "rrsig",
649
+ "signing",
650
+ "validation",
651
+ "secure dns",
652
+ "chain of trust",
653
+ ],
386
654
  },
387
655
  {
388
656
  monitorType: MonitorType.Domain,
389
657
  title: "Domain",
390
658
  description:
391
- "This monitor type lets you monitor domain registration health expiry dates, registrar info, nameserver delegation, and WHOIS status.",
659
+ "Registration health - expiry, registrar, nameservers, and WHOIS status.",
392
660
  icon: IconProp.Globe,
661
+ keywords: [
662
+ "whois",
663
+ "registrar",
664
+ "registration",
665
+ "expiry",
666
+ "expiration",
667
+ "nameserver",
668
+ "delegation",
669
+ "tld",
670
+ ],
393
671
  },
394
672
  {
395
673
  monitorType: MonitorType.ExternalStatusPage,
396
674
  title: "External Status Page",
397
675
  description:
398
- "This monitor type lets you monitor third-party status pages (e.g. AWS, GCP, Azure, GitHub, Cloudflare) and alert when their services degrade.",
676
+ "Watch a third party status page - AWS, GCP, Azure, GitHub, Cloudflare.",
399
677
  icon: IconProp.ExternalLink,
678
+ keywords: [
679
+ "third party",
680
+ "vendor",
681
+ "upstream",
682
+ "dependency",
683
+ "aws",
684
+ "gcp",
685
+ "azure",
686
+ "github",
687
+ "cloudflare",
688
+ "statuspage",
689
+ ],
400
690
  },
401
691
  ];
402
692
 
@@ -433,6 +723,21 @@ export class MonitorTypeHelper {
433
723
  return monitorTypeProps[0].title;
434
724
  }
435
725
 
726
+ public static getKeywords(monitorType: MonitorType): Array<string> {
727
+ const monitorTypeProps: Array<MonitorTypeProps> =
728
+ this.getAllMonitorTypeProps().filter((item: MonitorTypeProps) => {
729
+ return item.monitorType === monitorType;
730
+ });
731
+
732
+ if (!monitorTypeProps[0]) {
733
+ throw new BadDataException(
734
+ `${monitorType} does not have monitorType props`,
735
+ );
736
+ }
737
+
738
+ return monitorTypeProps[0].keywords;
739
+ }
740
+
436
741
  /*
437
742
  * Monitor types the probe executes on a schedule via MonitorProbe rows.
438
743
  *
@@ -4,7 +4,40 @@
4
4
  * probe cannot assign a "may be absent" value into a bare optional property.
5
5
  */
6
6
  export default interface SslMonitorResponse {
7
+ /*
8
+ * Whether the certificate chain passed strict TLS validation (the check
9
+ * a browser performs). This is the ONE field that answers "is this
10
+ * certificate trustworthy", and it is recorded explicitly rather than
11
+ * inferred.
12
+ *
13
+ * It exists because isSelfSigned used to be the only signal that
14
+ * validation had failed, which forced every distinct failure - expired,
15
+ * hostname mismatch, untrusted CA, incomplete chain - to be reported as
16
+ * "self signed". Criteria that asked "is this certificate valid" then had
17
+ * to reconstruct the verdict from !isSelfSigned, and a monitor watching a
18
+ * host with a wrong-hostname certificate read as healthy.
19
+ */
20
+ isValidCertificate?: boolean | undefined;
21
+
22
+ /*
23
+ * Why strict validation failed, straight from Node's TLS stack:
24
+ * certificateValidationErrorCode is the stable machine-readable code
25
+ * ("CERT_HAS_EXPIRED", "ERR_TLS_CERT_ALTNAME_INVALID", ...) that criteria
26
+ * and tests key off, and certificateValidationError is the human-readable
27
+ * message shown to whoever gets paged. Both are empty when the
28
+ * certificate is valid.
29
+ */
30
+ certificateValidationError?: string | undefined;
31
+ certificateValidationErrorCode?: string | undefined;
32
+
33
+ /*
34
+ * True ONLY for a genuinely self-signed chain, i.e. Node reported
35
+ * DEPTH_ZERO_SELF_SIGNED_CERT / SELF_SIGNED_CERT_IN_CHAIN, or the leaf's
36
+ * issuer equals its subject. Any other validation failure leaves this
37
+ * false and is described by certificateValidationErrorCode instead.
38
+ */
7
39
  isSelfSigned?: boolean | undefined;
40
+
8
41
  createdAt?: Date | undefined;
9
42
  expiresAt?: Date | undefined;
10
43
  commonName?: string | undefined;
@@ -13,7 +46,17 @@ export default interface SslMonitorResponse {
13
46
  locality?: string | undefined;
14
47
  state?: string | undefined;
15
48
  country?: string | undefined;
49
+
50
+ // Who signed the certificate. Without it the product cannot name the CA.
51
+ issuer?: string | undefined;
52
+
16
53
  serialNumber?: string | undefined;
17
54
  fingerprint?: string | undefined;
18
55
  fingerprint256?: string | undefined;
56
+
57
+ /*
58
+ * How long the successful TLS handshake took. Recorded so SSL monitors
59
+ * produce a ResponseTime metric like every other probe monitor type.
60
+ */
61
+ responseTimeInMs?: number | undefined;
19
62
  }