@oneuptime/common 13.0.7 → 14.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Models/AnalyticsModels/AuditLog.ts +23 -15
- package/Models/DatabaseModels/GlobalConfig.ts +24 -0
- package/Models/DatabaseModels/Monitor.ts +3 -2
- package/Models/DatabaseModels/MonitorTemplate.ts +2 -1
- package/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.ts +1 -1
- package/Models/DatabaseModels/ProjectOnCallCalendarFeed.ts +1 -1
- package/Models/DatabaseModels/UserOnCallCalendarFeed.ts +1 -1
- package/Scripts/generate-service-worker.js +65 -4
- package/Server/API/AIBillingAPI.ts +1 -0
- package/Server/API/AIInsightAPI.ts +1 -4
- package/Server/API/AIInvestigationAPI.ts +1 -4
- package/Server/API/AIReadinessAPI.ts +4 -5
- package/Server/API/AlertAPI.ts +1 -0
- package/Server/API/AutoRemediationAPI.ts +1 -4
- package/Server/API/BaseAPI.ts +34 -0
- package/Server/API/BaseAnalyticsAPI.ts +80 -9
- package/Server/API/BillingAPI.ts +2 -0
- package/Server/API/BillingInvoiceAPI.ts +1 -0
- package/Server/API/BillingPaymentMethodAPI.ts +2 -0
- package/Server/API/CodeFixRunAPI.ts +1 -3
- package/Server/API/CommonAPI.ts +68 -4
- package/Server/API/DashboardAPI.ts +12 -12
- package/Server/API/GlobalConfigAPI.ts +243 -460
- package/Server/API/IncidentAPI.ts +2 -0
- package/Server/API/IncidentEpisodeAPI.ts +1 -0
- package/Server/API/NotificationAPI.ts +1 -0
- package/Server/API/OnCallCalendarAPI.ts +4 -5
- package/Server/API/OnCallDutyPolicyAPI.ts +7 -0
- package/Server/API/OnCallReadinessAPI.ts +4 -1
- package/Server/API/OnCallScheduleTimelineAPI.ts +731 -0
- package/Server/API/ProjectAPI.ts +1 -0
- package/Server/API/ProjectOIDC.ts +25 -16
- package/Server/API/ProjectSSO.ts +24 -16
- package/Server/API/ScheduledMaintenanceAPI.ts +1 -0
- package/Server/API/StatusPageAPI.ts +261 -74
- package/Server/API/TeamMemberAPI.ts +13 -1
- package/Server/API/UserCallAPI.ts +2 -0
- package/Server/API/UserEmailAPI.ts +2 -0
- package/Server/API/UserIncomingCallNumberAPI.ts +2 -0
- package/Server/API/UserMicrosoftTeamsAPI.ts +1 -0
- package/Server/API/UserSlackAPI.ts +1 -0
- package/Server/API/UserSmsAPI.ts +2 -0
- package/Server/API/UserTotpAuthAPI.ts +1 -0
- package/Server/API/UserWebAuthnAPI.ts +2 -0
- package/Server/API/UserWebhookAPI.ts +1 -0
- package/Server/API/UserWhatsAppAPI.ts +2 -0
- package/Server/Enterprise/EnterpriseEdition.ts +649 -0
- package/Server/Enterprise/EnterpriseFeature.ts +48 -0
- package/Server/Enterprise/EnterpriseLicenseSnapshot.ts +192 -0
- package/Server/Enterprise/EnterpriseServerModule.ts +233 -0
- package/Server/EnvironmentConfig.ts +147 -2
- package/Server/Infrastructure/Postgres/SchemaMigrations/1793900000000-AddEnterpriseEditionFirstSeenAt.ts +25 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
- package/Server/Middleware/MasterAdminAuthorization.ts +13 -2
- package/Server/Middleware/UserAuthorization.ts +117 -21
- package/Server/Services/ApiKeyPermissionService.ts +101 -4
- package/Server/Services/AuditLogService.ts +84 -1079
- package/Server/Services/DatabaseService.ts +245 -0
- package/Server/Services/DetectionRuleService.ts +5 -4
- package/Server/Services/EnterpriseLicenseService.ts +38 -0
- package/Server/Services/GlobalConfigService.ts +80 -1
- package/Server/Services/MonitorProbeService.ts +116 -20
- package/Server/Services/MonitorService.ts +56 -4
- package/Server/Services/MonitorStatusTimelineService.ts +284 -0
- package/Server/Services/MonitorTemplateService.ts +26 -0
- package/Server/Services/OnCallDutyPolicyChildService.ts +261 -0
- package/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.ts +2 -2
- package/Server/Services/OnCallDutyPolicyEscalationRuleService.ts +2 -2
- package/Server/Services/OnCallDutyPolicyEscalationRuleTeamService.ts +2 -2
- package/Server/Services/OnCallDutyPolicyEscalationRuleUserService.ts +2 -2
- package/Server/Services/PayAsYouGoBillingService.ts +23 -28
- package/Server/Services/ProjectService.ts +302 -0
- package/Server/Services/RumSessionPinService.ts +293 -22
- package/Server/Services/StatusPagePrivateUserService.ts +7 -3
- package/Server/Services/StatusPageService.ts +78 -1
- package/Server/Services/TeamMemberService.ts +11 -0
- package/Server/Services/TeamPermissionService.ts +120 -26
- package/Server/Services/TeamService.ts +10 -0
- package/Server/Services/ThreatIntelFeedService.ts +6 -3
- package/Server/Services/UserService.ts +10 -17
- package/Server/Types/Database/Permissions/BasePermission.ts +9 -7
- package/Server/Types/Database/Permissions/CreatePermission.ts +15 -0
- package/Server/Types/Database/Permissions/EditionPermission.ts +208 -18
- package/Server/Types/Database/Permissions/Index.ts +75 -11
- package/Server/Types/Database/Permissions/TablePermission.ts +34 -31
- package/Server/Types/Database/Permissions/UpdatePermission.ts +29 -0
- package/Server/Types/Markdown.ts +41 -0
- package/Server/Utils/AI/AIChatPrivacyFilter.ts +8 -0
- package/Server/Utils/AI/AIRunPrivacyFilter.ts +8 -0
- package/Server/Utils/CommunityEditionSsoReport.ts +361 -0
- package/Server/Utils/EditionEnforcement.ts +233 -0
- package/Server/Utils/FrontendEnvironment.ts +41 -2
- package/Server/Utils/InstanceHealth/RedisHealth.ts +12 -277
- package/Server/Utils/MasterAdminPageAccess.ts +61 -0
- package/Server/Utils/Monitor/AffectedResourceList.ts +190 -0
- package/Server/Utils/Monitor/Criteria/EvaluateOverTime.ts +10 -1
- package/Server/Utils/Monitor/MonitorAlert.ts +3 -1
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +543 -333
- package/Server/Utils/Monitor/MonitorIncident.ts +3 -1
- package/Server/Utils/Monitor/MonitoringIntervalValidator.ts +116 -0
- package/Server/Utils/OnCall/OnCallCalendarFeedRenderer.ts +1 -1
- package/Server/Utils/Realtime.ts +163 -45
- package/Server/Utils/SecurityEvent/DetectionRuleEvaluator.ts +11 -28
- package/Server/Utils/SecurityEvent/GoogleSecOpsSeverityRepair.ts +170 -0
- package/Server/Utils/SecurityEvent/Sigma/SigmaClickhouseCompiler.ts +1 -1
- package/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.ts +6 -2
- package/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.ts +10 -9
- package/Server/Utils/Workspace/Slack/Slack.ts +423 -10
- package/Tests/App/Accounts/LoginPasskey.test.tsx +18 -0
- package/Tests/App/Accounts/LoginSsoEdition.test.tsx +616 -0
- package/Tests/App/AdminDashboard/AdminAuthenticationSsoEdition.test.tsx +217 -0
- package/Tests/App/AdminDashboard/AdminEnterprisePluginPage.test.tsx +357 -0
- package/Tests/App/AdminDashboard/EnterpriseLicensesShell.test.tsx +214 -0
- package/Tests/App/AdminDashboard/GlobalSSOEnterpriseShells.test.tsx +271 -0
- package/Tests/App/AdminDashboard/HealthShells.test.tsx +659 -0
- package/Tests/App/Dashboard/AffectedResourcesPicker.test.tsx +1059 -0
- package/Tests/App/Dashboard/AffectedResourcesPickerEditForm.test.tsx +376 -0
- package/Tests/App/Dashboard/AffectedResourcesPickerHiddenTypes.test.tsx +757 -0
- package/Tests/App/Dashboard/AffectedResourcesSummaryStep.test.tsx +307 -0
- package/Tests/App/Dashboard/ArgumentsFormGroupByUnlistedAttributes.test.tsx +131 -0
- package/Tests/App/Dashboard/AuditLogsAndComplianceShells.test.tsx +572 -0
- package/Tests/App/Dashboard/DashboardHeaderRequests.test.tsx +1 -1
- package/Tests/App/Dashboard/DashboardMonitorLabelVariable.test.tsx +9 -1
- package/Tests/App/Dashboard/DashboardVariableAllContract.test.tsx +24 -0
- package/Tests/App/Dashboard/DashboardVariableSelector.test.tsx +162 -8
- package/Tests/App/Dashboard/EnterpriseFeatureUpgrade.test.tsx +547 -0
- package/Tests/App/Dashboard/EnterprisePluginPage.test.tsx +667 -0
- package/Tests/App/Dashboard/EntityFilterDropdownArchivedSlos.test.tsx +105 -6
- package/Tests/App/Dashboard/EntityFilterDropdownUnlistedSelection.test.tsx +434 -0
- package/Tests/App/Dashboard/EscalationRuleReadiness.test.tsx +276 -1
- package/Tests/App/Dashboard/IdentityEnterpriseShells.test.tsx +319 -0
- package/Tests/App/Dashboard/OnCallCalendarFeedSideMenus.test.tsx +9 -1
- package/Tests/App/Dashboard/OnboardingSsoEmptyState.test.tsx +185 -0
- package/Tests/App/Dashboard/PayAsYouGoConsentGate.test.tsx +58 -42
- package/Tests/App/Dashboard/PayAsYouGoNotices.test.tsx +42 -5
- package/Tests/App/Dashboard/ResourceAuditLogsSideMenus.test.tsx +34 -23
- package/Tests/App/Dashboard/ScheduleTimeline.test.tsx +1580 -0
- package/Tests/App/Dashboard/ScheduleTimelineAPI.test.ts +280 -0
- package/Tests/App/Dashboard/ScheduleTimelineModel.test.ts +673 -0
- package/Tests/App/Dashboard/SecurityEventConnectionDiagnostics.test.tsx +133 -70
- package/Tests/App/Dashboard/SecurityEventDetailPanel.test.tsx +399 -0
- package/Tests/App/Dashboard/SecurityEventListRow.test.tsx +214 -0
- package/Tests/App/Dashboard/SecurityEventsDetectionRulesPage.test.tsx +86 -3
- package/Tests/App/Dashboard/SecurityEventsEmptyState.test.tsx +1 -58
- package/Tests/App/Dashboard/SecurityEventsGuideContent.test.ts +1313 -0
- package/Tests/App/Dashboard/SecurityEventsHowItWorksCard.test.tsx +536 -0
- package/Tests/App/Dashboard/SecurityEventsNavTabs.test.tsx +248 -0
- package/Tests/App/Dashboard/SecurityEventsNoResults.test.tsx +222 -0
- package/Tests/App/Dashboard/SecurityEventsThreatIntelPage.test.tsx +199 -0
- package/Tests/App/Dashboard/SecurityEventsViewer.test.tsx +1203 -0
- package/Tests/App/Dashboard/SloOverviewHero.test.tsx +171 -36
- package/Tests/App/Dashboard/SloViewSideMenu.test.tsx +215 -0
- package/Tests/App/Dashboard/SloViewSideMenuCounts.test.tsx +40 -3
- package/Tests/App/Dashboard/UserEmailCallSites.test.tsx +11 -91
- package/Tests/App/PublicDashboard/DashboardVariableSelector.test.tsx +12 -4
- package/Tests/App/PublicDashboard/PublicDashboardWidgetListAuth.test.tsx +623 -0
- package/Tests/App/StatusPage/StatusPageSsoEmptyState.test.tsx +319 -0
- package/Tests/Helpers/RefreshAwareApiScan.ts +757 -0
- package/Tests/Helpers/TenantScopedRequestScan.ts +515 -0
- package/Tests/Models/OnCallCalendarFeedModels.test.ts +23 -1
- package/Tests/Scripts/GenerateServiceWorker.test.ts +931 -0
- package/Tests/Server/API/AIChatRouteAuthorization.test.ts +138 -5
- package/Tests/Server/API/AIGenerationProjectAIToggle.test.ts +187 -0
- package/Tests/Server/API/AIInvestigationAvailabilityAuthorization.test.ts +51 -3
- package/Tests/Server/API/AIInvestigationEvidenceAPI.test.ts +55 -2
- package/Tests/Server/API/BaseAPICreateItemDoesNotMutateModel.test.ts +130 -0
- package/Tests/Server/API/BaseAnalyticsAPIAggregateCache.test.ts +729 -0
- package/Tests/Server/API/BillingPayAsYouGoStatus.test.ts +93 -7
- package/Tests/Server/API/BillingPaymentMethodAPI.test.ts +36 -3
- package/Tests/Server/API/CommonAPIAuthGuard.test.ts +1003 -24
- package/Tests/Server/API/DashboardPublicRateLimit.test.ts +6 -3
- package/Tests/Server/API/ExpiredSessionAIRoutes.test.ts +708 -0
- package/Tests/Server/API/ExpiredSessionCustomRoutes.test.ts +928 -0
- package/Tests/Server/API/ExpiredSessionMonitorTemplate.test.ts +319 -0
- package/Tests/Server/API/ExpiredSessionOnCallDutyPolicy.test.ts +336 -0
- package/Tests/Server/API/ExpiredSessionRouteGuards.test.ts +820 -0
- package/Tests/Server/API/GlobalConfigLicense.test.ts +766 -381
- package/Tests/Server/API/NotificationChannelVerificationAPI.test.ts +115 -12
- package/Tests/Server/API/OnCallCalendarAPI.test.ts +375 -8
- package/Tests/Server/API/OnCallReadinessAPI.test.ts +196 -912
- package/Tests/Server/API/OnCallScheduleTimelineAPI.test.ts +1513 -0
- package/Tests/Server/API/OnCallSetupReminderAPI.test.ts +119 -7
- package/Tests/Server/API/ProjectScopedCustomRouteAuth.test.ts +111 -4
- package/Tests/Server/API/PublicRouteInvalidAccessToken.test.ts +615 -0
- package/Tests/Server/API/SecurityEventAttributesAPI.test.ts +89 -2
- package/Tests/Server/API/SessionReplayAPI.test.ts +121 -0
- package/Tests/Server/API/SsoProviderListingsEdition.test.ts +432 -0
- package/Tests/Server/API/StatusPageMasterPasswordRateLimit.test.ts +4 -2
- package/Tests/Server/API/StatusPagePostmortemVisibility.test.ts +441 -0
- package/Tests/Server/API/StatusPageTestEmailReportAuth.test.ts +664 -0
- package/Tests/Server/API/TeamMemberLeaveScimLockEdition.test.ts +252 -0
- package/Tests/Server/API/TeamMemberRemoveUserFromProjectAPI.test.ts +7 -0
- package/Tests/Server/API/UserIncomingCallNumberApi.test.ts +6 -0
- package/Tests/Server/API/UserNotificationSettingAPI.test.ts +65 -4
- package/Tests/Server/API/UserProjectsAPI.test.ts +63 -3
- package/Tests/Server/API/UserTotpAuthAPI.test.ts +48 -2
- package/Tests/Server/API/UserWebAuthnAuthenticationOptionsRoute.test.ts +11 -2
- package/Tests/Server/API/UserWebAuthnBackupCodeMinting.test.ts +46 -3
- package/Tests/Server/API/UserWebAuthnPasskeyAPI.test.ts +18 -2
- package/Tests/Server/API/ZZVerifyChatsAuth.test.ts +24 -7
- package/Tests/Server/Enterprise/EnterpriseEdition.test.ts +824 -0
- package/Tests/Server/Enterprise/EnterpriseFeatureActive.test.ts +643 -0
- package/Tests/Server/Enterprise/EnterpriseLicenseSnapshot.test.ts +294 -0
- package/Tests/Server/Enterprise/EnterpriseModelFeatureMap.test.ts +93 -0
- package/Tests/Server/Enterprise/EnterpriseOnlyModulesLiveInEe.test.ts +582 -0
- package/Tests/Server/Enterprise/EnterpriseServerModule.test.ts +247 -0
- package/Tests/Server/Enterprise/FakeEnterpriseModule.ts +502 -0
- package/Tests/Server/Enterprise/TestBillingFlag.ts +70 -0
- package/Tests/Server/EnvironmentConfigEnterpriseEdition.test.ts +314 -0
- package/Tests/Server/Infrastructure/ContainerBootConfiguration.test.ts +289 -0
- package/Tests/Server/Infrastructure/E2EClickHouseFixtureAccess.test.ts +5 -1
- package/Tests/Server/Middleware/ExpiredSessionUserMiddleware.test.ts +563 -0
- package/Tests/Server/Middleware/MasterAdminAuthorization.test.ts +299 -19
- package/Tests/Server/Middleware/PublicRouteUserMiddleware.test.ts +453 -0
- package/Tests/Server/Middleware/UserAuthorization.test.ts +37 -2
- package/Tests/Server/Middleware/UserAuthorizationEditionEnforcement.test.ts +516 -0
- package/Tests/Server/Services/AIChatPrivacyPin.test.ts +24 -0
- package/Tests/Server/Services/ApiKeyPermissionSecurity.test.ts +2 -0
- package/Tests/Server/Services/ApiKeyPermissionService.test.ts +3 -3
- package/Tests/Server/Services/AuditLogService.test.ts +460 -990
- package/Tests/Server/Services/CreateAndReadResponsesKeepIds.test.ts +263 -0
- package/Tests/Server/Services/DatabaseServiceCreateSuppliedId.test.ts +147 -0
- package/Tests/Server/Services/DatabaseServiceLoginBeforeHooks.test.ts +1078 -0
- package/Tests/Server/Services/DatabaseServiceTenantRelationGuard.test.ts +259 -0
- package/Tests/Server/Services/DatabaseServiceWriteOperatorValues.test.ts +147 -0
- package/Tests/Server/Services/EnterpriseLicenseServiceKeyGeneration.test.ts +151 -0
- package/Tests/Server/Services/GlobalConfigServiceLicenseColumns.test.ts +357 -0
- package/Tests/Server/Services/MonitorDestinationInfoIPv6.test.ts +101 -0
- package/Tests/Server/Services/MonitorPayAsYouGoBilling.test.ts +115 -1
- package/Tests/Server/Services/MonitorProbeServiceIntervalScheduling.test.ts +333 -0
- package/Tests/Server/Services/MonitorStatusTimelineDailyAggregates.test.ts +303 -0
- package/Tests/Server/Services/OnCallChildCreateAuthorizationPostgres.test.ts +711 -0
- package/Tests/Server/Services/OnCallDutyPolicyChildService.test.ts +733 -0
- package/Tests/Server/Services/PayAsYouGoBillingService.test.ts +190 -140
- package/Tests/Server/Services/PayAsYouGoStripeRateLimitBudget.test.ts +4 -9
- package/Tests/Server/Services/PermissionBlockDeletion.test.ts +780 -0
- package/Tests/Server/Services/PermissionBlockDeletionPostgres.test.ts +628 -0
- package/Tests/Server/Services/ProjectServiceAuditLogLicense.test.ts +701 -0
- package/Tests/Server/Services/ProjectServiceAuditLogSettingsCache.test.ts +31 -35
- package/Tests/Server/Services/ProjectServiceCreateSubscriptionStarted.test.ts +77 -1
- package/Tests/Server/Services/RumSessionPinCreatePermission.test.ts +715 -0
- package/Tests/Server/Services/ScimPushGroupsTeamLocksEdition.test.ts +431 -0
- package/Tests/Server/Services/SsoRequirementReadMasking.test.ts +419 -0
- package/Tests/Server/Services/SsoRequirementWriteGuard.test.ts +769 -0
- package/Tests/Server/Services/StatusPagePrivateUserInvitationPolicy.test.ts +94 -0
- package/Tests/Server/Services/TeamMemberMultiTenantReadPostgres.test.ts +394 -0
- package/Tests/Server/Services/TeamPrivilegeEscalation.test.ts +6 -0
- package/Tests/Server/Services/TelemetryPayAsYouGoBilling.test.ts +131 -0
- package/Tests/Server/Services/UserAuthenticationService.test.ts +35 -0
- package/Tests/Server/Services/UserNotificationRuleAdminGuards.test.ts +13 -2
- package/Tests/Server/Services/UserServiceSeatLimit.test.ts +94 -56
- package/Tests/Server/Types/Database/Permissions/EditionPermission.test.ts +1823 -0
- package/Tests/Server/Types/Database/Permissions/ModelPermissionAnonymousRefusal.test.ts +518 -0
- package/Tests/Server/Types/Database/Permissions/MultiTenantPermissions.test.ts +350 -0
- package/Tests/Server/Types/Database/Permissions/OnCallCalendarFeedPermissions.test.ts +282 -25
- package/Tests/Server/Types/Database/Permissions/TableLevelBlockPermission.test.ts +459 -0
- package/Tests/Server/Types/Markdown.test.ts +181 -0
- package/Tests/Server/Utils/AI/AIRunPrivacyFilter.test.ts +101 -9
- package/Tests/Server/Utils/AI/ChatAgentHelpers.test.ts +88 -4
- package/Tests/Server/Utils/AI/Toolbox/ExceptionTools.test.ts +459 -0
- package/Tests/Server/Utils/AI/Toolbox/LogTools.test.ts +794 -0
- package/Tests/Server/Utils/AI/Toolbox/RecentChangesTools.test.ts +574 -0
- package/Tests/Server/Utils/AI/Toolbox/SecurityEventTools.test.ts +596 -0
- package/Tests/Server/Utils/CaptchaRequestAndLogging.test.ts +395 -0
- package/Tests/Server/Utils/CommunityEditionSsoReport.test.ts +565 -0
- package/Tests/Server/Utils/EditionEnforcement.test.ts +303 -0
- package/Tests/Server/Utils/FrontendEnvironment.test.ts +367 -0
- package/Tests/Server/Utils/InstanceHealth/RedisHealth.test.ts +38 -418
- package/Tests/Server/Utils/MasterAdminPageAccess.test.ts +251 -0
- package/Tests/Server/Utils/Monitor/AffectedResourceList.test.ts +518 -0
- package/Tests/Server/Utils/Monitor/Criteria/EvaluateOverTime.test.ts +24 -4
- package/Tests/Server/Utils/Monitor/MonitorActionTimestamps.test.ts +616 -0
- package/Tests/Server/Utils/Monitor/MonitorCriteriaEvaluator.test.ts +934 -96
- package/Tests/Server/Utils/Monitor/MonitoringIntervalValidator.test.ts +188 -0
- package/Tests/Server/Utils/Realtime.test.ts +502 -0
- package/Tests/Server/Utils/SecurityEvent/Connectors/GoogleSecOps/GoogleSecOpsConnectorSeverity.test.ts +216 -0
- package/Tests/Server/Utils/SecurityEvent/DetectionRuleEvaluator.test.ts +142 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsSeverityRepair.test.ts +140 -0
- package/Tests/Server/Utils/SecurityEvent/GoogleSecOpsSeverityRepairClickhouseIntegration.test.ts +542 -0
- package/Tests/Server/Utils/Telemetry/ChangeEventRow.test.ts +743 -0
- package/Tests/Server/Utils/Telemetry/RuntimeMetrics.test.ts +465 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeams/Messages/Alert.test.ts +202 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeams/Messages/Incident.test.ts +194 -0
- package/Tests/Server/Utils/Workspace/MicrosoftTeams/Messages/ScheduledMaintenance.test.ts +231 -0
- package/Tests/Server/Utils/Workspace/Slack/Messages/Alert.test.ts +194 -0
- package/Tests/Server/Utils/Workspace/Slack/Messages/AlertEpisode.test.ts +194 -0
- package/Tests/Server/Utils/Workspace/Slack/Messages/Incident.test.ts +194 -0
- package/Tests/Server/Utils/Workspace/Slack/Messages/IncidentEpisode.test.ts +194 -0
- package/Tests/Server/Utils/Workspace/Slack/Messages/ScheduledMaintenance.test.ts +247 -0
- package/Tests/Server/Utils/Workspace/Slack/SlackMarkdownSectionSplit.test.ts +1209 -0
- package/Tests/Types/AI/AIInsightEvidence.test.ts +206 -0
- package/Tests/Types/API/HostnameFromAuthority.test.ts +20 -10
- package/Tests/Types/API/HostnameIPv6.test.ts +149 -0
- package/Tests/Types/BaseDatabase/DatabaseCommonInteractionPropsUtilAnonymous.test.ts +144 -0
- package/Tests/Types/Call/CallProvider.test.ts +528 -0
- package/Tests/Types/Database/CanonicalModelInstance.test.ts +190 -0
- package/Tests/Types/Kubernetes/KubernetesCostIngest.test.ts +236 -0
- package/Tests/Types/OnCallDutyPolicy/ScheduleTimeline.test.ts +736 -0
- package/Tests/Types/OnCallDutyPolicy/ScheduleTimelineLayout.test.ts +996 -0
- package/Tests/Types/SecurityEvent/SigmaRule.test.ts +142 -0
- package/Tests/Types/Workflow/Components/JSON.test.ts +182 -0
- package/Tests/UI/Components/BasicFormDropdownNormalization.test.tsx +116 -1
- package/Tests/UI/Components/Dropdown/DropdownAsyncOptions.test.tsx +81 -0
- package/Tests/UI/Components/EditionLabelLapseCopy.ts +104 -0
- package/Tests/UI/Components/EditionLabelLicenseManagerWiring.test.tsx +254 -0
- package/Tests/UI/Components/EditionLabelLicenseRefresh.test.tsx +165 -171
- package/Tests/UI/Components/EditionLabelLicenseStatus.test.tsx +1586 -0
- package/Tests/UI/Components/EditionLabelLicenseWritesGuard.test.tsx +157 -0
- package/Tests/UI/Components/EventAttachmentList.test.tsx +174 -0
- package/Tests/UI/Components/Forms/BasicFormBurnRateTemplateDefaults.test.tsx +395 -0
- package/Tests/UI/Components/Forms/BasicFormCollapsibleSections.test.tsx +286 -0
- package/Tests/UI/Components/Forms/FormSummary.test.tsx +128 -0
- package/Tests/UI/Components/Graphs/DayUptimeGraph.test.tsx +49 -2
- package/Tests/UI/Components/MarkdownConverters.test.ts +684 -0
- package/Tests/UI/Components/ModelListEmptyState.test.tsx +289 -0
- package/Tests/UI/Components/ModelTable/BaseModelTableQueryChange.test.tsx +365 -0
- package/Tests/UI/Components/OpenAuthenticatedUrl.test.ts +358 -0
- package/Tests/UI/Components/SessionAwareImage.test.tsx +496 -0
- package/Tests/UI/Components/TelemetryHistogramZeroBuckets.test.tsx +190 -0
- package/Tests/UI/Components/TelemetryViewer/TelemetryViewerEmptyContent.test.tsx +131 -0
- package/Tests/UI/Components/TooltipInteractive.test.tsx +97 -0
- package/Tests/UI/EsbuildEnterpriseAlias.test.ts +1127 -0
- package/Tests/UI/MicrosoftTeams/MicrosoftTeamsChatsCardInstallGuidance.test.tsx +1 -1
- package/Tests/UI/Monitor/EvaluationLogListTimestamps.test.tsx +367 -0
- package/Tests/UI/Utils/API/BaseAPIRefreshSession.test.ts +1087 -0
- package/Tests/UI/Utils/API/DashboardHost.ts +12 -0
- package/Tests/UI/Utils/API/FakeAxiosServer.ts +183 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealBreadcrumbTrails.ts +10 -0
- package/Tests/UI/Utils/Breadcrumb/fixtures/RealRoutePatterns.ts +2 -0
- package/Tests/UI/Utils/Cookie.test.ts +440 -0
- package/Tests/UI/Utils/ModelAPIRequestClient.test.ts +278 -0
- package/Tests/UI/Utils/Navigation.test.ts +33 -0
- package/Tests/UI/Utils/PricingPlan.test.ts +295 -0
- package/Tests/UI/Utils/Realtime.test.ts +759 -0
- package/Tests/UI/Utils/Telemetry/Telemetry.test.ts +500 -0
- package/Tests/Utils/APIInstanceDispatch.test.ts +311 -0
- package/Tests/Utils/HostAddressUtil.test.ts +138 -0
- package/Tests/Utils/Monitor/MonitorDestinationUtil.test.ts +313 -0
- package/Tests/Utils/Monitor/MonitoringIntervalUtil.test.ts +304 -0
- package/Tests/Utils/SecurityEvent/GoogleSecOpsAlertNormalizerSeverity.test.ts +565 -0
- package/Tests/Utils/StatusPage/UptimeDailyAggregateUtil.test.ts +248 -0
- package/Types/API/Hostname.ts +63 -16
- package/Types/BaseDatabase/DatabaseCommonInteractionPropsUtil.ts +40 -0
- package/Types/Database/AccessControl/ColumnAccessControl.ts +19 -7
- package/Types/Database/AccessControl/ColumnBillingAccessControl.ts +19 -7
- package/Types/Database/AccessControl/OwnerOnlyColumn.ts +15 -6
- package/Types/Database/CanonicalModelInstance.ts +102 -0
- package/Types/Database/TableColumn.ts +20 -6
- package/Types/EnterpriseLicense/EnterpriseLicensePeriods.ts +29 -0
- package/Types/IP/IPv6.ts +6 -1
- package/Types/Monitor/MonitorEvaluationSummary.ts +3 -0
- package/Types/Monitor/MonitorStep.ts +6 -1
- package/Types/Monitor/ProxmoxAlertTemplates.ts +1 -1
- package/Types/OnCallDutyPolicy/ScheduleTimeline.ts +507 -0
- package/Types/OnCallDutyPolicy/ScheduleTimelineLayout.ts +589 -0
- package/Types/Realtime/EventName.ts +11 -0
- package/Types/SecurityEvent/DetectionFindingConstants.ts +14 -0
- package/Types/SecurityEvent/OcsfSeverity.ts +31 -26
- package/Types/SecurityEvent/SigmaRule.ts +51 -0
- package/Types/SecurityEvent/ThreatIntelConstants.ts +18 -0
- package/Types/StatusPage/UptimeDailyAggregate.ts +110 -0
- package/UI/Components/AttachmentList/EventAttachmentList.tsx +30 -2
- package/UI/Components/Dashboard/DashboardVariableControl.tsx +12 -2
- package/UI/Components/Dropdown/Dropdown.tsx +6 -1
- package/UI/Components/EditionLabel/EditionLabel.tsx +808 -1195
- package/UI/Components/EditionLabel/LicenseManager.ts +119 -0
- package/UI/Components/EventItem/EventItem.tsx +12 -1
- package/UI/Components/Forms/BasicForm.tsx +151 -126
- package/UI/Components/Forms/CollapsibleFormSection.tsx +63 -0
- package/UI/Components/Forms/Fields/FormField.tsx +10 -4
- package/UI/Components/Forms/FormSummary.tsx +7 -0
- package/UI/Components/Forms/Types/Field.ts +10 -0
- package/UI/Components/Graphs/DayUptimeGraph.tsx +123 -15
- package/UI/Components/Markdown.tsx/MarkdownConverters.ts +0 -0
- package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +2 -1
- package/UI/Components/Markdown.tsx/SessionAwareImage.tsx +122 -0
- package/UI/Components/ModelList/ModelList.tsx +11 -1
- package/UI/Components/ModelTable/BaseModelTable.tsx +34 -5
- package/UI/Components/ModelTable/TableView.tsx +1 -1
- package/UI/Components/MonitorGraphs/Uptime.tsx +69 -0
- package/UI/Components/TelemetryViewer/TelemetryViewer.tsx +28 -12
- package/UI/Components/TelemetryViewer/components/TelemetryHistogram.tsx +8 -1
- package/UI/Components/Tooltip/Tooltip.tsx +8 -1
- package/UI/Utils/API/API.ts +173 -12
- package/UI/Utils/API/RequestOptions.ts +11 -0
- package/UI/Utils/AnalyticsModelAPI/AnalyticsModelAPI.ts +31 -7
- package/UI/Utils/ModelAPI/ModelAPI.ts +30 -9
- package/UI/Utils/Navigation.ts +9 -0
- package/UI/Utils/OpenAuthenticatedUrl.ts +154 -0
- package/UI/Utils/Realtime.ts +176 -30
- package/UI/esbuild-enterprise.js +263 -0
- package/Utils/API.ts +14 -5
- package/Utils/EnterpriseLicense/EnterpriseLicenseUsage.ts +7 -2
- package/Utils/HostAddressUtil.ts +94 -0
- package/Utils/Monitor/MonitorDestinationUtil.ts +157 -0
- package/Utils/Monitor/MonitoringIntervalUtil.ts +436 -0
- package/Utils/SecurityEvent/GoogleSecOpsAlertNormalizer.ts +157 -7
- package/Utils/SecurityEvent/Sigma/SigmaRuleParser.ts +9 -17
- package/Utils/Slo/SloBurnRateTemplate.ts +2 -2
- package/Utils/StatusPage/UptimeDailyAggregateUtil.ts +192 -0
- package/build/dist/Models/AnalyticsModels/AuditLog.js +23 -15
- package/build/dist/Models/AnalyticsModels/AuditLog.js.map +1 -1
- package/build/dist/Models/DatabaseModels/GlobalConfig.js +25 -0
- package/build/dist/Models/DatabaseModels/GlobalConfig.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Monitor.js +2 -2
- package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
- package/build/dist/Models/DatabaseModels/MonitorTemplate.js +2 -1
- package/build/dist/Models/DatabaseModels/MonitorTemplate.js.map +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.js +1 -1
- package/build/dist/Models/DatabaseModels/OnCallDutyPolicyScheduleCalendarFeed.js.map +1 -1
- package/build/dist/Models/DatabaseModels/ProjectOnCallCalendarFeed.js +1 -1
- package/build/dist/Models/DatabaseModels/ProjectOnCallCalendarFeed.js.map +1 -1
- package/build/dist/Models/DatabaseModels/UserOnCallCalendarFeed.js +1 -1
- package/build/dist/Models/DatabaseModels/UserOnCallCalendarFeed.js.map +1 -1
- package/build/dist/Server/API/AIBillingAPI.js +1 -1
- package/build/dist/Server/API/AIBillingAPI.js.map +1 -1
- package/build/dist/Server/API/AIInsightAPI.js +1 -4
- package/build/dist/Server/API/AIInsightAPI.js.map +1 -1
- package/build/dist/Server/API/AIInvestigationAPI.js +1 -4
- package/build/dist/Server/API/AIInvestigationAPI.js.map +1 -1
- package/build/dist/Server/API/AIReadinessAPI.js +1 -3
- package/build/dist/Server/API/AIReadinessAPI.js.map +1 -1
- package/build/dist/Server/API/AlertAPI.js +1 -1
- package/build/dist/Server/API/AlertAPI.js.map +1 -1
- package/build/dist/Server/API/AutoRemediationAPI.js +1 -4
- package/build/dist/Server/API/AutoRemediationAPI.js.map +1 -1
- package/build/dist/Server/API/BaseAPI.js +33 -0
- package/build/dist/Server/API/BaseAPI.js.map +1 -1
- package/build/dist/Server/API/BaseAnalyticsAPI.js +55 -10
- package/build/dist/Server/API/BaseAnalyticsAPI.js.map +1 -1
- package/build/dist/Server/API/BillingAPI.js +2 -2
- package/build/dist/Server/API/BillingAPI.js.map +1 -1
- package/build/dist/Server/API/BillingInvoiceAPI.js +1 -1
- package/build/dist/Server/API/BillingInvoiceAPI.js.map +1 -1
- package/build/dist/Server/API/BillingPaymentMethodAPI.js +2 -2
- package/build/dist/Server/API/BillingPaymentMethodAPI.js.map +1 -1
- package/build/dist/Server/API/CodeFixRunAPI.js +1 -3
- package/build/dist/Server/API/CodeFixRunAPI.js.map +1 -1
- package/build/dist/Server/API/CommonAPI.js +50 -5
- package/build/dist/Server/API/CommonAPI.js.map +1 -1
- package/build/dist/Server/API/DashboardAPI.js +12 -12
- package/build/dist/Server/API/DashboardAPI.js.map +1 -1
- package/build/dist/Server/API/GlobalConfigAPI.js +158 -342
- package/build/dist/Server/API/GlobalConfigAPI.js.map +1 -1
- package/build/dist/Server/API/IncidentAPI.js +2 -2
- package/build/dist/Server/API/IncidentAPI.js.map +1 -1
- package/build/dist/Server/API/IncidentEpisodeAPI.js +1 -1
- package/build/dist/Server/API/IncidentEpisodeAPI.js.map +1 -1
- package/build/dist/Server/API/NotificationAPI.js +1 -1
- package/build/dist/Server/API/NotificationAPI.js.map +1 -1
- package/build/dist/Server/API/OnCallCalendarAPI.js +1 -4
- package/build/dist/Server/API/OnCallCalendarAPI.js.map +1 -1
- package/build/dist/Server/API/OnCallDutyPolicyAPI.js +6 -0
- package/build/dist/Server/API/OnCallDutyPolicyAPI.js.map +1 -1
- package/build/dist/Server/API/OnCallReadinessAPI.js +4 -1
- package/build/dist/Server/API/OnCallReadinessAPI.js.map +1 -1
- package/build/dist/Server/API/OnCallScheduleTimelineAPI.js +494 -0
- package/build/dist/Server/API/OnCallScheduleTimelineAPI.js.map +1 -0
- package/build/dist/Server/API/ProjectAPI.js +1 -1
- package/build/dist/Server/API/ProjectAPI.js.map +1 -1
- package/build/dist/Server/API/ProjectOIDC.js +24 -16
- package/build/dist/Server/API/ProjectOIDC.js.map +1 -1
- package/build/dist/Server/API/ProjectSSO.js +24 -16
- package/build/dist/Server/API/ProjectSSO.js.map +1 -1
- package/build/dist/Server/API/ScheduledMaintenanceAPI.js +1 -1
- package/build/dist/Server/API/ScheduledMaintenanceAPI.js.map +1 -1
- package/build/dist/Server/API/StatusPageAPI.js +218 -76
- package/build/dist/Server/API/StatusPageAPI.js.map +1 -1
- package/build/dist/Server/API/TeamMemberAPI.js +11 -4
- package/build/dist/Server/API/TeamMemberAPI.js.map +1 -1
- package/build/dist/Server/API/UserCallAPI.js +2 -2
- package/build/dist/Server/API/UserCallAPI.js.map +1 -1
- package/build/dist/Server/API/UserEmailAPI.js +2 -2
- package/build/dist/Server/API/UserEmailAPI.js.map +1 -1
- package/build/dist/Server/API/UserIncomingCallNumberAPI.js +2 -2
- package/build/dist/Server/API/UserIncomingCallNumberAPI.js.map +1 -1
- package/build/dist/Server/API/UserMicrosoftTeamsAPI.js +1 -1
- package/build/dist/Server/API/UserMicrosoftTeamsAPI.js.map +1 -1
- package/build/dist/Server/API/UserSlackAPI.js +1 -1
- package/build/dist/Server/API/UserSlackAPI.js.map +1 -1
- package/build/dist/Server/API/UserSmsAPI.js +2 -2
- package/build/dist/Server/API/UserSmsAPI.js.map +1 -1
- package/build/dist/Server/API/UserTotpAuthAPI.js +1 -1
- package/build/dist/Server/API/UserTotpAuthAPI.js.map +1 -1
- package/build/dist/Server/API/UserWebAuthnAPI.js +2 -2
- package/build/dist/Server/API/UserWebAuthnAPI.js.map +1 -1
- package/build/dist/Server/API/UserWebhookAPI.js +1 -1
- package/build/dist/Server/API/UserWebhookAPI.js.map +1 -1
- package/build/dist/Server/API/UserWhatsAppAPI.js +2 -2
- package/build/dist/Server/API/UserWhatsAppAPI.js.map +1 -1
- package/build/dist/Server/Enterprise/EnterpriseEdition.js +466 -0
- package/build/dist/Server/Enterprise/EnterpriseEdition.js.map +1 -0
- package/build/dist/Server/Enterprise/EnterpriseFeature.js +39 -0
- package/build/dist/Server/Enterprise/EnterpriseFeature.js.map +1 -0
- package/build/dist/Server/Enterprise/EnterpriseLicenseSnapshot.js +70 -0
- package/build/dist/Server/Enterprise/EnterpriseLicenseSnapshot.js.map +1 -0
- package/build/dist/Server/Enterprise/EnterpriseServerModule.js +84 -0
- package/build/dist/Server/Enterprise/EnterpriseServerModule.js.map +1 -0
- package/build/dist/Server/EnvironmentConfig.js +84 -2
- package/build/dist/Server/EnvironmentConfig.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793900000000-AddEnterpriseEditionFirstSeenAt.js +18 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1793900000000-AddEnterpriseEditionFirstSeenAt.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Middleware/MasterAdminAuthorization.js +11 -2
- package/build/dist/Server/Middleware/MasterAdminAuthorization.js.map +1 -1
- package/build/dist/Server/Middleware/UserAuthorization.js +94 -15
- package/build/dist/Server/Middleware/UserAuthorization.js.map +1 -1
- package/build/dist/Server/Services/ApiKeyPermissionService.js +80 -4
- package/build/dist/Server/Services/ApiKeyPermissionService.js.map +1 -1
- package/build/dist/Server/Services/AuditLogService.js +71 -740
- package/build/dist/Server/Services/AuditLogService.js.map +1 -1
- package/build/dist/Server/Services/DatabaseService.js +171 -0
- package/build/dist/Server/Services/DatabaseService.js.map +1 -1
- package/build/dist/Server/Services/DetectionRuleService.js +4 -4
- package/build/dist/Server/Services/DetectionRuleService.js.map +1 -1
- package/build/dist/Server/Services/EnterpriseLicenseService.js +34 -0
- package/build/dist/Server/Services/EnterpriseLicenseService.js.map +1 -1
- package/build/dist/Server/Services/GlobalConfigService.js +63 -0
- package/build/dist/Server/Services/GlobalConfigService.js.map +1 -1
- package/build/dist/Server/Services/MonitorProbeService.js +90 -17
- package/build/dist/Server/Services/MonitorProbeService.js.map +1 -1
- package/build/dist/Server/Services/MonitorService.js +45 -4
- package/build/dist/Server/Services/MonitorService.js.map +1 -1
- package/build/dist/Server/Services/MonitorStatusTimelineService.js +242 -0
- package/build/dist/Server/Services/MonitorStatusTimelineService.js.map +1 -1
- package/build/dist/Server/Services/MonitorTemplateService.js +16 -0
- package/build/dist/Server/Services/MonitorTemplateService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyChildService.js +170 -0
- package/build/dist/Server/Services/OnCallDutyPolicyChildService.js.map +1 -0
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js +2 -2
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleScheduleService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js +2 -2
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleTeamService.js +2 -2
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleTeamService.js.map +1 -1
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleUserService.js +2 -2
- package/build/dist/Server/Services/OnCallDutyPolicyEscalationRuleUserService.js.map +1 -1
- package/build/dist/Server/Services/PayAsYouGoBillingService.js +20 -27
- package/build/dist/Server/Services/PayAsYouGoBillingService.js.map +1 -1
- package/build/dist/Server/Services/ProjectService.js +231 -0
- package/build/dist/Server/Services/ProjectService.js.map +1 -1
- package/build/dist/Server/Services/RumSessionPinService.js +198 -16
- package/build/dist/Server/Services/RumSessionPinService.js.map +1 -1
- package/build/dist/Server/Services/StatusPagePrivateUserService.js +7 -3
- package/build/dist/Server/Services/StatusPagePrivateUserService.js.map +1 -1
- package/build/dist/Server/Services/StatusPageService.js +71 -0
- package/build/dist/Server/Services/StatusPageService.js.map +1 -1
- package/build/dist/Server/Services/TeamMemberService.js +10 -0
- package/build/dist/Server/Services/TeamMemberService.js.map +1 -1
- package/build/dist/Server/Services/TeamPermissionService.js +89 -27
- package/build/dist/Server/Services/TeamPermissionService.js.map +1 -1
- package/build/dist/Server/Services/TeamService.js +9 -0
- package/build/dist/Server/Services/TeamService.js.map +1 -1
- package/build/dist/Server/Services/ThreatIntelFeedService.js +5 -4
- package/build/dist/Server/Services/ThreatIntelFeedService.js.map +1 -1
- package/build/dist/Server/Services/UserService.js +10 -16
- package/build/dist/Server/Services/UserService.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/BasePermission.js +9 -6
- package/build/dist/Server/Types/Database/Permissions/BasePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/CreatePermission.js +10 -0
- package/build/dist/Server/Types/Database/Permissions/CreatePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/EditionPermission.js +154 -14
- package/build/dist/Server/Types/Database/Permissions/EditionPermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/Index.js +60 -6
- package/build/dist/Server/Types/Database/Permissions/Index.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/TablePermission.js +24 -16
- package/build/dist/Server/Types/Database/Permissions/TablePermission.js.map +1 -1
- package/build/dist/Server/Types/Database/Permissions/UpdatePermission.js +17 -0
- package/build/dist/Server/Types/Database/Permissions/UpdatePermission.js.map +1 -1
- package/build/dist/Server/Types/Markdown.js +31 -0
- package/build/dist/Server/Types/Markdown.js.map +1 -1
- package/build/dist/Server/Utils/AI/AIChatPrivacyFilter.js +7 -0
- package/build/dist/Server/Utils/AI/AIChatPrivacyFilter.js.map +1 -1
- package/build/dist/Server/Utils/AI/AIRunPrivacyFilter.js +7 -0
- package/build/dist/Server/Utils/AI/AIRunPrivacyFilter.js.map +1 -1
- package/build/dist/Server/Utils/CommunityEditionSsoReport.js +223 -0
- package/build/dist/Server/Utils/CommunityEditionSsoReport.js.map +1 -0
- package/build/dist/Server/Utils/EditionEnforcement.js +187 -0
- package/build/dist/Server/Utils/EditionEnforcement.js.map +1 -0
- package/build/dist/Server/Utils/FrontendEnvironment.js +31 -2
- package/build/dist/Server/Utils/FrontendEnvironment.js.map +1 -1
- package/build/dist/Server/Utils/InstanceHealth/RedisHealth.js +6 -193
- package/build/dist/Server/Utils/InstanceHealth/RedisHealth.js.map +1 -1
- package/build/dist/Server/Utils/MasterAdminPageAccess.js +39 -0
- package/build/dist/Server/Utils/MasterAdminPageAccess.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/AffectedResourceList.js +96 -0
- package/build/dist/Server/Utils/Monitor/AffectedResourceList.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js +8 -1
- package/build/dist/Server/Utils/Monitor/Criteria/EvaluateOverTime.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js +3 -1
- package/build/dist/Server/Utils/Monitor/MonitorAlert.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +449 -261
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js +3 -1
- package/build/dist/Server/Utils/Monitor/MonitorIncident.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitoringIntervalValidator.js +88 -0
- package/build/dist/Server/Utils/Monitor/MonitoringIntervalValidator.js.map +1 -0
- package/build/dist/Server/Utils/Realtime.js +126 -37
- package/build/dist/Server/Utils/Realtime.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js +7 -25
- package/build/dist/Server/Utils/SecurityEvent/DetectionRuleEvaluator.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOpsSeverityRepair.js +127 -0
- package/build/dist/Server/Utils/SecurityEvent/GoogleSecOpsSeverityRepair.js.map +1 -0
- package/build/dist/Server/Utils/SecurityEvent/Sigma/SigmaClickhouseCompiler.js +1 -1
- package/build/dist/Server/Utils/SecurityEvent/Sigma/SigmaClickhouseCompiler.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.js +3 -2
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelFeedPoller.js.map +1 -1
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.js +4 -8
- package/build/dist/Server/Utils/SecurityEvent/ThreatIntel/ThreatIntelMatcher.js.map +1 -1
- package/build/dist/Server/Utils/Workspace/Slack/Slack.js +331 -11
- package/build/dist/Server/Utils/Workspace/Slack/Slack.js.map +1 -1
- package/build/dist/Types/API/Hostname.js +59 -11
- package/build/dist/Types/API/Hostname.js.map +1 -1
- package/build/dist/Types/BaseDatabase/DatabaseCommonInteractionPropsUtil.js +31 -1
- package/build/dist/Types/BaseDatabase/DatabaseCommonInteractionPropsUtil.js.map +1 -1
- package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js +19 -7
- package/build/dist/Types/Database/AccessControl/ColumnAccessControl.js.map +1 -1
- package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js +19 -7
- package/build/dist/Types/Database/AccessControl/ColumnBillingAccessControl.js.map +1 -1
- package/build/dist/Types/Database/AccessControl/OwnerOnlyColumn.js +13 -6
- package/build/dist/Types/Database/AccessControl/OwnerOnlyColumn.js.map +1 -1
- package/build/dist/Types/Database/CanonicalModelInstance.js +88 -0
- package/build/dist/Types/Database/CanonicalModelInstance.js.map +1 -0
- package/build/dist/Types/Database/TableColumn.js +19 -6
- package/build/dist/Types/Database/TableColumn.js.map +1 -1
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicensePeriods.js +28 -0
- package/build/dist/Types/EnterpriseLicense/EnterpriseLicensePeriods.js.map +1 -0
- package/build/dist/Types/IP/IPv6.js +6 -1
- package/build/dist/Types/IP/IPv6.js.map +1 -1
- package/build/dist/Types/Monitor/MonitorStep.js +5 -0
- package/build/dist/Types/Monitor/MonitorStep.js.map +1 -1
- package/build/dist/Types/Monitor/ProxmoxAlertTemplates.js +1 -1
- package/build/dist/Types/OnCallDutyPolicy/ScheduleTimeline.js +321 -0
- package/build/dist/Types/OnCallDutyPolicy/ScheduleTimeline.js.map +1 -0
- package/build/dist/Types/OnCallDutyPolicy/ScheduleTimelineLayout.js +372 -0
- package/build/dist/Types/OnCallDutyPolicy/ScheduleTimelineLayout.js.map +1 -0
- package/build/dist/Types/Realtime/EventName.js +10 -0
- package/build/dist/Types/Realtime/EventName.js.map +1 -1
- package/build/dist/Types/SecurityEvent/DetectionFindingConstants.js +11 -0
- package/build/dist/Types/SecurityEvent/DetectionFindingConstants.js.map +1 -1
- package/build/dist/Types/SecurityEvent/OcsfSeverity.js +30 -25
- package/build/dist/Types/SecurityEvent/OcsfSeverity.js.map +1 -1
- package/build/dist/Types/SecurityEvent/SigmaRule.js +47 -0
- package/build/dist/Types/SecurityEvent/SigmaRule.js.map +1 -1
- package/build/dist/Types/SecurityEvent/ThreatIntelConstants.js +14 -0
- package/build/dist/Types/SecurityEvent/ThreatIntelConstants.js.map +1 -1
- package/build/dist/Types/StatusPage/UptimeDailyAggregate.js +32 -0
- package/build/dist/Types/StatusPage/UptimeDailyAggregate.js.map +1 -0
- package/build/dist/UI/Components/AttachmentList/EventAttachmentList.js +9 -4
- package/build/dist/UI/Components/AttachmentList/EventAttachmentList.js.map +1 -1
- package/build/dist/UI/Components/Dashboard/DashboardVariableControl.js +10 -2
- package/build/dist/UI/Components/Dashboard/DashboardVariableControl.js.map +1 -1
- package/build/dist/UI/Components/Dropdown/Dropdown.js +5 -1
- package/build/dist/UI/Components/Dropdown/Dropdown.js.map +1 -1
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js +425 -585
- package/build/dist/UI/Components/EditionLabel/EditionLabel.js.map +1 -1
- package/build/dist/UI/Components/EditionLabel/LicenseManager.js +2 -0
- package/build/dist/UI/Components/EditionLabel/LicenseManager.js.map +1 -0
- package/build/dist/UI/Components/EventItem/EventItem.js +2 -2
- package/build/dist/UI/Components/EventItem/EventItem.js.map +1 -1
- package/build/dist/UI/Components/Forms/BasicForm.js +70 -64
- package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
- package/build/dist/UI/Components/Forms/CollapsibleFormSection.js +27 -0
- package/build/dist/UI/Components/Forms/CollapsibleFormSection.js.map +1 -0
- package/build/dist/UI/Components/Forms/Fields/FormField.js +10 -7
- package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
- package/build/dist/UI/Components/Forms/FormSummary.js +7 -0
- package/build/dist/UI/Components/Forms/FormSummary.js.map +1 -1
- package/build/dist/UI/Components/Graphs/DayUptimeGraph.js +90 -17
- package/build/dist/UI/Components/Graphs/DayUptimeGraph.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js +0 -0
- package/build/dist/UI/Components/Markdown.tsx/MarkdownConverters.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +2 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/SessionAwareImage.js +84 -0
- package/build/dist/UI/Components/Markdown.tsx/SessionAwareImage.js.map +1 -0
- package/build/dist/UI/Components/ModelList/ModelList.js +4 -1
- package/build/dist/UI/Components/ModelList/ModelList.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js +14 -1
- package/build/dist/UI/Components/ModelTable/BaseModelTable.js.map +1 -1
- package/build/dist/UI/Components/ModelTable/TableView.js +1 -1
- package/build/dist/UI/Components/ModelTable/TableView.js.map +1 -1
- package/build/dist/UI/Components/MonitorGraphs/Uptime.js +42 -1
- package/build/dist/UI/Components/MonitorGraphs/Uptime.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js +2 -2
- package/build/dist/UI/Components/TelemetryViewer/TelemetryViewer.js.map +1 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js +8 -1
- package/build/dist/UI/Components/TelemetryViewer/components/TelemetryHistogram.js.map +1 -1
- package/build/dist/UI/Components/Tooltip/Tooltip.js +2 -1
- package/build/dist/UI/Components/Tooltip/Tooltip.js.map +1 -1
- package/build/dist/UI/Utils/API/API.js +143 -19
- package/build/dist/UI/Utils/API/API.js.map +1 -1
- package/build/dist/UI/Utils/AnalyticsModelAPI/AnalyticsModelAPI.js +21 -7
- package/build/dist/UI/Utils/AnalyticsModelAPI/AnalyticsModelAPI.js.map +1 -1
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js +26 -9
- package/build/dist/UI/Utils/ModelAPI/ModelAPI.js.map +1 -1
- package/build/dist/UI/Utils/Navigation.js +8 -0
- package/build/dist/UI/Utils/Navigation.js.map +1 -1
- package/build/dist/UI/Utils/OpenAuthenticatedUrl.js +92 -0
- package/build/dist/UI/Utils/OpenAuthenticatedUrl.js.map +1 -0
- package/build/dist/UI/Utils/Realtime.js +120 -15
- package/build/dist/UI/Utils/Realtime.js.map +1 -1
- package/build/dist/Utils/API.js +13 -5
- package/build/dist/Utils/API.js.map +1 -1
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js +6 -2
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseUsage.js.map +1 -1
- package/build/dist/Utils/HostAddressUtil.js +80 -0
- package/build/dist/Utils/HostAddressUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/MonitorDestinationUtil.js +127 -0
- package/build/dist/Utils/Monitor/MonitorDestinationUtil.js.map +1 -0
- package/build/dist/Utils/Monitor/MonitoringIntervalUtil.js +374 -0
- package/build/dist/Utils/Monitor/MonitoringIntervalUtil.js.map +1 -0
- package/build/dist/Utils/SecurityEvent/GoogleSecOpsAlertNormalizer.js +123 -6
- package/build/dist/Utils/SecurityEvent/GoogleSecOpsAlertNormalizer.js.map +1 -1
- package/build/dist/Utils/SecurityEvent/Sigma/SigmaRuleParser.js +4 -18
- package/build/dist/Utils/SecurityEvent/Sigma/SigmaRuleParser.js.map +1 -1
- package/build/dist/Utils/Slo/SloBurnRateTemplate.js +2 -2
- package/build/dist/Utils/StatusPage/UptimeDailyAggregateUtil.js +148 -0
- package/build/dist/Utils/StatusPage/UptimeDailyAggregateUtil.js.map +1 -0
- package/jest.config.json +3 -1
- package/package.json +1 -1
- package/test-setup.sh +103 -34
- package/tsconfig.json +13 -0
- package/Server/API/EnterpriseLicenseAPI.ts +0 -925
- package/Server/API/TeamComplianceAPI.ts +0 -158
- package/Server/Middleware/SCIMAuthorization.ts +0 -141
- package/Server/Services/TeamComplianceService.ts +0 -733
- package/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.ts +0 -186
- package/Server/Utils/InstanceHealth/PostgresHealth.ts +0 -286
- package/Tests/App/AdminDashboard/EnterpriseLicenseInstanceActivity.test.tsx +0 -451
- package/Tests/App/Dashboard/AuditLogsTable.test.tsx +0 -598
- package/Tests/App/Dashboard/SecurityEventsSideMenu.test.tsx +0 -247
- package/Tests/App/Dashboard/SecurityEventsTableColumns.test.tsx +0 -382
- package/Tests/Server/API/EnterpriseLicenseReportUserCount.test.ts +0 -1851
- package/Tests/Server/Middleware/SCIMAuthorization.test.ts +0 -525
- package/Tests/Server/Services/TeamComplianceServiceBehaviour.test.ts +0 -1845
- package/Tests/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.test.ts +0 -495
- package/Tests/Server/Utils/InstanceHealth/PostgresHealth.test.ts +0 -337
- package/Tests/Utils/EnterpriseLicenseSeats.test.ts +0 -576
- package/Tests/Utils/EnterpriseLicenseSync.test.ts +0 -568
- package/Utils/EnterpriseLicense/EnterpriseLicenseSeats.ts +0 -287
- package/Utils/EnterpriseLicense/EnterpriseLicenseSync.ts +0 -244
- package/build/dist/Server/API/EnterpriseLicenseAPI.js +0 -646
- package/build/dist/Server/API/EnterpriseLicenseAPI.js.map +0 -1
- package/build/dist/Server/API/TeamComplianceAPI.js +0 -111
- package/build/dist/Server/API/TeamComplianceAPI.js.map +0 -1
- package/build/dist/Server/Middleware/SCIMAuthorization.js +0 -124
- package/build/dist/Server/Middleware/SCIMAuthorization.js.map +0 -1
- package/build/dist/Server/Services/TeamComplianceService.js +0 -537
- package/build/dist/Server/Services/TeamComplianceService.js.map +0 -1
- package/build/dist/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.js +0 -145
- package/build/dist/Server/Utils/EnterpriseLicense/EnterpriseLicenseSeatUtil.js.map +0 -1
- package/build/dist/Server/Utils/InstanceHealth/PostgresHealth.js +0 -194
- package/build/dist/Server/Utils/InstanceHealth/PostgresHealth.js.map +0 -1
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js +0 -168
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSeats.js.map +0 -1
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSync.js +0 -174
- package/build/dist/Utils/EnterpriseLicense/EnterpriseLicenseSync.js.map +0 -1
|
@@ -28,9 +28,12 @@ import StatusPageResourceService from "../Services/StatusPageResourceService";
|
|
|
28
28
|
import StatusPageService, {
|
|
29
29
|
Service as StatusPageServiceType,
|
|
30
30
|
} from "../Services/StatusPageService";
|
|
31
|
+
import { UptimeDailyAggregate } from "../../Types/StatusPage/UptimeDailyAggregate";
|
|
32
|
+
import UptimeDailyAggregateUtil from "../../Utils/StatusPage/UptimeDailyAggregateUtil";
|
|
31
33
|
import StatusPageSsoService from "../Services/StatusPageSsoService";
|
|
32
34
|
import StatusPageOidcService from "../Services/StatusPageOidcService";
|
|
33
35
|
import StatusPageSubscriberService from "../Services/StatusPageSubscriberService";
|
|
36
|
+
import ModelPermission from "../Types/Database/Permissions/Index";
|
|
34
37
|
import Query from "../Types/Database/Query";
|
|
35
38
|
import QueryHelper from "../Types/Database/QueryHelper";
|
|
36
39
|
import Select from "../Types/Database/Select";
|
|
@@ -39,6 +42,7 @@ import {
|
|
|
39
42
|
ExpressResponse,
|
|
40
43
|
NextFunction,
|
|
41
44
|
} from "../Utils/Express";
|
|
45
|
+
import EditionEnforcement from "../Utils/EditionEnforcement";
|
|
42
46
|
import logger, { getLogAttributesFromRequest } from "../Utils/Logger";
|
|
43
47
|
import {
|
|
44
48
|
SEARCH_ENGINE_INDEXING_FLAG_NAME,
|
|
@@ -46,8 +50,10 @@ import {
|
|
|
46
50
|
} from "../../Types/StatusPage/SearchEngineIndexing";
|
|
47
51
|
import Response from "../Utils/Response";
|
|
48
52
|
import BaseAPI from "./BaseAPI";
|
|
53
|
+
import CommonAPI from "./CommonAPI";
|
|
49
54
|
import BaseModel from "../../Models/DatabaseModels/DatabaseBaseModel/DatabaseBaseModel";
|
|
50
55
|
import ArrayUtil from "../../Utils/Array";
|
|
56
|
+
import DatabaseCommonInteractionProps from "../../Types/BaseDatabase/DatabaseCommonInteractionProps";
|
|
51
57
|
import SortOrder from "../../Types/BaseDatabase/SortOrder";
|
|
52
58
|
import { LIMIT_PER_PROJECT } from "../../Types/Database/LimitMax";
|
|
53
59
|
import OneUptimeDate from "../../Types/Date";
|
|
@@ -55,6 +61,7 @@ import Dictionary from "../../Types/Dictionary";
|
|
|
55
61
|
import Email from "../../Types/Email";
|
|
56
62
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
57
63
|
import NotAuthenticatedException from "../../Types/Exception/NotAuthenticatedException";
|
|
64
|
+
import NotAuthorizedException from "../../Types/Exception/NotAuthorizedException";
|
|
58
65
|
import NotFoundException from "../../Types/Exception/NotFoundException";
|
|
59
66
|
import { JSONArray, JSONObject } from "../../Types/JSON";
|
|
60
67
|
import JSONFunctions from "../../Types/JSONFunctions";
|
|
@@ -196,13 +203,63 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
196
203
|
this.overviewResponseInFlight.clear();
|
|
197
204
|
}
|
|
198
205
|
|
|
206
|
+
/*
|
|
207
|
+
* Holding one of StatusPage's update roles is not the same as being allowed
|
|
208
|
+
* to update a given page: team block rows, label-restricted grants and
|
|
209
|
+
* Owned-scoped grants all narrow it. Apply the checks a CRUD update of this
|
|
210
|
+
* page would run - block and label rules against the loaded page, then the
|
|
211
|
+
* query narrowing (tenant, labels, Owned scope) - and require the page to
|
|
212
|
+
* survive them. `statusPage` must have been loaded with its labels.
|
|
213
|
+
*/
|
|
214
|
+
private static async assertCanUpdateStatusPage(data: {
|
|
215
|
+
statusPage: StatusPage;
|
|
216
|
+
projectId: ObjectID;
|
|
217
|
+
props: DatabaseCommonInteractionProps;
|
|
218
|
+
}): Promise<void> {
|
|
219
|
+
await ModelPermission.checkUpdatePermissionByModel({
|
|
220
|
+
modelType: StatusPage,
|
|
221
|
+
fetchModelWithAccessControlIds: async (): Promise<StatusPage> => {
|
|
222
|
+
return data.statusPage;
|
|
223
|
+
},
|
|
224
|
+
props: data.props,
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
const permittedQuery: Query<StatusPage> =
|
|
228
|
+
await ModelPermission.checkUpdateQueryPermissions(
|
|
229
|
+
StatusPage,
|
|
230
|
+
{
|
|
231
|
+
_id: data.statusPage.id!,
|
|
232
|
+
projectId: data.projectId,
|
|
233
|
+
},
|
|
234
|
+
{},
|
|
235
|
+
data.props,
|
|
236
|
+
);
|
|
237
|
+
|
|
238
|
+
const permittedStatusPage: StatusPage | null =
|
|
239
|
+
await StatusPageService.findOneBy({
|
|
240
|
+
query: permittedQuery,
|
|
241
|
+
select: {
|
|
242
|
+
_id: true,
|
|
243
|
+
},
|
|
244
|
+
props: {
|
|
245
|
+
isRoot: true,
|
|
246
|
+
},
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
if (!permittedStatusPage) {
|
|
250
|
+
throw new NotAuthorizedException(
|
|
251
|
+
"You do not have permission to send this status page's report.",
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
|
|
199
256
|
public constructor() {
|
|
200
257
|
super(StatusPage, StatusPageService);
|
|
201
258
|
|
|
202
259
|
// get title, description of the page. This is used for SEO.
|
|
203
260
|
this.router.get(
|
|
204
261
|
`${new this.entityType().getCrudApiPath()?.toString()}/seo/:statusPageIdOrDomain`,
|
|
205
|
-
UserMiddleware.
|
|
262
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
206
263
|
async (req: ExpressRequest, res: ExpressResponse) => {
|
|
207
264
|
const statusPageIdOrDomain: string = req.params[
|
|
208
265
|
"statusPageIdOrDomain"
|
|
@@ -430,7 +487,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
430
487
|
`${new this.entityType()
|
|
431
488
|
.getCrudApiPath()
|
|
432
489
|
?.toString()}/incident-public-note/attachment/:statusPageId/:incidentId/:noteId/:fileId`,
|
|
433
|
-
UserMiddleware.
|
|
490
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
434
491
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
435
492
|
try {
|
|
436
493
|
await this.getIncidentPublicNoteAttachment(req, res);
|
|
@@ -444,7 +501,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
444
501
|
`${new this.entityType()
|
|
445
502
|
.getCrudApiPath()
|
|
446
503
|
?.toString()}/incident-episode-public-note/attachment/:statusPageId/:episodeId/:noteId/:fileId`,
|
|
447
|
-
UserMiddleware.
|
|
504
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
448
505
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
449
506
|
try {
|
|
450
507
|
await this.getIncidentEpisodePublicNoteAttachment(req, res);
|
|
@@ -458,7 +515,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
458
515
|
`${new this.entityType()
|
|
459
516
|
.getCrudApiPath()
|
|
460
517
|
?.toString()}/incident/postmortem/attachment/:statusPageId/:incidentId/:fileId`,
|
|
461
|
-
UserMiddleware.
|
|
518
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
462
519
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
463
520
|
try {
|
|
464
521
|
await this.getIncidentPostmortemAttachment(req, res);
|
|
@@ -472,7 +529,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
472
529
|
`${new this.entityType()
|
|
473
530
|
.getCrudApiPath()
|
|
474
531
|
?.toString()}/scheduled-maintenance-public-note/attachment/:statusPageId/:scheduledMaintenanceId/:noteId/:fileId`,
|
|
475
|
-
UserMiddleware.
|
|
532
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
476
533
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
477
534
|
try {
|
|
478
535
|
await this.getScheduledMaintenancePublicNoteAttachment(req, res);
|
|
@@ -486,7 +543,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
486
543
|
`${new this.entityType()
|
|
487
544
|
.getCrudApiPath()
|
|
488
545
|
?.toString()}/status-page-announcement/attachment/:statusPageId/:announcementId/:fileId`,
|
|
489
|
-
UserMiddleware.
|
|
546
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
490
547
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
491
548
|
try {
|
|
492
549
|
await this.getStatusPageAnnouncementAttachment(req, res);
|
|
@@ -795,16 +852,74 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
795
852
|
},
|
|
796
853
|
);
|
|
797
854
|
|
|
855
|
+
/*
|
|
856
|
+
* Sends the status page's report to an address the caller chooses, so it
|
|
857
|
+
* is gated like editing the status page: an authenticated member of the
|
|
858
|
+
* project that owns it who could update this particular page.
|
|
859
|
+
*/
|
|
798
860
|
this.router.post(
|
|
799
861
|
`${new this.entityType().getCrudApiPath()?.toString()}/test-email-report`,
|
|
800
862
|
UserMiddleware.getUserMiddleware,
|
|
863
|
+
UserMiddleware.requireUserAuthentication,
|
|
801
864
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
802
865
|
try {
|
|
866
|
+
/*
|
|
867
|
+
* This route acts on one page in one project, and the permission
|
|
868
|
+
* checks below must be evaluated for that single tenant, so the
|
|
869
|
+
* request is never treated as multi-tenant.
|
|
870
|
+
*/
|
|
871
|
+
const props: DatabaseCommonInteractionProps = {
|
|
872
|
+
...(await CommonAPI.getDatabaseCommonInteractionProps(req)),
|
|
873
|
+
isMultiTenantRequest: false,
|
|
874
|
+
};
|
|
875
|
+
const projectId: ObjectID =
|
|
876
|
+
CommonAPI.assertAuthenticatedProjectMember(props);
|
|
877
|
+
CommonAPI.assertPermittedInProject({
|
|
878
|
+
databaseProps: props,
|
|
879
|
+
allowedPermissions: new StatusPage().getUpdatePermissions(),
|
|
880
|
+
errorMessage:
|
|
881
|
+
"You do not have permission to send this status page's report.",
|
|
882
|
+
});
|
|
883
|
+
|
|
884
|
+
if (
|
|
885
|
+
!req.body["statusPageId"] ||
|
|
886
|
+
!ObjectID.isValidUUID(req.body["statusPageId"].toString())
|
|
887
|
+
) {
|
|
888
|
+
throw new BadDataException("A valid statusPageId is required.");
|
|
889
|
+
}
|
|
890
|
+
|
|
803
891
|
const email: Email = new Email(req.body["email"] as string);
|
|
804
892
|
const statusPageId: ObjectID = new ObjectID(
|
|
805
893
|
req.body["statusPageId"].toString() as string,
|
|
806
894
|
);
|
|
807
895
|
|
|
896
|
+
const statusPage: StatusPage | null =
|
|
897
|
+
await StatusPageService.findOneById({
|
|
898
|
+
id: statusPageId,
|
|
899
|
+
select: {
|
|
900
|
+
_id: true,
|
|
901
|
+
projectId: true,
|
|
902
|
+
labels: {
|
|
903
|
+
_id: true,
|
|
904
|
+
name: true,
|
|
905
|
+
},
|
|
906
|
+
},
|
|
907
|
+
props: {
|
|
908
|
+
isRoot: true,
|
|
909
|
+
},
|
|
910
|
+
});
|
|
911
|
+
|
|
912
|
+
CommonAPI.assertResourceBelongsToProject({
|
|
913
|
+
resourceProjectId: statusPage?.projectId,
|
|
914
|
+
projectId,
|
|
915
|
+
});
|
|
916
|
+
|
|
917
|
+
await StatusPageAPI.assertCanUpdateStatusPage({
|
|
918
|
+
statusPage: statusPage!,
|
|
919
|
+
projectId,
|
|
920
|
+
props,
|
|
921
|
+
});
|
|
922
|
+
|
|
808
923
|
await StatusPageService.sendEmailReport({
|
|
809
924
|
email: email,
|
|
810
925
|
statusPageId,
|
|
@@ -819,7 +934,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
819
934
|
|
|
820
935
|
this.router.post(
|
|
821
936
|
`${new this.entityType().getCrudApiPath()?.toString()}/domain`,
|
|
822
|
-
UserMiddleware.
|
|
937
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
823
938
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
824
939
|
try {
|
|
825
940
|
if (!req.body["domain"]) {
|
|
@@ -863,7 +978,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
863
978
|
`${new this.entityType()
|
|
864
979
|
.getCrudApiPath()
|
|
865
980
|
?.toString()}/master-page/:statusPageId`,
|
|
866
|
-
UserMiddleware.
|
|
981
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
867
982
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
868
983
|
try {
|
|
869
984
|
const statusPageIdParam: string = req.params[
|
|
@@ -932,16 +1047,24 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
932
1047
|
select.footerHTML = true;
|
|
933
1048
|
}
|
|
934
1049
|
|
|
1050
|
+
/*
|
|
1051
|
+
* The status page app offers SSO sign-in when this is non-zero.
|
|
1052
|
+
* While SSO is not active - the Community Edition serves no status
|
|
1053
|
+
* page SSO routes, and on a lapsed Enterprise license they refuse -
|
|
1054
|
+
* it reports none rather than send visitors into a dead end.
|
|
1055
|
+
*/
|
|
935
1056
|
const hasEnabledSSO: PositiveNumber =
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
1057
|
+
EditionEnforcement.areSsoRoutesServed()
|
|
1058
|
+
? await StatusPageSsoService.countBy({
|
|
1059
|
+
query: {
|
|
1060
|
+
isEnabled: true,
|
|
1061
|
+
statusPageId: objectId,
|
|
1062
|
+
},
|
|
1063
|
+
props: {
|
|
1064
|
+
isRoot: true,
|
|
1065
|
+
},
|
|
1066
|
+
})
|
|
1067
|
+
: new PositiveNumber(0);
|
|
945
1068
|
|
|
946
1069
|
const item: StatusPage | null = await this.service.findOneById({
|
|
947
1070
|
id: objectId,
|
|
@@ -969,6 +1092,19 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
969
1092
|
delete item.footerHTML;
|
|
970
1093
|
}
|
|
971
1094
|
|
|
1095
|
+
/*
|
|
1096
|
+
* The status page app forces SSO sign-in from this flag. Report
|
|
1097
|
+
* the EFFECTIVE requirement: while SSO is not active (the
|
|
1098
|
+
* Community Edition, or a lapsed Enterprise license) it is not
|
|
1099
|
+
* enforced and password sign-in works, so the page must not send
|
|
1100
|
+
* visitors into an SSO flow that does not exist or refuses. The
|
|
1101
|
+
* stored value is untouched and applies again as soon as SSO is
|
|
1102
|
+
* active.
|
|
1103
|
+
*/
|
|
1104
|
+
if (!EditionEnforcement.isSsoEnforced()) {
|
|
1105
|
+
item.requireSsoForLogin = false;
|
|
1106
|
+
}
|
|
1107
|
+
|
|
972
1108
|
const footerLinks: Array<StatusPageFooterLink> =
|
|
973
1109
|
await StatusPageFooterLinkService.findBy({
|
|
974
1110
|
query: {
|
|
@@ -1046,7 +1182,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
1046
1182
|
PublicDashboardRateLimit.getMiddleware(
|
|
1047
1183
|
PublicDashboardRateLimitBucket.StatusPageMasterPassword,
|
|
1048
1184
|
),
|
|
1049
|
-
UserMiddleware.
|
|
1185
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1050
1186
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
1051
1187
|
try {
|
|
1052
1188
|
if (!req.params["statusPageId"]) {
|
|
@@ -1120,30 +1256,37 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
1120
1256
|
|
|
1121
1257
|
this.router.post(
|
|
1122
1258
|
`${new this.entityType().getCrudApiPath()?.toString()}/sso/:statusPageId`,
|
|
1123
|
-
UserMiddleware.
|
|
1259
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1124
1260
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
1125
1261
|
try {
|
|
1126
1262
|
const objectId: ObjectID = new ObjectID(
|
|
1127
1263
|
req.params["statusPageId"] as string,
|
|
1128
1264
|
);
|
|
1129
1265
|
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1266
|
+
/*
|
|
1267
|
+
* Only list providers a visitor can actually sign in with: the
|
|
1268
|
+
* Community Edition serves no status page SSO login routes.
|
|
1269
|
+
*/
|
|
1270
|
+
const sso: Array<StatusPageSSO> =
|
|
1271
|
+
EditionEnforcement.areSsoRoutesServed()
|
|
1272
|
+
? await StatusPageSsoService.findBy({
|
|
1273
|
+
query: {
|
|
1274
|
+
statusPageId: objectId,
|
|
1275
|
+
isEnabled: true,
|
|
1276
|
+
},
|
|
1277
|
+
select: {
|
|
1278
|
+
signOnURL: true,
|
|
1279
|
+
name: true,
|
|
1280
|
+
description: true,
|
|
1281
|
+
_id: true,
|
|
1282
|
+
},
|
|
1283
|
+
limit: LIMIT_PER_PROJECT,
|
|
1284
|
+
skip: 0,
|
|
1285
|
+
props: {
|
|
1286
|
+
isRoot: true,
|
|
1287
|
+
},
|
|
1288
|
+
})
|
|
1289
|
+
: [];
|
|
1147
1290
|
|
|
1148
1291
|
return Response.sendEntityArrayResponse(
|
|
1149
1292
|
req,
|
|
@@ -1160,30 +1303,36 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
1160
1303
|
|
|
1161
1304
|
this.router.post(
|
|
1162
1305
|
`${new this.entityType().getCrudApiPath()?.toString()}/oidc/:statusPageId`,
|
|
1163
|
-
UserMiddleware.
|
|
1306
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1164
1307
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
1165
1308
|
try {
|
|
1166
1309
|
const objectId: ObjectID = new ObjectID(
|
|
1167
1310
|
req.params["statusPageId"] as string,
|
|
1168
1311
|
);
|
|
1169
1312
|
|
|
1313
|
+
/*
|
|
1314
|
+
* Only list providers a visitor can actually sign in with: the
|
|
1315
|
+
* Community Edition serves no status page OIDC login routes.
|
|
1316
|
+
*/
|
|
1170
1317
|
const oidc: Array<StatusPageOIDC> =
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1318
|
+
EditionEnforcement.areSsoRoutesServed()
|
|
1319
|
+
? await StatusPageOidcService.findBy({
|
|
1320
|
+
query: {
|
|
1321
|
+
statusPageId: objectId,
|
|
1322
|
+
isEnabled: true,
|
|
1323
|
+
},
|
|
1324
|
+
select: {
|
|
1325
|
+
name: true,
|
|
1326
|
+
description: true,
|
|
1327
|
+
_id: true,
|
|
1328
|
+
},
|
|
1329
|
+
limit: LIMIT_PER_PROJECT,
|
|
1330
|
+
skip: 0,
|
|
1331
|
+
props: {
|
|
1332
|
+
isRoot: true,
|
|
1333
|
+
},
|
|
1334
|
+
})
|
|
1335
|
+
: [];
|
|
1187
1336
|
|
|
1188
1337
|
return Response.sendEntityArrayResponse(
|
|
1189
1338
|
req,
|
|
@@ -1203,7 +1352,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
1203
1352
|
`${new this.entityType()
|
|
1204
1353
|
.getCrudApiPath()
|
|
1205
1354
|
?.toString()}/resources/:statusPageId`,
|
|
1206
|
-
UserMiddleware.
|
|
1355
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1207
1356
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
1208
1357
|
try {
|
|
1209
1358
|
const statusPageId: ObjectID = new ObjectID(
|
|
@@ -1254,7 +1403,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
1254
1403
|
`${new this.entityType()
|
|
1255
1404
|
.getCrudApiPath()
|
|
1256
1405
|
?.toString()}/uptime/:statusPageId`,
|
|
1257
|
-
UserMiddleware.
|
|
1406
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1258
1407
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
1259
1408
|
try {
|
|
1260
1409
|
// This reosurce ID can be of a status page resource OR a status page group.
|
|
@@ -1698,7 +1847,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
1698
1847
|
|
|
1699
1848
|
this.router.post(
|
|
1700
1849
|
overviewApiPath,
|
|
1701
|
-
UserMiddleware.
|
|
1850
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1702
1851
|
overviewHandler,
|
|
1703
1852
|
);
|
|
1704
1853
|
|
|
@@ -1709,7 +1858,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
1709
1858
|
*/
|
|
1710
1859
|
this.router.get(
|
|
1711
1860
|
overviewApiPath,
|
|
1712
|
-
UserMiddleware.
|
|
1861
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1713
1862
|
overviewHandler,
|
|
1714
1863
|
);
|
|
1715
1864
|
|
|
@@ -1717,7 +1866,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
1717
1866
|
`${new this.entityType()
|
|
1718
1867
|
.getCrudApiPath()
|
|
1719
1868
|
?.toString()}/update-subscription/:statusPageId/:subscriberId`,
|
|
1720
|
-
UserMiddleware.
|
|
1869
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1721
1870
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
1722
1871
|
try {
|
|
1723
1872
|
await this.subscribeToStatusPage(req);
|
|
@@ -1732,7 +1881,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
1732
1881
|
`${new this.entityType()
|
|
1733
1882
|
.getCrudApiPath()
|
|
1734
1883
|
?.toString()}/get-subscription/:statusPageId/:subscriberId`,
|
|
1735
|
-
UserMiddleware.
|
|
1884
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1736
1885
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
1737
1886
|
try {
|
|
1738
1887
|
const subscriber: StatusPageSubscriber =
|
|
@@ -1754,7 +1903,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
1754
1903
|
`${new this.entityType()
|
|
1755
1904
|
.getCrudApiPath()
|
|
1756
1905
|
?.toString()}/subscribe/:statusPageId`,
|
|
1757
|
-
UserMiddleware.
|
|
1906
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1758
1907
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
1759
1908
|
try {
|
|
1760
1909
|
await this.subscribeToStatusPage(req);
|
|
@@ -1770,7 +1919,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
1770
1919
|
`${new this.entityType()
|
|
1771
1920
|
.getCrudApiPath()
|
|
1772
1921
|
?.toString()}/manage-subscription/:statusPageId`,
|
|
1773
|
-
UserMiddleware.
|
|
1922
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1774
1923
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
1775
1924
|
try {
|
|
1776
1925
|
await this.manageExistingSubscription(req);
|
|
@@ -1821,13 +1970,13 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
1821
1970
|
|
|
1822
1971
|
this.router.post(
|
|
1823
1972
|
incidentsListApiPath,
|
|
1824
|
-
UserMiddleware.
|
|
1973
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1825
1974
|
incidentsListHandler,
|
|
1826
1975
|
);
|
|
1827
1976
|
|
|
1828
1977
|
this.router.get(
|
|
1829
1978
|
incidentsListApiPath,
|
|
1830
|
-
UserMiddleware.
|
|
1979
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1831
1980
|
incidentsListHandler,
|
|
1832
1981
|
);
|
|
1833
1982
|
|
|
@@ -1872,13 +2021,13 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
1872
2021
|
|
|
1873
2022
|
this.router.post(
|
|
1874
2023
|
scheduledMaintenanceEventsListApiPath,
|
|
1875
|
-
UserMiddleware.
|
|
2024
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1876
2025
|
scheduledMaintenanceEventsListHandler,
|
|
1877
2026
|
);
|
|
1878
2027
|
|
|
1879
2028
|
this.router.get(
|
|
1880
2029
|
scheduledMaintenanceEventsListApiPath,
|
|
1881
|
-
UserMiddleware.
|
|
2030
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1882
2031
|
scheduledMaintenanceEventsListHandler,
|
|
1883
2032
|
);
|
|
1884
2033
|
|
|
@@ -1922,13 +2071,13 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
1922
2071
|
|
|
1923
2072
|
this.router.post(
|
|
1924
2073
|
announcementsListApiPath,
|
|
1925
|
-
UserMiddleware.
|
|
2074
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1926
2075
|
announcementsListHandler,
|
|
1927
2076
|
);
|
|
1928
2077
|
|
|
1929
2078
|
this.router.get(
|
|
1930
2079
|
announcementsListApiPath,
|
|
1931
|
-
UserMiddleware.
|
|
2080
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1932
2081
|
announcementsListHandler,
|
|
1933
2082
|
);
|
|
1934
2083
|
|
|
@@ -1936,7 +2085,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
1936
2085
|
`${new this.entityType()
|
|
1937
2086
|
.getCrudApiPath()
|
|
1938
2087
|
?.toString()}/incidents/:statusPageIdOrDomain/:incidentId`,
|
|
1939
|
-
UserMiddleware.
|
|
2088
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1940
2089
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
1941
2090
|
try {
|
|
1942
2091
|
const objectId: ObjectID = await resolveStatusPageIdOrThrow(
|
|
@@ -1964,7 +2113,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
1964
2113
|
`${new this.entityType()
|
|
1965
2114
|
.getCrudApiPath()
|
|
1966
2115
|
?.toString()}/scheduled-maintenance-events/:statusPageIdOrDomain/:scheduledMaintenanceId`,
|
|
1967
|
-
UserMiddleware.
|
|
2116
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1968
2117
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
1969
2118
|
try {
|
|
1970
2119
|
const objectId: ObjectID = await resolveStatusPageIdOrThrow(
|
|
@@ -1993,7 +2142,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
1993
2142
|
`${new this.entityType()
|
|
1994
2143
|
.getCrudApiPath()
|
|
1995
2144
|
?.toString()}/announcements/:statusPageIdOrDomain/:announcementId`,
|
|
1996
|
-
UserMiddleware.
|
|
2145
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
1997
2146
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
1998
2147
|
try {
|
|
1999
2148
|
const objectId: ObjectID = await resolveStatusPageIdOrThrow(
|
|
@@ -2023,7 +2172,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
2023
2172
|
`${new this.entityType()
|
|
2024
2173
|
.getCrudApiPath()
|
|
2025
2174
|
?.toString()}/episodes/:statusPageIdOrDomain`,
|
|
2026
|
-
UserMiddleware.
|
|
2175
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
2027
2176
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
2028
2177
|
try {
|
|
2029
2178
|
const objectId: ObjectID = await resolveStatusPageIdOrThrow(
|
|
@@ -2047,7 +2196,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
2047
2196
|
`${new this.entityType()
|
|
2048
2197
|
.getCrudApiPath()
|
|
2049
2198
|
?.toString()}/episodes/:statusPageIdOrDomain/:episodeId`,
|
|
2050
|
-
UserMiddleware.
|
|
2199
|
+
UserMiddleware.getPublicRouteUserMiddleware,
|
|
2051
2200
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
2052
2201
|
try {
|
|
2053
2202
|
const objectId: ObjectID = await resolveStatusPageIdOrThrow(
|
|
@@ -3508,6 +3657,23 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
3508
3657
|
return statusPageSubscriber;
|
|
3509
3658
|
}
|
|
3510
3659
|
|
|
3660
|
+
private serializeIncidentsForStatusPage(
|
|
3661
|
+
incidents: Array<Incident>,
|
|
3662
|
+
): JSONArray {
|
|
3663
|
+
return incidents.map((incident: Incident): JSONObject => {
|
|
3664
|
+
const incidentJson: JSONObject = BaseModel.toJSON(incident, Incident);
|
|
3665
|
+
|
|
3666
|
+
// Enforce postmortem visibility before sending or caching status-page JSON.
|
|
3667
|
+
if (incident.showPostmortemOnStatusPage !== true) {
|
|
3668
|
+
delete incidentJson["postmortemNote"];
|
|
3669
|
+
delete incidentJson["postmortemPostedAt"];
|
|
3670
|
+
delete incidentJson["postmortemAttachments"];
|
|
3671
|
+
}
|
|
3672
|
+
|
|
3673
|
+
return incidentJson;
|
|
3674
|
+
});
|
|
3675
|
+
}
|
|
3676
|
+
|
|
3511
3677
|
@CaptureSpan()
|
|
3512
3678
|
public async getIncidents(
|
|
3513
3679
|
statusPageId: ObjectID,
|
|
@@ -3771,7 +3937,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
3771
3937
|
IncidentPublicNote,
|
|
3772
3938
|
),
|
|
3773
3939
|
incidentStates: BaseModel.toJSONArray(incidentStates, IncidentState),
|
|
3774
|
-
incidents:
|
|
3940
|
+
incidents: this.serializeIncidentsForStatusPage(incidents),
|
|
3775
3941
|
statusPageResources: BaseModel.toJSONArray(
|
|
3776
3942
|
statusPageResources,
|
|
3777
3943
|
StatusPageResource,
|
|
@@ -4270,6 +4436,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
4270
4436
|
statusPageResources: StatusPageResource[];
|
|
4271
4437
|
monitorStatuses: MonitorStatus[];
|
|
4272
4438
|
monitorStatusTimelines: MonitorStatusTimeline[];
|
|
4439
|
+
uptimeDailyAggregate: UptimeDailyAggregate;
|
|
4273
4440
|
monitorGroupCurrentStatuses: Dictionary<ObjectID>;
|
|
4274
4441
|
statusPageGroups: StatusPageGroup[];
|
|
4275
4442
|
statusPage: StatusPage;
|
|
@@ -4549,6 +4716,22 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
4549
4716
|
endDate: endDateForMonitorTimeline,
|
|
4550
4717
|
});
|
|
4551
4718
|
|
|
4719
|
+
/*
|
|
4720
|
+
* What the uptime bars are actually painted from.
|
|
4721
|
+
*
|
|
4722
|
+
* `monitorStatusTimelines` above stays in the response - it is documented
|
|
4723
|
+
* public API and the E2E helpers read it for current status - but it must
|
|
4724
|
+
* NOT drive the bars. It is capped at LIMIT_MAX across every monitor on
|
|
4725
|
+
* the page and sorted newest-first, so on a page with churny monitors it
|
|
4726
|
+
* returns a few recent days and silently drops the rest.
|
|
4727
|
+
*/
|
|
4728
|
+
const uptimeDailyAggregate: UptimeDailyAggregate =
|
|
4729
|
+
await StatusPageService.getUptimeDailyAggregateForStatusPage({
|
|
4730
|
+
monitorIds: monitorsOnStatusPageForTimeline,
|
|
4731
|
+
startDate: startDateForMonitorTimeline,
|
|
4732
|
+
endDate: endDateForMonitorTimeline,
|
|
4733
|
+
});
|
|
4734
|
+
|
|
4552
4735
|
// return everything.
|
|
4553
4736
|
|
|
4554
4737
|
return {
|
|
@@ -4557,6 +4740,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
4557
4740
|
monitorGroupCurrentStatuses,
|
|
4558
4741
|
statusPageGroups: groups,
|
|
4559
4742
|
monitorStatusTimelines,
|
|
4743
|
+
uptimeDailyAggregate,
|
|
4560
4744
|
statusPage,
|
|
4561
4745
|
monitorsOnStatusPage,
|
|
4562
4746
|
monitorsInGroup,
|
|
@@ -4590,6 +4774,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
4590
4774
|
statusPage,
|
|
4591
4775
|
monitorsOnStatusPage,
|
|
4592
4776
|
monitorStatusTimelines,
|
|
4777
|
+
uptimeDailyAggregate,
|
|
4593
4778
|
statusPageGroups,
|
|
4594
4779
|
monitorsInGroup,
|
|
4595
4780
|
startDateForMonitorTimeline: startDate,
|
|
@@ -5374,7 +5559,7 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
5374
5559
|
IncidentPublicNote,
|
|
5375
5560
|
),
|
|
5376
5561
|
|
|
5377
|
-
activeIncidents:
|
|
5562
|
+
activeIncidents: this.serializeIncidentsForStatusPage(activeIncidents),
|
|
5378
5563
|
|
|
5379
5564
|
activeEpisodes: activeEpisodesJson,
|
|
5380
5565
|
episodePublicNotes: BaseModel.toJSONArray(
|
|
@@ -5390,6 +5575,8 @@ export default class StatusPageAPI extends BaseAPI<
|
|
|
5390
5575
|
monitorStatusTimelines,
|
|
5391
5576
|
MonitorStatusTimeline,
|
|
5392
5577
|
),
|
|
5578
|
+
uptimeDailyAggregate:
|
|
5579
|
+
UptimeDailyAggregateUtil.toJSON(uptimeDailyAggregate),
|
|
5393
5580
|
resourceGroups: BaseModel.toJSONArray(statusPageGroups, StatusPageGroup),
|
|
5394
5581
|
monitorStatuses: BaseModel.toJSONArray(monitorStatuses, MonitorStatus),
|
|
5395
5582
|
statusPageResources: BaseModel.toJSONArray(
|