@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
|
@@ -11,6 +11,14 @@ import ObjectID from "../../Types/ObjectID";
|
|
|
11
11
|
import Permission from "../../Types/Permission";
|
|
12
12
|
import { PlanType } from "../../Types/Billing/SubscriptionPlan";
|
|
13
13
|
|
|
14
|
+
/*
|
|
15
|
+
* Immutable audit trail. Nobody creates an entry through the API or as a
|
|
16
|
+
* project user: every entry is written by the Enterprise Edition's audit-log
|
|
17
|
+
* recorder, as root. So create is empty at table level and on every column,
|
|
18
|
+
* and AuditLogService refuses any create that is not root (a master admin's
|
|
19
|
+
* included, whom these lists do not bind). Update and delete are empty too;
|
|
20
|
+
* entries leave only through the retention TTL.
|
|
21
|
+
*/
|
|
14
22
|
export default class AuditLog extends AnalyticsBaseModel {
|
|
15
23
|
public constructor() {
|
|
16
24
|
const projectIdColumn: AnalyticsTableColumn = new AnalyticsTableColumn({
|
|
@@ -27,7 +35,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
27
35
|
Permission.SettingsAdmin,
|
|
28
36
|
Permission.ReadAuditLog,
|
|
29
37
|
],
|
|
30
|
-
create: [
|
|
38
|
+
create: [],
|
|
31
39
|
update: [],
|
|
32
40
|
},
|
|
33
41
|
});
|
|
@@ -46,7 +54,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
46
54
|
Permission.SettingsAdmin,
|
|
47
55
|
Permission.ReadAuditLog,
|
|
48
56
|
],
|
|
49
|
-
create: [
|
|
57
|
+
create: [],
|
|
50
58
|
update: [],
|
|
51
59
|
},
|
|
52
60
|
});
|
|
@@ -64,7 +72,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
64
72
|
Permission.SettingsAdmin,
|
|
65
73
|
Permission.ReadAuditLog,
|
|
66
74
|
],
|
|
67
|
-
create: [
|
|
75
|
+
create: [],
|
|
68
76
|
update: [],
|
|
69
77
|
},
|
|
70
78
|
});
|
|
@@ -82,7 +90,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
82
90
|
Permission.SettingsAdmin,
|
|
83
91
|
Permission.ReadAuditLog,
|
|
84
92
|
],
|
|
85
|
-
create: [
|
|
93
|
+
create: [],
|
|
86
94
|
update: [],
|
|
87
95
|
},
|
|
88
96
|
});
|
|
@@ -111,7 +119,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
111
119
|
Permission.SettingsAdmin,
|
|
112
120
|
Permission.ReadAuditLog,
|
|
113
121
|
],
|
|
114
|
-
create: [
|
|
122
|
+
create: [],
|
|
115
123
|
update: [],
|
|
116
124
|
},
|
|
117
125
|
});
|
|
@@ -143,7 +151,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
143
151
|
Permission.SettingsAdmin,
|
|
144
152
|
Permission.ReadAuditLog,
|
|
145
153
|
],
|
|
146
|
-
create: [
|
|
154
|
+
create: [],
|
|
147
155
|
update: [],
|
|
148
156
|
},
|
|
149
157
|
},
|
|
@@ -162,7 +170,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
162
170
|
Permission.SettingsAdmin,
|
|
163
171
|
Permission.ReadAuditLog,
|
|
164
172
|
],
|
|
165
|
-
create: [
|
|
173
|
+
create: [],
|
|
166
174
|
update: [],
|
|
167
175
|
},
|
|
168
176
|
});
|
|
@@ -180,7 +188,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
180
188
|
Permission.SettingsAdmin,
|
|
181
189
|
Permission.ReadAuditLog,
|
|
182
190
|
],
|
|
183
|
-
create: [
|
|
191
|
+
create: [],
|
|
184
192
|
update: [],
|
|
185
193
|
},
|
|
186
194
|
});
|
|
@@ -198,7 +206,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
198
206
|
Permission.SettingsAdmin,
|
|
199
207
|
Permission.ReadAuditLog,
|
|
200
208
|
],
|
|
201
|
-
create: [
|
|
209
|
+
create: [],
|
|
202
210
|
update: [],
|
|
203
211
|
},
|
|
204
212
|
});
|
|
@@ -216,7 +224,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
216
224
|
Permission.SettingsAdmin,
|
|
217
225
|
Permission.ReadAuditLog,
|
|
218
226
|
],
|
|
219
|
-
create: [
|
|
227
|
+
create: [],
|
|
220
228
|
update: [],
|
|
221
229
|
},
|
|
222
230
|
});
|
|
@@ -235,7 +243,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
235
243
|
Permission.SettingsAdmin,
|
|
236
244
|
Permission.ReadAuditLog,
|
|
237
245
|
],
|
|
238
|
-
create: [
|
|
246
|
+
create: [],
|
|
239
247
|
update: [],
|
|
240
248
|
},
|
|
241
249
|
});
|
|
@@ -254,7 +262,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
254
262
|
Permission.SettingsAdmin,
|
|
255
263
|
Permission.ReadAuditLog,
|
|
256
264
|
],
|
|
257
|
-
create: [
|
|
265
|
+
create: [],
|
|
258
266
|
update: [],
|
|
259
267
|
},
|
|
260
268
|
});
|
|
@@ -272,7 +280,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
272
280
|
Permission.SettingsAdmin,
|
|
273
281
|
Permission.ReadAuditLog,
|
|
274
282
|
],
|
|
275
|
-
create: [
|
|
283
|
+
create: [],
|
|
276
284
|
update: [],
|
|
277
285
|
},
|
|
278
286
|
});
|
|
@@ -293,7 +301,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
293
301
|
Permission.SettingsAdmin,
|
|
294
302
|
Permission.ReadAuditLog,
|
|
295
303
|
],
|
|
296
|
-
create: [
|
|
304
|
+
create: [],
|
|
297
305
|
update: [],
|
|
298
306
|
},
|
|
299
307
|
});
|
|
@@ -320,7 +328,7 @@ export default class AuditLog extends AnalyticsBaseModel {
|
|
|
320
328
|
Permission.SettingsAdmin,
|
|
321
329
|
Permission.ReadAuditLog,
|
|
322
330
|
],
|
|
323
|
-
create: [
|
|
331
|
+
create: [],
|
|
324
332
|
update: [],
|
|
325
333
|
delete: [],
|
|
326
334
|
},
|
|
@@ -948,6 +948,30 @@ export default class GlobalConfig extends GlobalConfigModel {
|
|
|
948
948
|
})
|
|
949
949
|
public enterpriseLicenseExpiryReminderDays?: number = undefined;
|
|
950
950
|
|
|
951
|
+
/*
|
|
952
|
+
* Set once, by the enterprise module, the first time this installation boots
|
|
953
|
+
* the Enterprise Edition. An Enterprise install with no license at all gets
|
|
954
|
+
* a 14-day evaluation trial counted from here (also the transition for
|
|
955
|
+
* installs that ran the Enterprise Edition on the IS_ENTERPRISE_EDITION
|
|
956
|
+
* variable alone). Written only by the server itself (isRoot).
|
|
957
|
+
*/
|
|
958
|
+
@ColumnAccessControl({
|
|
959
|
+
create: [],
|
|
960
|
+
read: [],
|
|
961
|
+
update: [],
|
|
962
|
+
})
|
|
963
|
+
@TableColumn({
|
|
964
|
+
type: TableColumnType.Date,
|
|
965
|
+
title: "Enterprise Edition First Seen At",
|
|
966
|
+
description:
|
|
967
|
+
"When this installation first booted the OneUptime Enterprise Edition. An unlicensed Enterprise installation gets a 14-day trial counted from this moment.",
|
|
968
|
+
})
|
|
969
|
+
@Column({
|
|
970
|
+
type: ColumnType.Date,
|
|
971
|
+
nullable: true,
|
|
972
|
+
})
|
|
973
|
+
public enterpriseEditionFirstSeenAt?: Date = undefined;
|
|
974
|
+
|
|
951
975
|
/*
|
|
952
976
|
* The four latestRelease* columns cache the daily GitHub release check
|
|
953
977
|
* (Workers/Jobs/InstanceUpdate/CheckForNewVersion). They are a cache, not
|
|
@@ -1044,8 +1044,9 @@ export default class Monitor extends BaseModel {
|
|
|
1044
1044
|
required: false,
|
|
1045
1045
|
type: TableColumnType.ShortText,
|
|
1046
1046
|
title: "Monitoring Interval",
|
|
1047
|
-
description:
|
|
1048
|
-
|
|
1047
|
+
description:
|
|
1048
|
+
'How often would you like OneUptime to monitor this resource? A 5-field cron expression, not a label: "*/5 * * * *" is every five minutes.',
|
|
1049
|
+
example: "*/5 * * * *",
|
|
1049
1050
|
})
|
|
1050
1051
|
@Column({
|
|
1051
1052
|
nullable: true,
|
|
@@ -490,7 +490,8 @@ export default class MonitorTemplate extends BaseModel {
|
|
|
490
490
|
type: TableColumnType.ShortText,
|
|
491
491
|
title: "Monitoring Interval",
|
|
492
492
|
description:
|
|
493
|
-
|
|
493
|
+
'Default monitoring interval for monitors created from this template. A 5-field cron expression, not a label: "*/5 * * * *" is every five minutes.',
|
|
494
|
+
example: "*/5 * * * *",
|
|
494
495
|
})
|
|
495
496
|
@Column({
|
|
496
497
|
nullable: true,
|
|
@@ -16,6 +16,12 @@
|
|
|
16
16
|
const fs = require("fs");
|
|
17
17
|
const path = require("path");
|
|
18
18
|
const crypto = require("crypto");
|
|
19
|
+
const {
|
|
20
|
+
EDITION_COMMUNITY,
|
|
21
|
+
EDITION_ENTERPRISE,
|
|
22
|
+
readRequestedEdition,
|
|
23
|
+
getEnterpriseCandidates,
|
|
24
|
+
} = require("../UI/esbuild-enterprise");
|
|
19
25
|
|
|
20
26
|
// Default values
|
|
21
27
|
const DEFAULT_APP_VERSION = "1.0.0";
|
|
@@ -64,6 +70,50 @@ function getGitSha() {
|
|
|
64
70
|
}
|
|
65
71
|
}
|
|
66
72
|
|
|
73
|
+
/**
|
|
74
|
+
* The edition a frontend build bundles: "community" or "enterprise".
|
|
75
|
+
*
|
|
76
|
+
* The same decision esbuild makes for the frontend's Enterprise plugin (see
|
|
77
|
+
* Common/UI/esbuild-enterprise.js): ONEUPTIME_EDITION=community or
|
|
78
|
+
* enterprise decides outright, and "auto" (the default) means enterprise
|
|
79
|
+
* exactly when this frontend's ee plugin, ee/<frontend directory name>/
|
|
80
|
+
* Index.tsx, is on disk. A frontend with no ee plugin (Accounts, Status Page)
|
|
81
|
+
* is therefore always "community". An unknown ONEUPTIME_EDITION throws, like
|
|
82
|
+
* the build.
|
|
83
|
+
*
|
|
84
|
+
* The edition goes into the service worker's cache version: the Community and
|
|
85
|
+
* Enterprise images of one release share APP_VERSION and GIT_SHA, and without
|
|
86
|
+
* it a browser that cached one edition's assets would keep them after the
|
|
87
|
+
* deployment switched to the other.
|
|
88
|
+
* @param {string} frontendDir - The frontend's directory (where sw.js.template lives)
|
|
89
|
+
* @param {Object} [env] - Environment to read (defaults to process.env)
|
|
90
|
+
* @returns {string}
|
|
91
|
+
*/
|
|
92
|
+
function getEdition(frontendDir, env) {
|
|
93
|
+
const source = env || process.env;
|
|
94
|
+
const requested = readRequestedEdition(source);
|
|
95
|
+
|
|
96
|
+
if (requested === EDITION_COMMUNITY || requested === EDITION_ENTERPRISE) {
|
|
97
|
+
return requested;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
const candidates = getEnterpriseCandidates(
|
|
101
|
+
frontendDir,
|
|
102
|
+
path.basename(frontendDir),
|
|
103
|
+
source,
|
|
104
|
+
);
|
|
105
|
+
|
|
106
|
+
const hasPlugin = candidates.some((candidate) => {
|
|
107
|
+
try {
|
|
108
|
+
return fs.statSync(candidate).isFile();
|
|
109
|
+
} catch (error) {
|
|
110
|
+
return false;
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
return hasPlugin ? EDITION_ENTERPRISE : EDITION_COMMUNITY;
|
|
115
|
+
}
|
|
116
|
+
|
|
67
117
|
/**
|
|
68
118
|
* Generate service worker from template
|
|
69
119
|
*/
|
|
@@ -85,16 +135,19 @@ function generateServiceWorker(
|
|
|
85
135
|
const packageJsonPath = path.join(path.dirname(templatePath), "package.json");
|
|
86
136
|
const appVersion = getAppVersion(packageJsonPath);
|
|
87
137
|
const gitSha = getGitSha();
|
|
138
|
+
const edition = getEdition(path.dirname(templatePath));
|
|
88
139
|
const buildTimestamp = new Date().toISOString();
|
|
89
140
|
|
|
90
141
|
console.log(`🔧 Generating service worker for ${serviceName}...`);
|
|
91
142
|
console.log(` App Version: ${appVersion}`);
|
|
143
|
+
console.log(` Edition: ${edition}`);
|
|
92
144
|
console.log(` Git SHA: ${gitSha}`);
|
|
93
145
|
console.log(` Build Time: ${buildTimestamp}`);
|
|
94
146
|
|
|
95
147
|
// Replace placeholders
|
|
96
148
|
const generatedContent = template
|
|
97
149
|
.replace(/\{\{APP_VERSION\}\}/g, appVersion)
|
|
150
|
+
.replace(/\{\{EDITION\}\}/g, edition)
|
|
98
151
|
.replace(/\{\{GIT_SHA\}\}/g, gitSha)
|
|
99
152
|
.replace(/\{\{BUILD_TIMESTAMP\}\}/g, buildTimestamp)
|
|
100
153
|
.replace(/\{\{SERVICE_NAME\}\}/g, serviceName);
|
|
@@ -102,11 +155,12 @@ function generateServiceWorker(
|
|
|
102
155
|
// Add generation comment at the top
|
|
103
156
|
const header = `/*
|
|
104
157
|
* Generated Service Worker for ${serviceName}
|
|
105
|
-
*
|
|
158
|
+
*
|
|
106
159
|
* Generated at: ${buildTimestamp}
|
|
107
160
|
* App Version: ${appVersion}
|
|
161
|
+
* Edition: ${edition}
|
|
108
162
|
* Git SHA: ${gitSha}
|
|
109
|
-
*
|
|
163
|
+
*
|
|
110
164
|
* DO NOT EDIT THIS FILE DIRECTLY
|
|
111
165
|
* Edit the template file instead and run the generator script
|
|
112
166
|
*/
|
|
@@ -125,7 +179,9 @@ function generateServiceWorker(
|
|
|
125
179
|
fs.writeFileSync(outputPath, finalContent, "utf8");
|
|
126
180
|
|
|
127
181
|
console.log("✅ Service worker generated successfully:", outputPath);
|
|
128
|
-
console.log(
|
|
182
|
+
console.log(
|
|
183
|
+
` Cache version: oneuptime-v${appVersion}-${edition}-${gitSha}`,
|
|
184
|
+
);
|
|
129
185
|
}
|
|
130
186
|
|
|
131
187
|
// Command line interface
|
|
@@ -151,4 +207,9 @@ if (require.main === module) {
|
|
|
151
207
|
}
|
|
152
208
|
}
|
|
153
209
|
|
|
154
|
-
module.exports = {
|
|
210
|
+
module.exports = {
|
|
211
|
+
generateServiceWorker,
|
|
212
|
+
getAppVersion,
|
|
213
|
+
getGitSha,
|
|
214
|
+
getEdition,
|
|
215
|
+
};
|
|
@@ -20,6 +20,7 @@ const router: ExpressRouter = Express.getRouter();
|
|
|
20
20
|
router.post(
|
|
21
21
|
"/ai/recharge",
|
|
22
22
|
UserMiddleware.getUserMiddleware,
|
|
23
|
+
UserMiddleware.requireUserAuthentication,
|
|
23
24
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
24
25
|
try {
|
|
25
26
|
if (!IsBillingEnabled) {
|
|
@@ -10,7 +10,6 @@ import Response from "../Utils/Response";
|
|
|
10
10
|
import DatabaseCommonInteractionProps from "../../Types/BaseDatabase/DatabaseCommonInteractionProps";
|
|
11
11
|
import ObjectID from "../../Types/ObjectID";
|
|
12
12
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
13
|
-
import NotAuthorizedException from "../../Types/Exception/NotAuthorizedException";
|
|
14
13
|
import { JSONArray, JSONObject } from "../../Types/JSON";
|
|
15
14
|
import AIInsightStatus from "../../Types/AI/AIInsightStatus";
|
|
16
15
|
import AIInsightHumanVerdict from "../../Types/AI/AIInsightHumanVerdict";
|
|
@@ -42,9 +41,7 @@ async function getLoggedInProps(
|
|
|
42
41
|
const props: DatabaseCommonInteractionProps =
|
|
43
42
|
await CommonAPI.getDatabaseCommonInteractionProps(req);
|
|
44
43
|
|
|
45
|
-
|
|
46
|
-
throw new NotAuthorizedException("A logged-in user session is required.");
|
|
47
|
-
}
|
|
44
|
+
CommonAPI.assertAuthenticatedUser(props);
|
|
48
45
|
|
|
49
46
|
return props;
|
|
50
47
|
}
|
|
@@ -11,7 +11,6 @@ import Response from "../Utils/Response";
|
|
|
11
11
|
import DatabaseCommonInteractionProps from "../../Types/BaseDatabase/DatabaseCommonInteractionProps";
|
|
12
12
|
import ObjectID from "../../Types/ObjectID";
|
|
13
13
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
14
|
-
import NotAuthorizedException from "../../Types/Exception/NotAuthorizedException";
|
|
15
14
|
import SortOrder from "../../Types/BaseDatabase/SortOrder";
|
|
16
15
|
import Query from "../../Types/BaseDatabase/Query";
|
|
17
16
|
import { JSONArray, JSONObject } from "../../Types/JSON";
|
|
@@ -184,9 +183,7 @@ async function getLoggedInProps(
|
|
|
184
183
|
const props: DatabaseCommonInteractionProps =
|
|
185
184
|
await CommonAPI.getDatabaseCommonInteractionProps(req);
|
|
186
185
|
|
|
187
|
-
|
|
188
|
-
throw new NotAuthorizedException("A logged-in user session is required.");
|
|
189
|
-
}
|
|
186
|
+
CommonAPI.assertAuthenticatedUser(props);
|
|
190
187
|
|
|
191
188
|
return props;
|
|
192
189
|
}
|
|
@@ -49,11 +49,10 @@ router.post(
|
|
|
49
49
|
* because it loads the exception with the caller's props first, and
|
|
50
50
|
* derives the project from that authorized row.
|
|
51
51
|
*/
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
}
|
|
52
|
+
CommonAPI.assertAuthenticatedUser(
|
|
53
|
+
props,
|
|
54
|
+
"AI readiness requires a logged-in user session.",
|
|
55
|
+
);
|
|
57
56
|
|
|
58
57
|
if (!props.tenantId) {
|
|
59
58
|
throw new BadDataException("Project ID is required (tenantid header).");
|
package/Server/API/AlertAPI.ts
CHANGED
|
@@ -38,6 +38,7 @@ export default class AlertAPI extends BaseAPI<Alert, AlertServiceType> {
|
|
|
38
38
|
this.router.post(
|
|
39
39
|
`${new this.entityType().getCrudApiPath()?.toString()}/generate-note-from-ai/:alertId`,
|
|
40
40
|
UserMiddleware.getUserMiddleware,
|
|
41
|
+
UserMiddleware.requireUserAuthentication,
|
|
41
42
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
42
43
|
try {
|
|
43
44
|
await this.generateNoteFromAI(req, res);
|
|
@@ -11,7 +11,6 @@ import DatabaseCommonInteractionProps from "../../Types/BaseDatabase/DatabaseCom
|
|
|
11
11
|
import ObjectID from "../../Types/ObjectID";
|
|
12
12
|
import OneUptimeDate from "../../Types/Date";
|
|
13
13
|
import BadDataException from "../../Types/Exception/BadDataException";
|
|
14
|
-
import NotAuthorizedException from "../../Types/Exception/NotAuthorizedException";
|
|
15
14
|
import AutoRemediationSuggestionStatus from "../../Types/AutoRemediation/AutoRemediationSuggestionStatus";
|
|
16
15
|
import AutoRemediationSuggestionType from "../../Types/AutoRemediation/AutoRemediationSuggestionType";
|
|
17
16
|
import AutoRemediationVerificationStatus from "../../Types/AutoRemediation/AutoRemediationVerificationStatus";
|
|
@@ -65,9 +64,7 @@ async function getLoggedInProps(
|
|
|
65
64
|
const props: DatabaseCommonInteractionProps =
|
|
66
65
|
await CommonAPI.getDatabaseCommonInteractionProps(req);
|
|
67
66
|
|
|
68
|
-
|
|
69
|
-
throw new NotAuthorizedException("A logged-in user session is required.");
|
|
70
|
-
}
|
|
67
|
+
CommonAPI.assertAuthenticatedUser(props);
|
|
71
68
|
|
|
72
69
|
return props;
|
|
73
70
|
}
|
package/Server/API/BaseAPI.ts
CHANGED
|
@@ -553,6 +553,40 @@ export default class BaseAPI<
|
|
|
553
553
|
this.entityType,
|
|
554
554
|
) as TBaseModel;
|
|
555
555
|
|
|
556
|
+
/*
|
|
557
|
+
* A create builds a brand-new row, so it must not carry the row's own
|
|
558
|
+
* primary key. getRepository().save() treats an entity that already has an
|
|
559
|
+
* id as an update of the existing row rather than an insert, so a stray
|
|
560
|
+
* `_id` (or the `id` spelling, which BaseModel.fromJSON has already folded
|
|
561
|
+
* into `_id`) would make a "create" modify an existing record instead.
|
|
562
|
+
*
|
|
563
|
+
* CLEARED, NOT DELETED, and that distinction is load-bearing: `item` is a
|
|
564
|
+
* live model instance that the service then asks for its own column list
|
|
565
|
+
* (DatabaseService.generateDefaultValues -> data.getTableColumns()), and
|
|
566
|
+
* that lookup used to enumerate this very instance's own keys and cache
|
|
567
|
+
* the result for the whole CLASS. Deleting `_id` here therefore taught the
|
|
568
|
+
* process that this model has no `_id` column, and every later response
|
|
569
|
+
* for it - to any caller, including reads - was serialized without one.
|
|
570
|
+
* TableColumn.ts no longer reads the caller's instance, so this is now
|
|
571
|
+
* defence in depth rather than the fix; the trap is removed all the same.
|
|
572
|
+
* DatabaseService.sanitizeUpdateData skips these keys the same way instead
|
|
573
|
+
* of deleting them off a model.
|
|
574
|
+
*
|
|
575
|
+
* `undefined` is what an unset column holds anyway, so nothing downstream
|
|
576
|
+
* can tell it from an absent key: TypeORM reads primary keys through
|
|
577
|
+
* ColumnMetadata.getEntityValue and treats undefined as "no id"
|
|
578
|
+
* (EntityMetadata.getValueMap skips it, so the Subject gets no identifier
|
|
579
|
+
* and must be INSERTed), the create path's own "an id cannot be supplied"
|
|
580
|
+
* guard tests `data._id` for truthiness, ColumnPermissions skips data keys
|
|
581
|
+
* whose value is undefined, and toJSONObject omits them from responses.
|
|
582
|
+
*
|
|
583
|
+
* Only the top-level primary key is cleared - nested `_id`s inside
|
|
584
|
+
* relation objects/arrays reference existing related rows and are left
|
|
585
|
+
* untouched. `id` needs no handling: it is a prototype accessor derived
|
|
586
|
+
* from `_id` (never an own property), and its setter ignores falsy values.
|
|
587
|
+
*/
|
|
588
|
+
(item as any)["_id"] = undefined;
|
|
589
|
+
|
|
556
590
|
const miscDataProps: JSONObject = JSONFunctions.deserialize(
|
|
557
591
|
body["miscDataProps"] as JSONObject,
|
|
558
592
|
);
|
|
@@ -3,6 +3,9 @@ import UserMiddleware from "../Middleware/UserAuthorization";
|
|
|
3
3
|
import AnalyticsDatabaseService from "../Services/AnalyticsDatabaseService";
|
|
4
4
|
import CreateBy from "../Types/AnalyticsDatabase/CreateBy";
|
|
5
5
|
import GroupBy from "../Types/AnalyticsDatabase/GroupBy";
|
|
6
|
+
import ModelPermission, {
|
|
7
|
+
CheckReadPermissionType,
|
|
8
|
+
} from "../Types/AnalyticsDatabase/ModelPermission";
|
|
6
9
|
import Query from "../Types/AnalyticsDatabase/Query";
|
|
7
10
|
import Select from "../Types/AnalyticsDatabase/Select";
|
|
8
11
|
import Sort from "../Types/AnalyticsDatabase/Sort";
|
|
@@ -39,11 +42,9 @@ import logger from "../Utils/Logger";
|
|
|
39
42
|
* widgets loading on the same page) onto a single ClickHouse query
|
|
40
43
|
* while still looking real-time to humans.
|
|
41
44
|
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* with row-level access scoping should override `getAggregate` to
|
|
46
|
-
* skip the cache (or shape the key to include the access scope).
|
|
45
|
+
* A cache hit never reaches the service, which is where the read
|
|
46
|
+
* check lives, so getAggregateCacheKey runs that check itself and
|
|
47
|
+
* keys the slot on the permission-scoped query — see there.
|
|
47
48
|
*/
|
|
48
49
|
const ANALYTICS_AGGREGATE_CACHE_TTL_SECONDS: number = 8;
|
|
49
50
|
|
|
@@ -396,11 +397,11 @@ export default class BaseAnalyticsAPI<
|
|
|
396
397
|
* burst. On cache outage (Redis down, parse error, …) we fall
|
|
397
398
|
* through to a live query so behavior degrades to today's.
|
|
398
399
|
*/
|
|
399
|
-
const projectId: string | undefined = databaseProps.tenantId?.toString();
|
|
400
400
|
const cacheNamespace: string = `${this.getEntityName()}-aggregate`;
|
|
401
|
-
const cacheKey: string | null =
|
|
402
|
-
|
|
403
|
-
|
|
401
|
+
const cacheKey: string | null = await this.getAggregateCacheKey(
|
|
402
|
+
aggregateBy,
|
|
403
|
+
databaseProps,
|
|
404
|
+
);
|
|
404
405
|
|
|
405
406
|
if (cacheKey) {
|
|
406
407
|
try {
|
|
@@ -438,6 +439,76 @@ export default class BaseAnalyticsAPI<
|
|
|
438
439
|
return Response.sendJsonObjectResponse(req, res, responseBody);
|
|
439
440
|
}
|
|
440
441
|
|
|
442
|
+
/*
|
|
443
|
+
* A cached aggregate is answered BEFORE service.aggregateBy runs, and
|
|
444
|
+
* service.aggregateBy is where the read check lives. So a hit has to
|
|
445
|
+
* clear that same check first — otherwise anyone who can name a project
|
|
446
|
+
* in the `tenantid` header (getUserMiddleware accepts it even from an
|
|
447
|
+
* anonymous caller) reads whatever someone else aggregated there in the
|
|
448
|
+
* last few seconds.
|
|
449
|
+
*
|
|
450
|
+
* checkReadPermission runs here on a copy of the query, with the same
|
|
451
|
+
* select the service passes. It throws for an anonymous caller (401) and
|
|
452
|
+
* for one without read permission on the model or the queried columns
|
|
453
|
+
* (422), and it returns the query the live path would send to
|
|
454
|
+
* ClickHouse. That scoped query goes into the key because it carries
|
|
455
|
+
* everything that makes one caller's result differ from another's: the
|
|
456
|
+
* tenant, the Owned / label-restricted `IN (...)` filter on the owning
|
|
457
|
+
* resource, and for a multi-tenant request the caller's own list of
|
|
458
|
+
* projects.
|
|
459
|
+
*
|
|
460
|
+
* The caller's raw query stays in the key next to it. Scoping overwrites
|
|
461
|
+
* projectId, but a service can still plan from the raw query —
|
|
462
|
+
* MetricService picks point-type and rollup routing from the projectId
|
|
463
|
+
* the caller sent, before its own check rewrites it — so two requests
|
|
464
|
+
* that scope to the same query can still compute different results.
|
|
465
|
+
* Callers share a slot only when both their request and their access
|
|
466
|
+
* scope are identical.
|
|
467
|
+
*
|
|
468
|
+
* Returns null (skip the cache) without a tenant, and for a request the
|
|
469
|
+
* service's own validation is about to reject, so that request gets the
|
|
470
|
+
* service's error message rather than one from the check here.
|
|
471
|
+
*/
|
|
472
|
+
protected async getAggregateCacheKey(
|
|
473
|
+
aggregateBy: AggregateBy<AnalyticsDataModel>,
|
|
474
|
+
props: DatabaseCommonInteractionProps,
|
|
475
|
+
): Promise<string | null> {
|
|
476
|
+
if (!props.tenantId) {
|
|
477
|
+
return null;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
const aggregateColumnName: string | undefined =
|
|
481
|
+
aggregateBy.aggregateColumnName?.toString();
|
|
482
|
+
const timestampColumnName: string | undefined =
|
|
483
|
+
aggregateBy.aggregationTimestampColumnName?.toString();
|
|
484
|
+
const model: TAnalyticsDataModel = new this.entityType();
|
|
485
|
+
|
|
486
|
+
if (
|
|
487
|
+
!aggregateColumnName ||
|
|
488
|
+
!timestampColumnName ||
|
|
489
|
+
!model.getTableColumn(aggregateColumnName) ||
|
|
490
|
+
!model.getTableColumn(timestampColumnName)
|
|
491
|
+
) {
|
|
492
|
+
return null;
|
|
493
|
+
}
|
|
494
|
+
|
|
495
|
+
const scoped: CheckReadPermissionType<TAnalyticsDataModel> =
|
|
496
|
+
await ModelPermission.checkReadPermission(
|
|
497
|
+
this.entityType,
|
|
498
|
+
{ ...(aggregateBy.query || {}) } as Query<TAnalyticsDataModel>,
|
|
499
|
+
{
|
|
500
|
+
[aggregateColumnName]: true,
|
|
501
|
+
[timestampColumnName]: true,
|
|
502
|
+
} as Select<TAnalyticsDataModel>,
|
|
503
|
+
props,
|
|
504
|
+
);
|
|
505
|
+
|
|
506
|
+
return `${props.tenantId.toString()}:${this.buildAggregateCacheKey({
|
|
507
|
+
...aggregateBy,
|
|
508
|
+
scopedQuery: scoped.query,
|
|
509
|
+
} as AggregateBy<AnalyticsDataModel>)}`;
|
|
510
|
+
}
|
|
511
|
+
|
|
441
512
|
/*
|
|
442
513
|
* Stable serialization for the aggregate cache key. Date instances
|
|
443
514
|
* are normalized to ISO so two logically-equal time windows hit
|
package/Server/API/BillingAPI.ts
CHANGED
|
@@ -126,6 +126,7 @@ export default class BillingAPI {
|
|
|
126
126
|
this.router.get(
|
|
127
127
|
`/billing/pay-as-you-go-status`,
|
|
128
128
|
UserMiddleware.getUserMiddleware,
|
|
129
|
+
UserMiddleware.requireUserAuthentication,
|
|
129
130
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
130
131
|
try {
|
|
131
132
|
const projectId: ObjectID | null = this.getTenantId(req);
|
|
@@ -158,6 +159,7 @@ export default class BillingAPI {
|
|
|
158
159
|
this.router.get(
|
|
159
160
|
`/billing/customer-balance`,
|
|
160
161
|
UserMiddleware.getUserMiddleware,
|
|
162
|
+
UserMiddleware.requireUserAuthentication,
|
|
161
163
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
162
164
|
try {
|
|
163
165
|
if (!IsBillingEnabled) {
|
|
@@ -137,6 +137,7 @@ export default class UserAPI extends BaseAPI<
|
|
|
137
137
|
this.router.post(
|
|
138
138
|
`${new this.entityType().getCrudApiPath()?.toString()}/pay`,
|
|
139
139
|
UserMiddleware.getUserMiddleware,
|
|
140
|
+
UserMiddleware.requireUserAuthentication,
|
|
140
141
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
141
142
|
try {
|
|
142
143
|
if (!IsBillingEnabled) {
|
|
@@ -44,6 +44,7 @@ export default class UserAPI extends BaseAPI<
|
|
|
44
44
|
this.router.post(
|
|
45
45
|
`${new this.entityType().getCrudApiPath()?.toString()}/setup`,
|
|
46
46
|
UserMiddleware.getUserMiddleware,
|
|
47
|
+
UserMiddleware.requireUserAuthentication,
|
|
47
48
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
48
49
|
try {
|
|
49
50
|
if (!IsBillingEnabled) {
|
|
@@ -121,6 +122,7 @@ export default class UserAPI extends BaseAPI<
|
|
|
121
122
|
this.router.post(
|
|
122
123
|
`${new this.entityType().getCrudApiPath()?.toString()}/set-default`,
|
|
123
124
|
UserMiddleware.getUserMiddleware,
|
|
125
|
+
UserMiddleware.requireUserAuthentication,
|
|
124
126
|
async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {
|
|
125
127
|
try {
|
|
126
128
|
if (!IsBillingEnabled) {
|
|
@@ -358,9 +358,7 @@ export default class CodeFixRunAPI {
|
|
|
358
358
|
const props: DatabaseCommonInteractionProps =
|
|
359
359
|
await CommonAPI.getDatabaseCommonInteractionProps(req);
|
|
360
360
|
|
|
361
|
-
|
|
362
|
-
throw new NotAuthorizedException("A logged-in user session is required.");
|
|
363
|
-
}
|
|
361
|
+
CommonAPI.assertAuthenticatedUser(props);
|
|
364
362
|
|
|
365
363
|
if (!props.tenantId) {
|
|
366
364
|
throw new BadDataException("Project ID is required (tenantid header).");
|