@oneuptime/common 12.0.28 → 12.0.30

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 (367) hide show
  1. package/Models/DatabaseModels/DashboardDomain.ts +43 -0
  2. package/Models/DatabaseModels/Index.ts +11 -0
  3. package/Models/DatabaseModels/MonitorTemplate.ts +15 -3
  4. package/Models/DatabaseModels/OnCallDutyPolicySchedule.ts +43 -0
  5. package/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.ts +662 -0
  6. package/Models/DatabaseModels/ProjectOnCallCalendarFeed.ts +584 -0
  7. package/Models/DatabaseModels/StatusPageDomain.ts +43 -0
  8. package/Models/DatabaseModels/UserOnCallCalendarFeed.ts +546 -0
  9. package/Models/DatabaseModels/UserOnCallShiftReminder.ts +231 -0
  10. package/Models/DatabaseModels/UserOnCallShiftReminderLog.ts +331 -0
  11. package/Server/API/DashboardDomainAPI.ts +74 -0
  12. package/Server/API/MicrosoftTeamsAPI.ts +81 -180
  13. package/Server/API/OnCallCalendarAPI.ts +2194 -0
  14. package/Server/API/StatusPageDomainAPI.ts +74 -0
  15. package/Server/EnvironmentConfig.ts +138 -0
  16. package/Server/Infrastructure/OnCallCalendarFeedCache.ts +1050 -0
  17. package/Server/Infrastructure/Postgres/SchemaMigrations/1790200000000-AllowNullMonitorNameOnMonitorTemplate.ts +43 -0
  18. package/Server/Infrastructure/Postgres/SchemaMigrations/1790300000000-AddCertificateReissueRequestedAtToDomains.ts +40 -0
  19. package/Server/Infrastructure/Postgres/SchemaMigrations/1790400000000-AddOnCallCalendarFeeds.ts +253 -0
  20. package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +6 -0
  21. package/Server/Middleware/OnCallCalendarFeedRateLimit.ts +487 -0
  22. package/Server/Middleware/ProjectAuthorization.ts +6 -1
  23. package/Server/Services/DashboardDomainService.ts +131 -0
  24. package/Server/Services/Index.ts +12 -0
  25. package/Server/Services/LogPipelineProcessorService.ts +88 -0
  26. package/Server/Services/MonitorTemplateService.ts +70 -11
  27. package/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.ts +32 -0
  28. package/Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.ts +260 -0
  29. package/Server/Services/OnCallDutyPolicyScheduleLayerService.ts +70 -3
  30. package/Server/Services/OnCallDutyPolicyScheduleLayerUserService.ts +138 -3
  31. package/Server/Services/OnCallDutyPolicyScheduleService.ts +1465 -134
  32. package/Server/Services/OnCallDutyPolicyUserOverrideService.ts +167 -31
  33. package/Server/Services/ProjectOnCallCalendarFeedService.ts +192 -0
  34. package/Server/Services/StatusPageDomainService.ts +163 -3
  35. package/Server/Services/StatusPagePrivateUserSessionService.ts +197 -56
  36. package/Server/Services/TeamMemberService.ts +489 -1
  37. package/Server/Services/TeamService.ts +50 -0
  38. package/Server/Services/UserNotificationSettingService.ts +44 -1
  39. package/Server/Services/UserOnCallCalendarFeedService.ts +159 -0
  40. package/Server/Services/UserOnCallShiftReminderLogService.ts +151 -0
  41. package/Server/Services/UserOnCallShiftReminderService.ts +112 -0
  42. package/Server/Types/Domain.ts +17 -0
  43. package/Server/Utils/APIKey/AccessPermission.ts +24 -0
  44. package/Server/Utils/Greenlock/Greenlock.ts +156 -58
  45. package/Server/Utils/LogPipelineProcessorValidation.ts +112 -0
  46. package/Server/Utils/OnCall/CalendarFeedToken.ts +241 -0
  47. package/Server/Utils/OnCall/OnCallCalendarFeedRenderer.ts +1488 -0
  48. package/Server/Utils/OnCall/OnCallCalendarFeedUrls.ts +230 -0
  49. package/Server/Utils/OnCall/OnCallShiftChangeListeners.ts +227 -0
  50. package/Server/Utils/OnCall/OnCallShiftMaterializer.ts +1127 -0
  51. package/Server/Utils/OnCall/OnCallShiftReminderListener.ts +174 -0
  52. package/Server/Utils/OnCall/OnCallShiftReminderRunner.ts +2584 -0
  53. package/Server/Utils/Response.ts +134 -0
  54. package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.ts +1094 -45
  55. package/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.ts +153 -17
  56. package/Server/Utils/StartServer.ts +10 -0
  57. package/Server/Utils/Telemetry/AppMetrics.ts +51 -0
  58. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.ts +23 -11
  59. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.ts +0 -170
  60. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Authorization.ts +158 -0
  61. package/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.ts +23 -11
  62. package/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.ts +35 -13
  63. package/Tests/App/Dashboard/MonitorTemplateColumnAndFacet.test.tsx +505 -0
  64. package/Tests/App/Dashboard/OnCallCalendarFeedLinks.test.tsx +229 -0
  65. package/Tests/App/Dashboard/OnCallCalendarFeedPlanGate.test.tsx +489 -0
  66. package/Tests/App/Dashboard/OnCallCalendarFeedSideMenus.test.tsx +149 -0
  67. package/Tests/App/Dashboard/OnCallCalendarFeedUtil.test.ts +855 -0
  68. package/Tests/App/Dashboard/OnCallPersonalCalendarFeed.test.tsx +1209 -0
  69. package/Tests/App/Dashboard/OnCallSharedCalendarFeedCard.test.tsx +1019 -0
  70. package/Tests/App/Dashboard/OnCallShiftRemindersAndUpcomingShifts.test.tsx +655 -0
  71. package/Tests/App/Dashboard/UserSettingsSetupChecklistModel.test.ts +73 -0
  72. package/Tests/App/StatusPage/StatusPageLoginCodeBootstrap.test.ts +106 -0
  73. package/Tests/App/StatusPage/StatusPageLoginCodeUtil.test.ts +84 -0
  74. package/Tests/App/StatusPage/StatusPageRedirectSafety.test.ts +119 -0
  75. package/Tests/Models/MonitorTemplateMonitorNameColumn.test.ts +258 -0
  76. package/Tests/Models/OnCallCalendarFeedModels.test.ts +642 -0
  77. package/Tests/Models/OnCallDutyPolicyScheduleCalendarFeed.test.ts +288 -0
  78. package/Tests/Models/OnCallDutyPolicyScheduleShiftConfigVersion.test.ts +88 -0
  79. package/Tests/Models/UserOnCallShiftReminderModels.test.ts +368 -0
  80. package/Tests/Server/API/CustomDomainReissueSslAPI.test.ts +469 -0
  81. package/Tests/Server/API/Helpers.ts +8 -0
  82. package/Tests/Server/API/MicrosoftTeamsBotMessagesEndpoint.test.ts +729 -0
  83. package/Tests/Server/API/MicrosoftTeamsBotTestEndpoint.test.ts +26 -0
  84. package/Tests/Server/API/MicrosoftTeamsLegacyWebhookRemoval.test.ts +402 -0
  85. package/Tests/Server/API/OnCallCalendarAPI.test.ts +4461 -0
  86. package/Tests/Server/EnvironmentConfigOnCallCalendarFeed.test.ts +357 -0
  87. package/Tests/Server/Infrastructure/OnCallCalendarFeedCache.test.ts +1589 -0
  88. package/Tests/Server/Infrastructure/Postgres/AddOnCallCalendarFeedsMigration.test.ts +369 -0
  89. package/Tests/Server/Middleware/OnCallCalendarFeedRateLimit.test.ts +1365 -0
  90. package/Tests/Server/Middleware/ProjectAuthorizationApiKeyMiddleware.test.ts +4 -0
  91. package/Tests/Server/Services/AddCertificateReissueRequestedAtToDomainsMigration.test.ts +287 -0
  92. package/Tests/Server/Services/CustomDomainCertificateReissue.test.ts +477 -0
  93. package/Tests/Server/Services/FeedRetentionConsistency.test.ts +70 -0
  94. package/Tests/Server/Services/LogPipelineProcessorSaveValidation.test.ts +249 -0
  95. package/Tests/Server/Services/MonitorTemplateServiceBulkSync.test.ts +549 -0
  96. package/Tests/Server/Services/MonitorTemplateServiceNetworkDeviceSync.test.ts +16 -3
  97. package/Tests/Server/Services/NetworkDeviceAutoImportRuleEngineService.test.ts +57 -0
  98. package/Tests/Server/Services/OnCallCalendarFeedServices.test.ts +1103 -0
  99. package/Tests/Server/Services/OnCallDutyPolicyScheduleResolver.test.ts +1037 -0
  100. package/Tests/Server/Services/OnCallShiftConfigPropagation.test.ts +1270 -0
  101. package/Tests/Server/Services/SecurityEventLastErrorColumnWidth.test.ts +151 -15
  102. package/Tests/Server/Services/StatusPagePrivateUserSessionService.test.ts +587 -0
  103. package/Tests/Server/Services/TeamDeleteMemberCleanup.test.ts +156 -0
  104. package/Tests/Server/Services/TeamMemberOnCallCleanup.test.ts +755 -0
  105. package/Tests/Server/Services/UserNotificationSettingShiftReminderDefaults.test.ts +267 -0
  106. package/Tests/Server/Services/UserOnCallShiftReminderServices.test.ts +583 -0
  107. package/Tests/Server/Types/Database/Permissions/ApiKeyFileAccess.test.ts +286 -0
  108. package/Tests/Server/Types/Database/Permissions/MonitorTemplateColumnAccess.test.ts +328 -0
  109. package/Tests/Server/Types/Database/Permissions/OnCallCalendarFeedPermissions.test.ts +254 -0
  110. package/Tests/Server/Types/Database/QueryHelperFindWithSameTextAndIsNull.test.ts +83 -0
  111. package/Tests/Server/Utils/AI/SRE/ConfidenceSignal.test.ts +377 -0
  112. package/Tests/Server/Utils/APIKey/AccessPermission.test.ts +16 -1
  113. package/Tests/Server/Utils/Greenlock/CertificateRenewalSchedule.test.ts +250 -0
  114. package/Tests/Server/Utils/LogPipelineProcessorValidation.test.ts +198 -0
  115. package/Tests/Server/Utils/OnCall/CalendarFeedToken.test.ts +467 -0
  116. package/Tests/Server/Utils/OnCall/OnCallCalendarFeedRenderer.test.ts +2142 -0
  117. package/Tests/Server/Utils/OnCall/OnCallCalendarFeedUrls.test.ts +278 -0
  118. package/Tests/Server/Utils/OnCall/OnCallResolverTestHarness.ts +440 -0
  119. package/Tests/Server/Utils/OnCall/OnCallShiftChangeListeners.test.ts +314 -0
  120. package/Tests/Server/Utils/OnCall/OnCallShiftMaterializer.test.ts +1502 -0
  121. package/Tests/Server/Utils/OnCall/OnCallShiftReminderListener.test.ts +491 -0
  122. package/Tests/Server/Utils/OnCall/OnCallShiftReminderRunner.test.ts +3088 -0
  123. package/Tests/Server/Utils/OnCall/OnCallShiftReminderTestHarness.ts +910 -0
  124. package/Tests/Server/Utils/ResponseSendCalendarResponse.test.ts +561 -0
  125. package/Tests/Server/Utils/SecurityEvent/ConnectorErrorMessage.test.ts +48 -9
  126. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsAuth.test.ts +726 -0
  127. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsClient.test.ts +74 -11
  128. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsErrorHandling.test.ts +1107 -0
  129. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPoller.test.ts +20 -3
  130. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerFailureTaxonomy.test.ts +51 -11
  131. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsPollerHardening.test.ts +1246 -0
  132. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsRequestContract.test.ts +961 -0
  133. package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsResponseParsing.test.ts +653 -0
  134. package/Tests/Server/Utils/StartServerEncryptionSecretWarning.test.ts +64 -0
  135. package/Tests/Server/Utils/Telemetry/AppMetrics.test.ts +29 -0
  136. package/Tests/Server/Utils/Workspace/MicrosoftTeamsActionAuthorization.test.ts +880 -0
  137. package/Tests/Types/API/HTTPResponse.test.ts +175 -0
  138. package/Tests/Types/API/Route.test.ts +36 -4
  139. package/Tests/Types/Calendar/ICalendar.test.ts +488 -0
  140. package/Tests/Types/Database/DatabaseProperty.test.ts +171 -0
  141. package/Tests/Types/DateLocalShortDateTimeString.test.ts +518 -0
  142. package/Tests/Types/DateLocalTimeString.test.ts +259 -0
  143. package/Tests/Types/DateUserPrefers12HourFormat.test.ts +316 -0
  144. package/Tests/Types/NotificationSetting/NotificationSettingEventType.test.ts +53 -0
  145. package/Tests/Types/OnCallDutyPolicy/CalendarFeedTestFixtures.ts +310 -0
  146. package/Tests/Types/OnCallDutyPolicy/CalendarFeedWindow.test.ts +205 -0
  147. package/Tests/Types/OnCallDutyPolicy/LayerUtilLayerMetaAndIterationCap.test.ts +458 -0
  148. package/Tests/Types/OnCallDutyPolicy/MaterializedShift.test.ts +197 -0
  149. package/Tests/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.test.ts +1986 -0
  150. package/Tests/Types/OnCallDutyPolicy/ScheduleShiftUtilGroupKey.test.ts +678 -0
  151. package/Tests/Types/OnCallDutyPolicy/ShiftSeamUtil.test.ts +417 -0
  152. package/Tests/UI/Components/LogsHistogram.test.tsx +41 -2
  153. package/Tests/UI/Components/LogsViewerEmptyStateTimeRange.test.tsx +212 -0
  154. package/Tests/UI/Components/TelemetryChartClockFormat.test.tsx +359 -0
  155. package/Tests/UI/Components/TimeRangePickerClockFormat.test.tsx +422 -0
  156. package/Tests/UI/Components/TimeRangePickerDropdown.test.tsx +146 -8
  157. package/Tests/UI/MicrosoftTeams/MicrosoftTeamsMessagingEndpointGuidance.test.tsx +520 -0
  158. package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +10 -0
  159. package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +2 -0
  160. package/Tests/UI/Utils/Navigation.test.ts +82 -0
  161. package/Tests/Utils/Array.test.ts +100 -0
  162. package/Tests/Utils/CertificateReissue.test.ts +225 -0
  163. package/Tests/Utils/Grok/Grok.test.ts +492 -0
  164. package/Tests/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.test.ts +181 -13
  165. package/Types/API/Route.ts +20 -5
  166. package/Types/Calendar/ICalendar.ts +442 -0
  167. package/Types/Date.ts +143 -13
  168. package/Types/Email/EmailTemplateType.ts +2 -0
  169. package/Types/NotificationSetting/NotificationSettingEventType.ts +4 -0
  170. package/Types/OnCallDutyPolicy/CalendarFeedWindow.ts +140 -0
  171. package/Types/OnCallDutyPolicy/Layer.ts +190 -35
  172. package/Types/OnCallDutyPolicy/MaterializedShift.ts +274 -0
  173. package/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.ts +1415 -0
  174. package/Types/OnCallDutyPolicy/ScheduleShiftUtil.ts +159 -4
  175. package/Types/OnCallDutyPolicy/ShiftSeamUtil.ts +106 -0
  176. package/Types/Rum/SessionReplay.ts +62 -1
  177. package/UI/Components/Date/TimeRangePickerDropdown.tsx +9 -5
  178. package/UI/Components/LogsViewer/LogsViewer.tsx +12 -7
  179. package/UI/Components/LogsViewer/components/HistogramTooltip.tsx +18 -17
  180. package/UI/Components/LogsViewer/components/LogsAnalyticsView.tsx +21 -28
  181. package/UI/Components/LogsViewer/components/LogsHistogram.tsx +2 -4
  182. package/UI/Components/TelemetryViewer/components/TelemetryHistogram.tsx +2 -4
  183. package/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.tsx +17 -16
  184. package/UI/Utils/Navigation.ts +42 -0
  185. package/Utils/Array.ts +37 -0
  186. package/Utils/CertificateReissue.ts +128 -0
  187. package/Utils/Grok/Grok.ts +461 -0
  188. package/Utils/Grok/GrokPatterns.ts +118 -0
  189. package/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.ts +58 -6
  190. package/build/dist/Models/DatabaseModels/DashboardDomain.js +44 -0
  191. package/build/dist/Models/DatabaseModels/DashboardDomain.js.map +1 -1
  192. package/build/dist/Models/DatabaseModels/Index.js +11 -0
  193. package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
  194. package/build/dist/Models/DatabaseModels/MonitorTemplate.js +17 -4
  195. package/build/dist/Models/DatabaseModels/MonitorTemplate.js.map +1 -1
  196. package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js +44 -0
  197. package/build/dist/Models/DatabaseModels/OnCallDutyPolicySchedule.js.map +1 -1
  198. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.js +699 -0
  199. package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.js.map +1 -0
  200. package/build/dist/Models/DatabaseModels/ProjectOnCallCalendarFeed.js +620 -0
  201. package/build/dist/Models/DatabaseModels/ProjectOnCallCalendarFeed.js.map +1 -0
  202. package/build/dist/Models/DatabaseModels/StatusPageDomain.js +44 -0
  203. package/build/dist/Models/DatabaseModels/StatusPageDomain.js.map +1 -1
  204. package/build/dist/Models/DatabaseModels/UserOnCallCalendarFeed.js +585 -0
  205. package/build/dist/Models/DatabaseModels/UserOnCallCalendarFeed.js.map +1 -0
  206. package/build/dist/Models/DatabaseModels/UserOnCallShiftReminder.js +247 -0
  207. package/build/dist/Models/DatabaseModels/UserOnCallShiftReminder.js.map +1 -0
  208. package/build/dist/Models/DatabaseModels/UserOnCallShiftReminderLog.js +355 -0
  209. package/build/dist/Models/DatabaseModels/UserOnCallShiftReminderLog.js.map +1 -0
  210. package/build/dist/Server/API/DashboardDomainAPI.js +43 -1
  211. package/build/dist/Server/API/DashboardDomainAPI.js.map +1 -1
  212. package/build/dist/Server/API/MicrosoftTeamsAPI.js +74 -118
  213. package/build/dist/Server/API/MicrosoftTeamsAPI.js.map +1 -1
  214. package/build/dist/Server/API/OnCallCalendarAPI.js +1371 -0
  215. package/build/dist/Server/API/OnCallCalendarAPI.js.map +1 -0
  216. package/build/dist/Server/API/StatusPageDomainAPI.js +43 -1
  217. package/build/dist/Server/API/StatusPageDomainAPI.js.map +1 -1
  218. package/build/dist/Server/EnvironmentConfig.js +102 -0
  219. package/build/dist/Server/EnvironmentConfig.js.map +1 -1
  220. package/build/dist/Server/Infrastructure/OnCallCalendarFeedCache.js +663 -0
  221. package/build/dist/Server/Infrastructure/OnCallCalendarFeedCache.js.map +1 -0
  222. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790200000000-AllowNullMonitorNameOnMonitorTemplate.js +34 -0
  223. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790200000000-AllowNullMonitorNameOnMonitorTemplate.js.map +1 -0
  224. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790300000000-AddCertificateReissueRequestedAtToDomains.js +28 -0
  225. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790300000000-AddCertificateReissueRequestedAtToDomains.js.map +1 -0
  226. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790400000000-AddOnCallCalendarFeeds.js +103 -0
  227. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1790400000000-AddOnCallCalendarFeeds.js.map +1 -0
  228. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +6 -0
  229. package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
  230. package/build/dist/Server/Middleware/OnCallCalendarFeedRateLimit.js +342 -0
  231. package/build/dist/Server/Middleware/OnCallCalendarFeedRateLimit.js.map +1 -0
  232. package/build/dist/Server/Middleware/ProjectAuthorization.js +6 -1
  233. package/build/dist/Server/Middleware/ProjectAuthorization.js.map +1 -1
  234. package/build/dist/Server/Services/DashboardDomainService.js +104 -0
  235. package/build/dist/Server/Services/DashboardDomainService.js.map +1 -1
  236. package/build/dist/Server/Services/Index.js +12 -0
  237. package/build/dist/Server/Services/Index.js.map +1 -1
  238. package/build/dist/Server/Services/LogPipelineProcessorService.js +65 -0
  239. package/build/dist/Server/Services/LogPipelineProcessorService.js.map +1 -1
  240. package/build/dist/Server/Services/MonitorTemplateService.js +57 -11
  241. package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
  242. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js +20 -0
  243. package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js.map +1 -1
  244. package/build/dist/Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.js +219 -0
  245. package/build/dist/Server/Services/OnCallDutyPolicyScheduleCalendarFeedService.js.map +1 -0
  246. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerService.js +47 -3
  247. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerService.js.map +1 -1
  248. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerUserService.js +112 -3
  249. package/build/dist/Server/Services/OnCallDutyPolicyScheduleLayerUserService.js.map +1 -1
  250. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js +955 -9
  251. package/build/dist/Server/Services/OnCallDutyPolicyScheduleService.js.map +1 -1
  252. package/build/dist/Server/Services/OnCallDutyPolicyUserOverrideService.js +93 -6
  253. package/build/dist/Server/Services/OnCallDutyPolicyUserOverrideService.js.map +1 -1
  254. package/build/dist/Server/Services/ProjectOnCallCalendarFeedService.js +157 -0
  255. package/build/dist/Server/Services/ProjectOnCallCalendarFeedService.js.map +1 -0
  256. package/build/dist/Server/Services/StatusPageDomainService.js +132 -3
  257. package/build/dist/Server/Services/StatusPageDomainService.js.map +1 -1
  258. package/build/dist/Server/Services/StatusPagePrivateUserSessionService.js +112 -32
  259. package/build/dist/Server/Services/StatusPagePrivateUserSessionService.js.map +1 -1
  260. package/build/dist/Server/Services/TeamMemberService.js +396 -1
  261. package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
  262. package/build/dist/Server/Services/TeamService.js +43 -0
  263. package/build/dist/Server/Services/TeamService.js.map +1 -1
  264. package/build/dist/Server/Services/UserNotificationSettingService.js +26 -1
  265. package/build/dist/Server/Services/UserNotificationSettingService.js.map +1 -1
  266. package/build/dist/Server/Services/UserOnCallCalendarFeedService.js +140 -0
  267. package/build/dist/Server/Services/UserOnCallCalendarFeedService.js.map +1 -0
  268. package/build/dist/Server/Services/UserOnCallShiftReminderLogService.js +116 -0
  269. package/build/dist/Server/Services/UserOnCallShiftReminderLogService.js.map +1 -0
  270. package/build/dist/Server/Services/UserOnCallShiftReminderService.js +92 -0
  271. package/build/dist/Server/Services/UserOnCallShiftReminderService.js.map +1 -0
  272. package/build/dist/Server/Types/Domain.js +16 -0
  273. package/build/dist/Server/Types/Domain.js.map +1 -1
  274. package/build/dist/Server/Utils/APIKey/AccessPermission.js +24 -0
  275. package/build/dist/Server/Utils/APIKey/AccessPermission.js.map +1 -1
  276. package/build/dist/Server/Utils/Greenlock/Greenlock.js +110 -35
  277. package/build/dist/Server/Utils/Greenlock/Greenlock.js.map +1 -1
  278. package/build/dist/Server/Utils/LogPipelineProcessorValidation.js +77 -0
  279. package/build/dist/Server/Utils/LogPipelineProcessorValidation.js.map +1 -0
  280. package/build/dist/Server/Utils/OnCall/CalendarFeedToken.js +161 -0
  281. package/build/dist/Server/Utils/OnCall/CalendarFeedToken.js.map +1 -0
  282. package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedRenderer.js +983 -0
  283. package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedRenderer.js.map +1 -0
  284. package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedUrls.js +155 -0
  285. package/build/dist/Server/Utils/OnCall/OnCallCalendarFeedUrls.js.map +1 -0
  286. package/build/dist/Server/Utils/OnCall/OnCallShiftChangeListeners.js +145 -0
  287. package/build/dist/Server/Utils/OnCall/OnCallShiftChangeListeners.js.map +1 -0
  288. package/build/dist/Server/Utils/OnCall/OnCallShiftMaterializer.js +752 -0
  289. package/build/dist/Server/Utils/OnCall/OnCallShiftMaterializer.js.map +1 -0
  290. package/build/dist/Server/Utils/OnCall/OnCallShiftReminderListener.js +92 -0
  291. package/build/dist/Server/Utils/OnCall/OnCallShiftReminderListener.js.map +1 -0
  292. package/build/dist/Server/Utils/OnCall/OnCallShiftReminderRunner.js +1786 -0
  293. package/build/dist/Server/Utils/OnCall/OnCallShiftReminderRunner.js.map +1 -0
  294. package/build/dist/Server/Utils/Response.js +97 -0
  295. package/build/dist/Server/Utils/Response.js.map +1 -1
  296. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.js +777 -36
  297. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsClient.js.map +1 -1
  298. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js +108 -17
  299. package/build/dist/Server/Utils/SecurityEvent/GoogleSecOps/GoogleSecOpsPoller.js.map +1 -1
  300. package/build/dist/Server/Utils/StartServer.js +9 -1
  301. package/build/dist/Server/Utils/StartServer.js.map +1 -1
  302. package/build/dist/Server/Utils/Telemetry/AppMetrics.js +41 -0
  303. package/build/dist/Server/Utils/Telemetry/AppMetrics.js.map +1 -1
  304. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.js +17 -6
  305. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Alert.js.map +1 -1
  306. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.js +0 -159
  307. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Auth.js.map +1 -1
  308. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Authorization.js +128 -0
  309. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Authorization.js.map +1 -0
  310. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js +17 -6
  311. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/Actions/Incident.js.map +1 -1
  312. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js +25 -13
  313. package/build/dist/Server/Utils/Workspace/MicrosoftTeams/MicrosoftTeams.js.map +1 -1
  314. package/build/dist/Types/API/Route.js +16 -5
  315. package/build/dist/Types/API/Route.js.map +1 -1
  316. package/build/dist/Types/Calendar/ICalendar.js +290 -0
  317. package/build/dist/Types/Calendar/ICalendar.js.map +1 -0
  318. package/build/dist/Types/Date.js +115 -13
  319. package/build/dist/Types/Date.js.map +1 -1
  320. package/build/dist/Types/Email/EmailTemplateType.js +2 -0
  321. package/build/dist/Types/Email/EmailTemplateType.js.map +1 -1
  322. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js +3 -0
  323. package/build/dist/Types/NotificationSetting/NotificationSettingEventType.js.map +1 -1
  324. package/build/dist/Types/OnCallDutyPolicy/CalendarFeedWindow.js +97 -0
  325. package/build/dist/Types/OnCallDutyPolicy/CalendarFeedWindow.js.map +1 -0
  326. package/build/dist/Types/OnCallDutyPolicy/Layer.js +113 -19
  327. package/build/dist/Types/OnCallDutyPolicy/Layer.js.map +1 -1
  328. package/build/dist/Types/OnCallDutyPolicy/MaterializedShift.js +134 -0
  329. package/build/dist/Types/OnCallDutyPolicy/MaterializedShift.js.map +1 -0
  330. package/build/dist/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.js +800 -0
  331. package/build/dist/Types/OnCallDutyPolicy/OnCallCalendarFeedUtil.js.map +1 -0
  332. package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js +97 -3
  333. package/build/dist/Types/OnCallDutyPolicy/ScheduleShiftUtil.js.map +1 -1
  334. package/build/dist/Types/OnCallDutyPolicy/ShiftSeamUtil.js +77 -0
  335. package/build/dist/Types/OnCallDutyPolicy/ShiftSeamUtil.js.map +1 -0
  336. package/build/dist/Types/Rum/SessionReplay.js +38 -0
  337. package/build/dist/Types/Rum/SessionReplay.js.map +1 -1
  338. package/build/dist/UI/Components/Date/TimeRangePickerDropdown.js +9 -5
  339. package/build/dist/UI/Components/Date/TimeRangePickerDropdown.js.map +1 -1
  340. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +12 -7
  341. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  342. package/build/dist/UI/Components/LogsViewer/components/HistogramTooltip.js +15 -14
  343. package/build/dist/UI/Components/LogsViewer/components/HistogramTooltip.js.map +1 -1
  344. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js +17 -22
  345. package/build/dist/UI/Components/LogsViewer/components/LogsAnalyticsView.js.map +1 -1
  346. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js +2 -4
  347. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js.map +1 -1
  348. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js +2 -4
  349. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js.map +1 -1
  350. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.js +15 -14
  351. package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogramTooltip.js.map +1 -1
  352. package/build/dist/UI/Utils/Navigation.js +30 -0
  353. package/build/dist/UI/Utils/Navigation.js.map +1 -1
  354. package/build/dist/Utils/Array.js +25 -0
  355. package/build/dist/Utils/Array.js.map +1 -1
  356. package/build/dist/Utils/CertificateReissue.js +97 -0
  357. package/build/dist/Utils/CertificateReissue.js.map +1 -0
  358. package/build/dist/Utils/Grok/Grok.js +324 -0
  359. package/build/dist/Utils/Grok/Grok.js.map +1 -0
  360. package/build/dist/Utils/Grok/GrokPatterns.js +112 -0
  361. package/build/dist/Utils/Grok/GrokPatterns.js.map +1 -0
  362. package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js +63 -3
  363. package/build/dist/Utils/Monitor/NetworkDeviceMonitorTemplateUtil.js.map +1 -1
  364. package/package.json +1 -1
  365. package/UI/Utils/JsonWebToken.ts +0 -14
  366. package/build/dist/UI/Utils/JsonWebToken.js +0 -10
  367. package/build/dist/UI/Utils/JsonWebToken.js.map +0 -1
@@ -0,0 +1,342 @@
1
+ import Redis from "../Infrastructure/Redis";
2
+ import logger, { getLogAttributesFromRequest } from "../Utils/Logger";
3
+ import resolveTrustedClientIp from "../Utils/ClientIp";
4
+ import Response from "../Utils/Response";
5
+ import { OnCallCalendarFeedRateLimitPerIpPerWindow, OnCallCalendarFeedRateLimitPerTokenPerWindow, OnCallCalendarFeedRateLimitWindowSeconds, } from "../EnvironmentConfig";
6
+ import TooManyRequestsException from "../../Types/Exception/TooManyRequestsException";
7
+ import { createHash } from "crypto";
8
+ /*
9
+ * Rate limiting for the public on-call calendar feed routes:
10
+ *
11
+ * GET /api/on-call-calendar/user/:token/shifts.ics
12
+ * GET /api/on-call-calendar/schedule/:token/schedule.ics
13
+ * GET /api/on-call-calendar/project/:token/project.ics
14
+ *
15
+ * These are polled by calendar clients (Google, Outlook, Apple) with no session
16
+ * and no API key -- the token in the path is the whole credential -- so there
17
+ * is nothing else in front of them that bounds request volume. Rendering a
18
+ * feed expands every layer of every candidate schedule across up to 180 days,
19
+ * which is exactly the kind of work an unbounded anonymous route must not be
20
+ * allowed to drive in a loop.
21
+ *
22
+ * A sibling of PublicDashboardRateLimit rather than a reuse of it: that class
23
+ * derives its key from dashboard ids and domains, and the one thing that must
24
+ * be different here is that the key is derived from a SECRET. It is never used
25
+ * raw -- not in a Redis key, not in a log line -- see resolveTokenKey.
26
+ */
27
+ /*
28
+ * Every request consumes TWO counters, and either one can reject it:
29
+ *
30
+ * - the token counter, keyed on a hash of the token + client address. This is
31
+ * the budget one subscribed calendar gets. Default 60 per minute: Apple
32
+ * Calendar's most eager setting is one poll every five minutes, so a real
33
+ * client never comes near it, and a whole office of clients behind one NAT
34
+ * all polling the same shared team link still has headroom.
35
+ *
36
+ * - the address counter, keyed on client address alone. Without it the token
37
+ * counter is trivially bypassed by rotating tokens: every guess lands in a
38
+ * fresh bucket and still costs a Postgres lookup even though it is a 404.
39
+ * Default 3000 per minute is the ceiling that survives rotation.
40
+ *
41
+ * Both are incremented on every request including a rejected one, so a client
42
+ * that keeps hammering keeps its window pinned rather than being handed a
43
+ * fresh allowance for free.
44
+ */
45
+ export var OnCallCalendarFeedRateLimitScope;
46
+ (function (OnCallCalendarFeedRateLimitScope) {
47
+ OnCallCalendarFeedRateLimitScope["Token"] = "token";
48
+ OnCallCalendarFeedRateLimitScope["Ip"] = "ip";
49
+ })(OnCallCalendarFeedRateLimitScope || (OnCallCalendarFeedRateLimitScope = {}));
50
+ export var OnCallCalendarFeedRateLimitOutcome;
51
+ (function (OnCallCalendarFeedRateLimitOutcome) {
52
+ OnCallCalendarFeedRateLimitOutcome["Allowed"] = "allowed";
53
+ OnCallCalendarFeedRateLimitOutcome["RateLimited"] = "rate-limited";
54
+ /* Redis is unreachable, so no limit can be honoured either way. */
55
+ OnCallCalendarFeedRateLimitOutcome["CounterUnavailable"] = "counter-unavailable";
56
+ })(OnCallCalendarFeedRateLimitOutcome || (OnCallCalendarFeedRateLimitOutcome = {}));
57
+ /*
58
+ * The token shape the feed routes accept: 32 random bytes as base64url, which
59
+ * is always exactly 43 characters. Anything else is not a token that could
60
+ * exist and shares one small "invalid" bucket (see resolveTokenKey).
61
+ */
62
+ export const ON_CALL_CALENDAR_FEED_TOKEN_PATTERN = /^[A-Za-z0-9_-]{43}$/;
63
+ const KEY_PREFIX = "oncal:rl:";
64
+ /*
65
+ * Counter keys outlive their window by one full window, so a request landing
66
+ * on a boundary cannot read a key that was reclaimed mid-window.
67
+ */
68
+ const TTL_MULTIPLIER = 2;
69
+ /* Bounds a Redis key built from attacker-supplied path segments. */
70
+ const MAX_KEY_SEGMENT_LENGTH = 64;
71
+ /*
72
+ * How much of the token hash goes into the Redis key. 16 hex characters is 64
73
+ * bits -- far more than enough to keep distinct tokens in distinct buckets --
74
+ * and short enough that a KEYS/SCAN listing stays readable.
75
+ */
76
+ const TOKEN_KEY_HASH_LENGTH = 16;
77
+ /* How often the "counter unavailable" condition may be logged. */
78
+ const COUNTER_UNAVAILABLE_LOG_INTERVAL_MS = 60 * 1000;
79
+ class OnCallCalendarFeedRateLimit {
80
+ /* The limits in force, for tests and for operators' diagnostics. */
81
+ static getConfig() {
82
+ return Object.assign({}, OnCallCalendarFeedRateLimit.config);
83
+ }
84
+ /*
85
+ * The client address to bill this request to.
86
+ *
87
+ * Delegates to the shared ClientIp helper, which reads X-Forwarded-For from
88
+ * the trusted (right-hand) end under the instance-wide TRUSTED_PROXY_HOPS
89
+ * setting. Deliberately NOT Express.getClientIp: that takes the LEFTMOST
90
+ * entry, which any caller can set by sending its own X-Forwarded-For header,
91
+ * and for a rate limiter that is fatal -- a fresh spoofed value per request
92
+ * means a fresh bucket per request and no limit at all.
93
+ */
94
+ static resolveClientIp(req) {
95
+ const clientIp = resolveTrustedClientIp(req);
96
+ if (clientIp) {
97
+ return OnCallCalendarFeedRateLimit.sanitizeKeySegment(clientIp);
98
+ }
99
+ /*
100
+ * No address at all. Everything in this state shares one bucket, which is
101
+ * the conservative direction -- an unidentifiable caller should not get its
102
+ * own private allowance.
103
+ */
104
+ return "unknown";
105
+ }
106
+ /*
107
+ * The token this request presents, as a key segment that is NOT the token.
108
+ *
109
+ * The token is a bearer credential. Redis keys show up in KEYS/SCAN output,
110
+ * in monitoring dashboards and in Redis's own slow log, so a raw token in a
111
+ * key is a token written down somewhere it was never meant to be. The key
112
+ * therefore carries a truncated SHA-256 of it: enough bits to keep distinct
113
+ * tokens apart, no way back to the token.
114
+ *
115
+ * The hash is unkeyed on purpose. This is a rate-limit bucket name, not the
116
+ * stored lookup hash the feed row is found by (that one is a full SHA-256 and
117
+ * lives in Postgres); 64 bits of a preimage-resistant hash of 256 bits of
118
+ * randomness is not a useful oracle for anything.
119
+ *
120
+ * Anything that is not shaped like a token collapses into one shared
121
+ * "invalid" bucket. It cannot correspond to a real feed, so a small shared
122
+ * allowance between all such requests is the right grouping, and it bounds
123
+ * Redis memory against a caller feeding junk path segments.
124
+ */
125
+ static resolveTokenKey(req) {
126
+ var _a;
127
+ const raw = (_a = req.params) === null || _a === void 0 ? void 0 : _a["token"];
128
+ if (typeof raw !== "string") {
129
+ return "none";
130
+ }
131
+ const value = raw.trim();
132
+ if (!value) {
133
+ return "none";
134
+ }
135
+ if (!ON_CALL_CALENDAR_FEED_TOKEN_PATTERN.test(value)) {
136
+ return "invalid";
137
+ }
138
+ return OnCallCalendarFeedRateLimit.hashToken(value);
139
+ }
140
+ /*
141
+ * Bucket segment for a token the caller already validated. Exposed so a
142
+ * route that has the token in hand (or a test) can build the same key the
143
+ * middleware does.
144
+ */
145
+ static hashToken(token) {
146
+ return `t:${createHash("sha256")
147
+ .update(token, "utf8")
148
+ .digest("hex")
149
+ .slice(0, TOKEN_KEY_HASH_LENGTH)}`;
150
+ }
151
+ static sanitizeKeySegment(value) {
152
+ return (value
153
+ .slice(0, MAX_KEY_SEGMENT_LENGTH)
154
+ /*
155
+ * Redis keys are binary safe, but a predictable charset keeps
156
+ * operational tooling (KEYS/SCAN patterns, dashboards) sane.
157
+ */
158
+ .replace(/[^a-zA-Z0-9._:%\-[\]]/g, "_"));
159
+ }
160
+ /*
161
+ * Increment both counters for this request and decide.
162
+ *
163
+ * Both INCRs go out in one pipeline so the common path costs a single round
164
+ * trip; the EXPIRE follow-ups only happen on the request that created a key.
165
+ */
166
+ static async consume(data) {
167
+ const client = Redis.getClient();
168
+ if (!client || !Redis.isConnected()) {
169
+ return {
170
+ outcome: OnCallCalendarFeedRateLimitOutcome.CounterUnavailable,
171
+ };
172
+ }
173
+ const config = OnCallCalendarFeedRateLimit.config;
174
+ const windowMs = config.windowSeconds * 1000;
175
+ const windowIndex = Math.floor(Date.now() / windowMs);
176
+ const tokenCounterKey = `${KEY_PREFIX}t:${data.tokenKey}:${data.clientIp}:${windowIndex}`;
177
+ const ipCounterKey = `${KEY_PREFIX}i:${data.clientIp}:${windowIndex}`;
178
+ try {
179
+ const pipelineResults = (await client
180
+ .pipeline()
181
+ .incr(tokenCounterKey)
182
+ .incr(ipCounterKey)
183
+ .exec());
184
+ if (!pipelineResults || pipelineResults.length < 2) {
185
+ throw new Error("Rate limit pipeline returned no result");
186
+ }
187
+ const tokenCount = OnCallCalendarFeedRateLimit.readCounterResult(pipelineResults[0]);
188
+ const ipCount = OnCallCalendarFeedRateLimit.readCounterResult(pipelineResults[1]);
189
+ /*
190
+ * Set the expiry only on the write that created the key. Re-issuing
191
+ * EXPIRE on every increment would slide the window forward for as long
192
+ * as the load continues, so the counter would never reset and a client
193
+ * that tripped the limit once could never recover.
194
+ */
195
+ const ttlSeconds = config.windowSeconds * TTL_MULTIPLIER;
196
+ const keysToExpire = [];
197
+ if (tokenCount === 1) {
198
+ keysToExpire.push(tokenCounterKey);
199
+ }
200
+ if (ipCount === 1) {
201
+ keysToExpire.push(ipCounterKey);
202
+ }
203
+ if (keysToExpire.length > 0) {
204
+ const expirePipeline = client.pipeline();
205
+ for (const key of keysToExpire) {
206
+ expirePipeline.expire(key, ttlSeconds);
207
+ }
208
+ await expirePipeline.exec();
209
+ }
210
+ const retryAfterSeconds = OnCallCalendarFeedRateLimit.getSecondsUntilWindowEnd(config.windowSeconds);
211
+ /*
212
+ * Token counter is reported first when both are over: it is the more
213
+ * specific of the two and the more useful thing to see in a log line.
214
+ */
215
+ if (tokenCount > config.perTokenLimit) {
216
+ return {
217
+ outcome: OnCallCalendarFeedRateLimitOutcome.RateLimited,
218
+ retryAfterSeconds,
219
+ scope: OnCallCalendarFeedRateLimitScope.Token,
220
+ isFirstRejectionInWindow: tokenCount === config.perTokenLimit + 1,
221
+ };
222
+ }
223
+ if (ipCount > config.perIpLimit) {
224
+ return {
225
+ outcome: OnCallCalendarFeedRateLimitOutcome.RateLimited,
226
+ retryAfterSeconds,
227
+ scope: OnCallCalendarFeedRateLimitScope.Ip,
228
+ isFirstRejectionInWindow: ipCount === config.perIpLimit + 1,
229
+ };
230
+ }
231
+ return { outcome: OnCallCalendarFeedRateLimitOutcome.Allowed };
232
+ }
233
+ catch (err) {
234
+ /*
235
+ * Throttled: whatever broke Redis is unlikely to break it for one
236
+ * request only, and a per-request log line buries the incident it is
237
+ * reporting. The log names neither the token nor its hash.
238
+ */
239
+ if (OnCallCalendarFeedRateLimit.shouldLogCounterUnavailable()) {
240
+ logger.warn(`OnCallCalendarFeedRateLimit: counter failed for a request from ${data.clientIp}`);
241
+ logger.warn(err);
242
+ }
243
+ return {
244
+ outcome: OnCallCalendarFeedRateLimitOutcome.CounterUnavailable,
245
+ };
246
+ }
247
+ }
248
+ static readCounterResult(result) {
249
+ if (!result) {
250
+ throw new Error("Rate limit counter returned no result");
251
+ }
252
+ const [error, value] = result;
253
+ if (error) {
254
+ throw error;
255
+ }
256
+ if (typeof value !== "number") {
257
+ throw new Error("Rate limit counter returned a non-numeric value");
258
+ }
259
+ return value;
260
+ }
261
+ /*
262
+ * Remaining seconds in the current fixed window, so every rejected caller
263
+ * is told to come back when the window actually rolls rather than all
264
+ * backing off by the same constant and re-colliding.
265
+ */
266
+ static getSecondsUntilWindowEnd(windowSeconds) {
267
+ const windowMs = windowSeconds * 1000;
268
+ const msIntoWindow = Date.now() % windowMs;
269
+ return Math.max(1, Math.ceil((windowMs - msIntoWindow) / 1000));
270
+ }
271
+ /*
272
+ * Express middleware. Mounted on each feed route (it reads `:token` from
273
+ * req.params, so it must sit on the route, not on the router) ahead of the
274
+ * token lookup, so a flood is refused before it costs a Postgres read, let
275
+ * alone a render.
276
+ *
277
+ * FAILS OPEN. When Redis is unreachable every request is let through and
278
+ * the condition is logged (throttled). The limiter is load control: the
279
+ * token is still checked by the route behind it, and blacking out every
280
+ * subscribed calendar over a Redis blip -- clients that get a 503 keep the
281
+ * copy they have, but one that gets it repeatedly may drop the calendar --
282
+ * is a worse outcome than an unbounded window for the duration of the blip.
283
+ */
284
+ static getMiddleware() {
285
+ return async (req, res, next) => {
286
+ const tokenKey = OnCallCalendarFeedRateLimit.resolveTokenKey(req);
287
+ const clientIp = OnCallCalendarFeedRateLimit.resolveClientIp(req);
288
+ const decision = await OnCallCalendarFeedRateLimit.consume({ tokenKey, clientIp });
289
+ if (decision.outcome === OnCallCalendarFeedRateLimitOutcome.RateLimited) {
290
+ if (decision.retryAfterSeconds) {
291
+ OnCallCalendarFeedRateLimit.setRetryAfterHeader(res, decision.retryAfterSeconds);
292
+ }
293
+ /*
294
+ * The crossing request only, and never the token or its hash: an
295
+ * operator needs to know an address is hammering the feeds, not which
296
+ * feed. The route's own attributes (requestId, no token) are enough to
297
+ * correlate.
298
+ */
299
+ if (decision.isFirstRejectionInWindow) {
300
+ logger.warn(`OnCallCalendarFeedRateLimit: rejected calendar feed request from ${clientIp} (${decision.scope} limit)`);
301
+ }
302
+ return Response.sendErrorResponse(req, res, new TooManyRequestsException("Too many requests. Please try again later."));
303
+ }
304
+ if (decision.outcome ===
305
+ OnCallCalendarFeedRateLimitOutcome.CounterUnavailable) {
306
+ if (OnCallCalendarFeedRateLimit.shouldLogCounterUnavailable()) {
307
+ logger.warn("OnCallCalendarFeedRateLimit: rate limit counter unavailable, allowing calendar feed requests unthrottled");
308
+ logger.warn(getLogAttributesFromRequest(req));
309
+ }
310
+ }
311
+ return next();
312
+ };
313
+ }
314
+ /*
315
+ * A Redis outage means EVERY request takes the unavailable path, so an
316
+ * unguarded log line there is one per request for as long as the outage
317
+ * lasts. One line per interval is enough to make the condition visible.
318
+ */
319
+ static shouldLogCounterUnavailable() {
320
+ const now = Date.now();
321
+ if (now - OnCallCalendarFeedRateLimit.counterUnavailableLastLoggedAt <
322
+ COUNTER_UNAVAILABLE_LOG_INTERVAL_MS) {
323
+ return false;
324
+ }
325
+ OnCallCalendarFeedRateLimit.counterUnavailableLastLoggedAt = now;
326
+ return true;
327
+ }
328
+ static setRetryAfterHeader(res, retryAfterSeconds) {
329
+ const setHeader = res["setHeader"];
330
+ if (typeof setHeader === "function") {
331
+ setHeader.call(res, "Retry-After", String(retryAfterSeconds));
332
+ }
333
+ }
334
+ }
335
+ OnCallCalendarFeedRateLimit.config = {
336
+ windowSeconds: OnCallCalendarFeedRateLimitWindowSeconds,
337
+ perTokenLimit: OnCallCalendarFeedRateLimitPerTokenPerWindow,
338
+ perIpLimit: OnCallCalendarFeedRateLimitPerIpPerWindow,
339
+ };
340
+ OnCallCalendarFeedRateLimit.counterUnavailableLastLoggedAt = 0;
341
+ export default OnCallCalendarFeedRateLimit;
342
+ //# sourceMappingURL=OnCallCalendarFeedRateLimit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnCallCalendarFeedRateLimit.js","sourceRoot":"","sources":["../../../../Server/Middleware/OnCallCalendarFeedRateLimit.ts"],"names":[],"mappings":"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"}
@@ -164,7 +164,12 @@ export default class ProjectMiddleware {
164
164
  req.tenantId = tenantId;
165
165
  req.userType = UserType.API;
166
166
  /*
167
- * TODO: Add API key permissions.
167
+ * The two halves of an API key's authority. The global half is the
168
+ * fixed marker set every key carries (see APIKeyAccessPermission); the
169
+ * per-key grants an administrator actually configured are read from
170
+ * ApiKeyPermission just below. That second half is what the long-lived
171
+ * "TODO: Add API key permissions" here was asking for, and it is done -
172
+ * the TODO outlived the work.
168
173
  */
169
174
  req.userGlobalAccessPermission =
170
175
  await APIKeyAccessPermission.getDefaultApiGlobalPermission(tenantId);
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectAuthorization.js","sourceRoot":"","sources":["../../../../Server/Middleware/ProjectAuthorization.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ProjectAuthorization.js","sourceRoot":"","sources":["../../../../Server/Middleware/ProjectAuthorization.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,aAAa,MAAM,2BAA2B,CAAC;AACtD,OAAO,mBAAmB,MAAM,iCAAiC,CAAC;AAClE,OAAO,WAAW,MAAM,yBAAyB,CAAC;AAQlD,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAE5C,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAG5C,OAAO,sBAAsB,MAAM,kCAAkC,CAAC;AACtE,OAAO,WAAW,MAAM,gCAAgC,CAAC;AACzD,OAAO,QAAQ,MAAM,6BAA6B,CAAC;AAEnD,MAAM,CAAC,OAAO,OAAO,iBAAiB;IAEtB,AAAP,MAAM,CAAC,YAAY,CAAC,GAAmB;QAC5C,IAAI,SAAS,GAAoB,IAAI,CAAC;QACtC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAC1C,SAAS,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QACpD,CAAC;aAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YAChD,SAAS,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9C,SAAS,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAW,CAAC,CAAC;QAC5D,CAAC;aAAM,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAClD,yDAAyD;YACzD,SAAS,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAW,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;YACnD,yDAAyD;YACzD,SAAS,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,CAAW,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YAC1C,SAAS,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,SAAmB,CAAC,CAAC;QACzD,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;;;OAQG;IACK,MAAM,CAAC,kBAAkB,CAAC,GAAmB;;QACnD,MAAM,SAAS,GACb,MAAA,GAAG,CAAC,OAAO,0CAAG,QAAQ,CAAC,CAAC;QAE1B,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACpE,CAAC;IAGa,AAAP,MAAM,CAAC,SAAS,CAAC,GAAmB;QACzC,MAAM,SAAS,GAAkB,iBAAiB,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;QAE3E,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAW,SAAS,CAAC,IAAI,EAAE,CAAC;QAExC;;;;;;WAMG;QACH,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IAEW,AAAP,MAAM,CAAC,SAAS,CAAC,GAAmB;QACzC,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IAC5D,CAAC;IAGa,AAAP,MAAM,CAAC,YAAY,CAAC,GAAmB;QAC5C,OAAO,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;OAMG;IAEiB,AAAb,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAgB;QACjD;;;;;WAKG;QACH,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC;YAC7C,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,qBAAqB,GACzB,MAAM,mBAAmB,CAAC,SAAS,CAAC;YAClC,KAAK,EAAE;gBACL,GAAG,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE;gBAC1C,qBAAqB,EAAE,IAAI;gBAC3B,YAAY,EAAE,MAAM;aACrB;YACD,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;aACb;YACD,MAAM,EAAE;gBACN,GAAG,EAAE,IAAI;aACV;SACF,CAAC,CAAC;QAEL,OAAO,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACxC,CAAC;IAGmB,AAAb,MAAM,CAAC,KAAK,CAAC,mCAAmC,CACrD,GAAmB,EACnB,IAAqB,EACrB,IAAkB;QAElB,IAAI,CAAC;YACH,IAAI,QAAQ,GAAoB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAoB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAEpD,IAAI,QAAQ,EAAE,CAAC;gBACZ,GAAwB,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAE9C,8DAA8D;gBAC9D,QAAQ,CAAC,0BAA0B,CAAC;oBAClC,SAAS,EAAE,QAAQ,CAAC,QAAQ,EAAE;iBAC/B,CAAC,CAAC;YACL,CAAC;YAED,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ;;;;;;mBAMG;gBACH,IAAI,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;oBACrC,MAAM,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;gBAChD,CAAC;gBAED,MAAM,IAAI,gBAAgB,CACxB,gGAAgG,CACjG,CAAC;YACJ,CAAC;YAED;;;eAGG;YACH,MAAM,SAAS,GACb,MAAM,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAEzC,IAAI,SAAS,EAAE,CAAC;gBACd,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC;gBAE9B,GAAwB,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBAC7C,GAAwB,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC;gBAElD;;;;;;;mBAOG;gBACF,GAAwB,CAAC,0BAA0B;oBAClD,MAAM,sBAAsB,CAAC,6BAA6B,CAAC,QAAQ,CAAC,CAAC;gBAEvE,MAAM,0BAA0B,GAC9B,MAAM,sBAAsB,CAAC,4BAA4B,CACvD,QAAQ,EACR,SAAS,CAAC,EAAE,CACb,CAAC;gBAEJ,IAAI,0BAA0B,EAAE,CAAC;oBAC9B,GAAwB,CAAC,0BAA0B,GAAG,EAAE,CAAC;oBAEvD,GAAwB;yBACtB,0BACJ,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,0BAA0B,CAAC;oBAEpD,OAAO,IAAI,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;YAED,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,oBAAoB;gBACpB,MAAM,cAAc,GAClB,MAAM,iBAAiB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBAEjD,IAAI,cAAc,EAAE,CAAC;oBAClB,GAAwB,CAAC,QAAQ,GAAG,QAAQ,CAAC,WAAW,CAAC;oBAE1D,wBAAwB;oBAExB,MAAM,IAAI,GAAgB,MAAM,WAAW,CAAC,SAAS,CAAC;wBACpD,KAAK,EAAE;4BACL,aAAa,EAAE,IAAI;yBACpB;wBACD,MAAM,EAAE;4BACN,GAAG,EAAE,IAAI;4BACT,KAAK,EAAE,IAAI;4BACX,IAAI,EAAE,IAAI;yBACX;wBACD,KAAK,EAAE;4BACL,MAAM,EAAE,IAAI;yBACb;qBACF,CAAC,CAAC;oBAEH,IAAI,CAAC,IAAI,EAAE,CAAC;wBACV,MAAM,IAAI,gBAAgB,CACxB,qFAAqF,CACtF,CAAC;oBACJ,CAAC;oBAEA,GAAwB,CAAC,iBAAiB,GAAG;wBAC5C,MAAM,EAAE,IAAI,CAAC,EAAG;wBAChB,aAAa,EAAE,IAAI;wBACnB,KAAK,EAAE,IAAI,CAAC,KAAM;wBAClB,IAAI,EAAE,IAAI,CAAC,IAAK;wBAChB,aAAa,EAAE,IAAI;qBACpB,CAAC;oBAEF,OAAO,IAAI,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;YAED,IAAI,MAAM,EAAE,CAAC;gBACX,6DAA6D;gBAC7D,MAAM,IAAI,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;YAChD,CAAC;YAED,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,gBAAgB,CACxB,4CAA4C,CAC7C,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,gBAAgB,CAAC,+BAA+B,CAAC,CAAC;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;CACF;AAxQe;IADb,WAAW,EAAE;;;;2CAoBb;AAuBa;IADb,WAAW,EAAE;;;;wCAsBb;AAmBa;IADb,WAAW,EAAE;;;;wCAGb;AAGa;IADb,WAAW,EAAE;;;;2CAGb;AAUmB;IADnB,WAAW,EAAE;;qCAC6B,QAAQ;;6CA2BlD;AAGmB;IADnB,WAAW,EAAE;;;;kEAuIb"}
@@ -20,6 +20,10 @@ import Telemetry from "../Utils/Telemetry";
20
20
  import CaptureSpan from "../Utils/Telemetry/CaptureSpan";
21
21
  import { DashboardCNameRecord } from "../EnvironmentConfig";
22
22
  import Domain from "../Types/Domain";
23
+ import OneUptimeDate from "../../Types/Date";
24
+ import CertificateReissueUtil from "../../Utils/CertificateReissue";
25
+ import TooManyRequestsException from "../../Types/Exception/TooManyRequestsException";
26
+ import QueryHelper from "../Types/Database/QueryHelper";
23
27
  const DASHBOARD_DOMAIN_EGRESS_LABEL = "Dashboard domain";
24
28
  export class Service extends DatabaseService {
25
29
  constructor() {
@@ -174,6 +178,100 @@ export class Service extends DatabaseService {
174
178
  },
175
179
  });
176
180
  }
181
+ /*
182
+ * Reissue this domain's Let's Encrypt certificate because a customer asked
183
+ * for it, rather than because it is close to expiring.
184
+ *
185
+ * Every order spends from a Let's Encrypt account that is shared by the
186
+ * whole installation - including by the cron that keeps everybody else's
187
+ * certificates alive - so this is throttled to one request per domain per
188
+ * CertificateReissueUtil.COOLDOWN_IN_HOURS.
189
+ *
190
+ * Throws with a customer-readable reason for every refusal, so the API layer
191
+ * can hand the message straight back without classifying the failure:
192
+ * BadDataException for a domain that is not eligible at all, and
193
+ * TooManyRequestsException (429) for one that is simply too soon.
194
+ */
195
+ async reissueCert(domainId) {
196
+ const now = OneUptimeDate.getCurrentDate();
197
+ const dashboardDomain = await this.findOneBy({
198
+ query: {
199
+ _id: domainId.toString(),
200
+ },
201
+ select: {
202
+ _id: true,
203
+ fullDomain: true,
204
+ isCnameVerified: true,
205
+ isSslOrdered: true,
206
+ isCustomCertificate: true,
207
+ certificateReissueRequestedAt: true,
208
+ },
209
+ props: {
210
+ isRoot: true,
211
+ },
212
+ });
213
+ if (!dashboardDomain) {
214
+ throw new BadDataException("Domain not found.");
215
+ }
216
+ if (!dashboardDomain.fullDomain) {
217
+ throw new BadDataException("Unable to reissue certificate because domain is null");
218
+ }
219
+ /*
220
+ * Nothing to reissue: the certificate on a custom-certificate domain is
221
+ * the one the customer uploaded, and we have no way to obtain another.
222
+ */
223
+ if (dashboardDomain.isCustomCertificate) {
224
+ throw new BadDataException("This domain uses a certificate you uploaded yourself, so there is no Let's Encrypt certificate to reissue. Please edit this domain and upload a new certificate instead.");
225
+ }
226
+ if (!dashboardDomain.isCnameVerified) {
227
+ throw new BadDataException("CNAME is not verified. Please verify CNAME first before you reissue the SSL certificate.");
228
+ }
229
+ /*
230
+ * A domain that never ordered a certificate has nothing to reissue - the
231
+ * dashboard shows "Order Free SSL" for it, which is the correct button.
232
+ */
233
+ if (!dashboardDomain.isSslOrdered) {
234
+ throw new BadDataException("No SSL certificate has been ordered for this domain yet. Please order one first.");
235
+ }
236
+ /*
237
+ * Claim the cooldown before ordering anything, and claim it by putting the
238
+ * cooldown condition in the WHERE clause rather than in an `if` above the
239
+ * write. Two clicks that arrive together both read a row that is not
240
+ * cooling down; only the write can decide which one of them gets to spend
241
+ * the CA's allowance.
242
+ *
243
+ * The stamp goes down BEFORE the order and is never rolled back on
244
+ * failure. A rejected order still costs a validation attempt against the
245
+ * shared account, and a domain whose order fails is exactly the domain
246
+ * somebody presses again - so a failed attempt has to start the clock the
247
+ * same way a successful one does.
248
+ */
249
+ const claimedRowCount = await this.updateOneBy({
250
+ query: {
251
+ _id: domainId.toString(),
252
+ certificateReissueRequestedAt: QueryHelper.lessThanEqualToOrNull(CertificateReissueUtil.getCooldownCutoff(now)),
253
+ },
254
+ data: {
255
+ certificateReissueRequestedAt: now,
256
+ },
257
+ props: {
258
+ isRoot: true,
259
+ },
260
+ });
261
+ if (claimedRowCount === 0) {
262
+ if (dashboardDomain.certificateReissueRequestedAt) {
263
+ throw new TooManyRequestsException(CertificateReissueUtil.getCooldownMessage(dashboardDomain.certificateReissueRequestedAt, now));
264
+ }
265
+ /*
266
+ * The row matched the cooldown a moment ago and does not now: another
267
+ * request claimed it in between, or the domain was deleted. Either way
268
+ * the caller must not order.
269
+ */
270
+ throw new BadDataException("Could not start a certificate reissue for this domain. Please refresh the page and try again.");
271
+ }
272
+ logger.debug("Reissuing SSL certificate for domain: " + dashboardDomain.fullDomain, { fullDomain: dashboardDomain.fullDomain });
273
+ await this.orderCert(dashboardDomain);
274
+ }
177
275
  async updateSslProvisioningStatusForAllDomains() {
178
276
  const domains = await this.findBy({
179
277
  query: {
@@ -602,6 +700,12 @@ __decorate([
602
700
  __metadata("design:paramtypes", [DashboardDomain]),
603
701
  __metadata("design:returntype", Promise)
604
702
  ], Service.prototype, "orderCert", null);
703
+ __decorate([
704
+ CaptureSpan(),
705
+ __metadata("design:type", Function),
706
+ __metadata("design:paramtypes", [ObjectID]),
707
+ __metadata("design:returntype", Promise)
708
+ ], Service.prototype, "reissueCert", null);
605
709
  __decorate([
606
710
  CaptureSpan(),
607
711
  __metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"DashboardDomainService.js","sourceRoot":"","sources":["../../../../Server/Services/DashboardDomainService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DashboardDomainService.js","sourceRoot":"","sources":["../../../../Server/Services/DashboardDomainService.ts"],"names":[],"mappings":"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"}
@@ -162,6 +162,12 @@ import OnCallDutyPolicyScheduleOwnerTeamService from "./OnCallDutyPolicySchedule
162
162
  import OnCallDutyPolicyScheduleLabelRuleService from "./OnCallDutyPolicyScheduleLabelRuleService";
163
163
  import OnCallDutyPolicyScheduleLayerUserService from "./OnCallDutyPolicyScheduleLayerUserService";
164
164
  import OnCallDutyPolicyScheduleService from "./OnCallDutyPolicyScheduleService";
165
+ // On-call calendar feeds and shift reminders
166
+ import UserOnCallCalendarFeedService from "./UserOnCallCalendarFeedService";
167
+ import OnCallDutyPolicyScheduleCalendarFeedService from "./OnCallDutyPolicyScheduleCalendarFeedService";
168
+ import ProjectOnCallCalendarFeedService from "./ProjectOnCallCalendarFeedService";
169
+ import UserOnCallShiftReminderService from "./UserOnCallShiftReminderService";
170
+ import UserOnCallShiftReminderLogService from "./UserOnCallShiftReminderLogService";
165
171
  // On-Call Duty
166
172
  import OnCallDutyPolicyService from "./OnCallDutyPolicyService";
167
173
  import ProbeService from "./ProbeService";
@@ -654,6 +660,12 @@ const services = [
654
660
  OnCallDutyPolicyScheduleOwnerTeamService,
655
661
  OnCallDutyPolicyScheduleLabelRuleService,
656
662
  OnCallDutyPolicyScheduleLayerUserService,
663
+ // On-call calendar feeds and shift reminders
664
+ UserOnCallCalendarFeedService,
665
+ OnCallDutyPolicyScheduleCalendarFeedService,
666
+ ProjectOnCallCalendarFeedService,
667
+ UserOnCallShiftReminderService,
668
+ UserOnCallShiftReminderLogService,
657
669
  OnCallDutyPolicyScheduleLayerService,
658
670
  OnCallDutyPolicyEscalationRuleScheduleService,
659
671
  UsageBillingService,