@shieldiot/ngx-pulseiot-lib 1.0.0 → 2.1.1110-ang-18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/esm2022/lib/services/McpToolsService.mjs +4 -4
  2. package/esm2022/lib/services/SysAccountsService.mjs +4 -4
  3. package/esm2022/lib/services/SysAuditLogService.mjs +4 -4
  4. package/esm2022/lib/services/SysCheckpointsService.mjs +4 -4
  5. package/esm2022/lib/services/SysConfigService.mjs +4 -4
  6. package/esm2022/lib/services/SysFeaturesService.mjs +4 -4
  7. package/esm2022/lib/services/SysGroupsService.mjs +4 -4
  8. package/esm2022/lib/services/SysIdsRulesService.mjs +4 -4
  9. package/esm2022/lib/services/SysInsightsService.mjs +4 -4
  10. package/esm2022/lib/services/SysKeysService.mjs +4 -4
  11. package/esm2022/lib/services/SysMembersService.mjs +4 -4
  12. package/esm2022/lib/services/SysRuleTemplatesService.mjs +4 -4
  13. package/esm2022/lib/services/SysRulesService.mjs +4 -4
  14. package/esm2022/lib/services/SysStatisticsService.mjs +4 -4
  15. package/esm2022/lib/services/SysStreamsService.mjs +4 -4
  16. package/esm2022/lib/services/SysUsersService.mjs +4 -4
  17. package/esm2022/lib/services/UsrAlertsService.mjs +4 -4
  18. package/esm2022/lib/services/UsrDevicesService.mjs +4 -4
  19. package/esm2022/lib/services/UsrEventsService.mjs +4 -4
  20. package/esm2022/lib/services/UsrInsightsService.mjs +4 -4
  21. package/esm2022/lib/services/UsrIntegrationsService.mjs +4 -4
  22. package/esm2022/lib/services/UsrMembersService.mjs +4 -4
  23. package/esm2022/lib/services/UsrNetworkService.mjs +4 -4
  24. package/esm2022/lib/services/UsrNotificationMessagesService.mjs +4 -4
  25. package/esm2022/lib/services/UsrReportsInstanceService.mjs +4 -4
  26. package/esm2022/lib/services/UsrReportsService.mjs +4 -4
  27. package/esm2022/lib/services/UsrRulesService.mjs +4 -4
  28. package/esm2022/lib/services/UsrUserService.mjs +4 -4
  29. package/esm2022/ngx-pulseiot-lib.module.mjs +5 -5
  30. package/esm2022/rest-utils.mjs +4 -4
  31. package/fesm2022/shieldiot-ngx-pulseiot-lib.mjs +91 -91
  32. package/fesm2022/shieldiot-ngx-pulseiot-lib.mjs.map +1 -1
  33. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"shieldiot-ngx-pulseiot-lib.mjs","sources":["../../../projects/ngx-pulseiot-lib/src/lib/model/AITasksCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AccountStatusCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/CheckPointStateCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/HomePageViewCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/SeverityTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/UserTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/WSOpCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EventCategoryCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ParserTaskCompletionStatus.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DataSourceCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AccountTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/BoolTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceCreationCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/FeatureCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/IntegrationTriggerCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/IntegrationTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/MemberRoleCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/TimePeriodCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceIdentityCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/InsightSourceCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/InsightStatusCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/InsightTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NotificationTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ReportTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/TrafficDirectionCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/HttpMethodCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/RuleTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceActionCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EventStatusCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EventTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/OperatorCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/PermissionCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ReportSourceCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/UserStatusCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceStatusCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DirectionContextCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NetworkMapTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/RuleActivityStatusCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/IntegrationContext.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/IntKeyValue.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Node.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Link.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ConsumptionDataPoint.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/BaseEntity.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ColumnDef.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Feature.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/StringKeyValue.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/IntFloatValue.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ZScore.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/TimeSeriesConsumption.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/MaliciousIpCard.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ConditionDescription.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/MapBounds.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AICheckpoint.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/BaseMessage.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/BaseRestResponse.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EntitiesResponse.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NetworkTopology.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/BaseEntityEx.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Alert.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AlertWithDevice.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Event.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NetworkTopologyReportParams.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Stream.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Message.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EntityResponse.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Notification.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Indicator.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Device.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceWithEvents.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Image.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Rule.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/RuleWithSQL.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/SessionRecord.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Location.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/StringIntValue.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NetworkMap.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Action.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceReport.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/FloatInterval.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/MaliciousIPData.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EventWithDevice.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NotificationMessage.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NotificationMessageDTO.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DevicesAtRiskConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/LocalTime.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/IdsRule.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Checkpoint.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NetworkTopologyReportKPIs.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/UserNotificationMessage.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EntityAction.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/SeriesData.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/SeverityIntervalTuple.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ActionResponse.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Entities.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/TimeSeries.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/GeoData.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NetworkTopologyRecord.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ReportInstance.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/IdsList.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EntityRequest.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NotificationMessageStats.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Report.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Timestamp.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/GraphSeries.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/TokenData.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ShieldexConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Distribution.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Shieldex.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/TimeFrame.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DevicesMap.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ApiKey.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EventOccurrence.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/InsightQuery.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/UsageTransform.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Account.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AccountReportDTO.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ConfigParams.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DataIngestion.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/User.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Tuple.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/RegulatoryViolation.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/SessionTransform.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EventSeverityConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/LoginParams.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AccountSettings.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ConfigParam.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/FeaturesGroup.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ServiceStatus.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/TimeDataPoint.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceNode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Member.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Group.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/StreamConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AccountRole.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/MitreAttackCategory.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/InsightSpec.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NetworkTopologyReport.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Thresholds.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DNSRecord.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Radius.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceScoreConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/SeverityConditionConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/UsageRecord.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EntitiesRequest.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/IdsConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/RuleCountThresholdConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/JsonDoc.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/StreamAnalyticsConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/UserMemberships.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AccountDTO.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AuditLog.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeploymentInfo.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/SIM.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Interval.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Json.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AccountInfo.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Insight.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/SimpleEntity.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/LlmPrompt.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EntityMessage.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NotificationQueuePayload.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NetworkEndpoint.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/FlowRecord.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Integration.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/RuleTemplate.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/errorStruct.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/RuleBasedSeverityConditionConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/UserMembership.ts","../../../projects/ngx-pulseiot-lib/src/config.ts","../../../projects/ngx-pulseiot-lib/src/rest-utils.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrDevicesService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrReportsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrUserService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/McpToolsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysAccountsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysKeysService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysRuleTemplatesService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysStreamsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysUsersService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrEventsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrInsightsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysCheckpointsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysConfigService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysFeaturesService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysIdsRulesService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysInsightsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrIntegrationsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrReportsInstanceService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysRulesService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysStatisticsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrAlertsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrMembersService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrNetworkService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrNotificationMessagesService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrRulesService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysAuditLogService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysGroupsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysMembersService.ts","../../../projects/ngx-pulseiot-lib/src/ngx-pulseiot-lib.module.ts","../../../projects/ngx-pulseiot-lib/src/public-api.ts","../../../projects/ngx-pulseiot-lib/src/shieldiot-ngx-pulseiot-lib.ts"],"sourcesContent":["\nimport { Tuple } from '.';\n\n\n// AITasksCode represents AI Tasks: USAGE_INFERENCE | USAGE_AD_TRAIN | USAGE_RULE_TRAIN ...\nexport enum AITasksCode {\n\n // USAGE_INFERENCE [0] \n USAGE_INFERENCE = 0,\n\n // USAGE_AD_TRAIN [1] \n USAGE_AD_TRAIN = 1,\n\n // USAGE_RULE_TRAIN [2] \n USAGE_RULE_TRAIN = 2,\n\n}\n\n// Return list of AITasksCode values and their display names\nexport function GetAITasksCodes() : Tuple<AITasksCode, string>[] {\n\tlet result : Tuple<AITasksCode, string>[] = [];\n result.push(new Tuple<AITasksCode, string>(AITasksCode.USAGE_INFERENCE, 'AITasksCode.USAGE_INFERENCE'))\n\tresult.push(new Tuple<AITasksCode, string>(AITasksCode.USAGE_AD_TRAIN, 'AITasksCode.USAGE_AD_TRAIN'))\n\tresult.push(new Tuple<AITasksCode, string>(AITasksCode.USAGE_RULE_TRAIN, 'AITasksCode.USAGE_RULE_TRAIN'))\n\t\n return result;\n}\n\n// Return map of AITasksCode values and their display names\nexport function MapAITasksCodes() : Map<AITasksCode, string> {\n let result = new Map<AITasksCode, string>();\n result.set(AITasksCode.USAGE_INFERENCE, 'Usage Inference');\n\tresult.set(AITasksCode.USAGE_AD_TRAIN, 'Usage Ad Train');\n\tresult.set(AITasksCode.USAGE_RULE_TRAIN, 'Usage Rule Train');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// AccountStatusCode represents the account status: ACTIVE | INACTIVE | SUSPENDED ...\nexport enum AccountStatusCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Active account [1] \n ACTIVE = 1,\n\n // Suspended (non-active) account [2] \n SUSPENDED = 2,\n\n // Deleted account [3] \n DELETED = 3,\n\n}\n\n// Return list of AccountStatusCode values and their display names\nexport function GetAccountStatusCodes() : Tuple<AccountStatusCode, string>[] {\n\tlet result : Tuple<AccountStatusCode, string>[] = [];\n \n\tresult.push(new Tuple<AccountStatusCode, string>(AccountStatusCode.ACTIVE, 'AccountStatusCode.ACTIVE'))\n\tresult.push(new Tuple<AccountStatusCode, string>(AccountStatusCode.SUSPENDED, 'AccountStatusCode.SUSPENDED'))\n\tresult.push(new Tuple<AccountStatusCode, string>(AccountStatusCode.DELETED, 'AccountStatusCode.DELETED'))\n\t\n return result;\n}\n\n// Return map of AccountStatusCode values and their display names\nexport function MapAccountStatusCodes() : Map<AccountStatusCode, string> {\n let result = new Map<AccountStatusCode, string>();\n result.set(AccountStatusCode.UNDEFINED, 'Undefined');\n\tresult.set(AccountStatusCode.ACTIVE, 'Active');\n\tresult.set(AccountStatusCode.SUSPENDED, 'Suspended');\n\tresult.set(AccountStatusCode.DELETED, 'Deleted');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// CheckPointStateCode represents files checkpoint state: CREATED | INPROGRESS | COMPLETED ...\nexport enum CheckPointStateCode {\n\n // Checkpoint Created [0] \n CREATED = 0,\n\n // Checkpoint in-progress [1] \n INPROGRESS = 1,\n\n // Checkpoint Completed [2] \n COMPLETED = 2,\n\n}\n\n// Return list of CheckPointStateCode values and their display names\nexport function GetCheckPointStateCodes() : Tuple<CheckPointStateCode, string>[] {\n\tlet result : Tuple<CheckPointStateCode, string>[] = [];\n result.push(new Tuple<CheckPointStateCode, string>(CheckPointStateCode.CREATED, 'CheckPointStateCode.CREATED'))\n\tresult.push(new Tuple<CheckPointStateCode, string>(CheckPointStateCode.INPROGRESS, 'CheckPointStateCode.INPROGRESS'))\n\tresult.push(new Tuple<CheckPointStateCode, string>(CheckPointStateCode.COMPLETED, 'CheckPointStateCode.COMPLETED'))\n\t\n return result;\n}\n\n// Return map of CheckPointStateCode values and their display names\nexport function MapCheckPointStateCodes() : Map<CheckPointStateCode, string> {\n let result = new Map<CheckPointStateCode, string>();\n result.set(CheckPointStateCode.CREATED, 'Created');\n\tresult.set(CheckPointStateCode.INPROGRESS, 'Inprogress');\n\tresult.set(CheckPointStateCode.COMPLETED, 'Completed');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// HomePageViewCode represents the list of home page views: SYSTEM | DEVICES | MALICIOUS\nexport enum HomePageViewCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // System view [1] \n SYSTEM = 1,\n\n // Devices View [2] \n DEVICES = 2,\n\n // Malicious IP view [3] \n MALICIOUS = 3,\n\n}\n\n// Return list of HomePageViewCode values and their display names\nexport function GetHomePageViewCodes() : Tuple<HomePageViewCode, string>[] {\n\tlet result : Tuple<HomePageViewCode, string>[] = [];\n \n\tresult.push(new Tuple<HomePageViewCode, string>(HomePageViewCode.SYSTEM, 'HomePageViewCode.SYSTEM'))\n\tresult.push(new Tuple<HomePageViewCode, string>(HomePageViewCode.DEVICES, 'HomePageViewCode.DEVICES'))\n\tresult.push(new Tuple<HomePageViewCode, string>(HomePageViewCode.MALICIOUS, 'HomePageViewCode.MALICIOUS'))\n\t\n return result;\n}\n\n// Return map of HomePageViewCode values and their display names\nexport function MapHomePageViewCodes() : Map<HomePageViewCode, string> {\n let result = new Map<HomePageViewCode, string>();\n result.set(HomePageViewCode.UNDEFINED, 'Undefined');\n\tresult.set(HomePageViewCode.SYSTEM, 'System');\n\tresult.set(HomePageViewCode.DEVICES, 'Devices');\n\tresult.set(HomePageViewCode.MALICIOUS, 'Malicious');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// SeverityTypeCode represents the list of event severity levels: LOW | MEDIUM | HIGH | CRITICAL\nexport enum SeverityTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Low severity [1] \n LOW = 1,\n\n // Medium severity [2] \n MEDIUM = 2,\n\n // High severity [3] \n HIGH = 3,\n\n // Critical severity [4] \n CRITICAL = 4,\n\n}\n\n// Return list of SeverityTypeCode values and their display names\nexport function GetSeverityTypeCodes() : Tuple<SeverityTypeCode, string>[] {\n\tlet result : Tuple<SeverityTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<SeverityTypeCode, string>(SeverityTypeCode.LOW, 'SeverityTypeCode.LOW'))\n\tresult.push(new Tuple<SeverityTypeCode, string>(SeverityTypeCode.MEDIUM, 'SeverityTypeCode.MEDIUM'))\n\tresult.push(new Tuple<SeverityTypeCode, string>(SeverityTypeCode.HIGH, 'SeverityTypeCode.HIGH'))\n\tresult.push(new Tuple<SeverityTypeCode, string>(SeverityTypeCode.CRITICAL, 'SeverityTypeCode.CRITICAL'))\n\t\n return result;\n}\n\n// Return map of SeverityTypeCode values and their display names\nexport function MapSeverityTypeCodes() : Map<SeverityTypeCode, string> {\n let result = new Map<SeverityTypeCode, string>();\n result.set(SeverityTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(SeverityTypeCode.LOW, 'Low');\n\tresult.set(SeverityTypeCode.MEDIUM, 'Medium');\n\tresult.set(SeverityTypeCode.HIGH, 'High');\n\tresult.set(SeverityTypeCode.CRITICAL, 'Critical');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// UserTypeCode represents the list of user types: SYSADMIN | SUPPORT | USER | SERVICE ...\nexport enum UserTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // System administrator has access to all accounts and permissions to perform all actions [1] \n SYSADMIN = 1,\n\n // Support user has view permissions only for all accounts that enabled option Enable Support [2] \n SUPPORT = 2,\n\n // Account user - has access to specific accounts with role based access control [3] \n USER = 3,\n\n // Account service - to be used by other systems to perform actions using the API (can't login as a user to the portal) [4] \n SERVICE = 4,\n\n}\n\n// Return list of UserTypeCode values and their display names\nexport function GetUserTypeCodes() : Tuple<UserTypeCode, string>[] {\n\tlet result : Tuple<UserTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<UserTypeCode, string>(UserTypeCode.SYSADMIN, 'UserTypeCode.SYSADMIN'))\n\tresult.push(new Tuple<UserTypeCode, string>(UserTypeCode.SUPPORT, 'UserTypeCode.SUPPORT'))\n\tresult.push(new Tuple<UserTypeCode, string>(UserTypeCode.USER, 'UserTypeCode.USER'))\n\tresult.push(new Tuple<UserTypeCode, string>(UserTypeCode.SERVICE, 'UserTypeCode.SERVICE'))\n\t\n return result;\n}\n\n// Return map of UserTypeCode values and their display names\nexport function MapUserTypeCodes() : Map<UserTypeCode, string> {\n let result = new Map<UserTypeCode, string>();\n result.set(UserTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(UserTypeCode.SYSADMIN, 'Sysadmin');\n\tresult.set(UserTypeCode.SUPPORT, 'Support');\n\tresult.set(UserTypeCode.USER, 'User');\n\tresult.set(UserTypeCode.SERVICE, 'Service');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// WSOpCode represents WebSocket message operation codes\nexport enum WSOpCode {\n\n // Ping message for keep-alive [0] \n PING = 0,\n\n // Notification message sent from server to client [10] \n NOTIFICATION_MESSAGE = 10,\n\n // Notification acknowledgement sent from client to server [11] \n NOTIFICATION_MESSAGE_ACK = 11,\n\n}\n\n// Return list of WSOpCode values and their display names\nexport function GetWSOpCodes() : Tuple<WSOpCode, string>[] {\n\tlet result : Tuple<WSOpCode, string>[] = [];\n result.push(new Tuple<WSOpCode, string>(WSOpCode.PING, 'WSOpCode.PING'))\n\tresult.push(new Tuple<WSOpCode, string>(WSOpCode.NOTIFICATION_MESSAGE, 'WSOpCode.NOTIFICATION_MESSAGE'))\n\tresult.push(new Tuple<WSOpCode, string>(WSOpCode.NOTIFICATION_MESSAGE_ACK, 'WSOpCode.NOTIFICATION_MESSAGE_ACK'))\n\t\n return result;\n}\n\n// Return map of WSOpCode values and their display names\nexport function MapWSOpCodes() : Map<WSOpCode, string> {\n let result = new Map<WSOpCode, string>();\n result.set(WSOpCode.PING, 'Ping');\n\tresult.set(WSOpCode.NOTIFICATION_MESSAGE, 'Notification Message');\n\tresult.set(WSOpCode.NOTIFICATION_MESSAGE_ACK, 'Notification Message Ack');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// EventCategoryCode represents the list of event categories: UNDEFINED | SECURITY | OPERATIONS\nexport enum EventCategoryCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Cyber-Security event [1] \n SECURITY = 1,\n\n // Operational event [2] \n OPERATIONS = 2,\n\n}\n\n// Return list of EventCategoryCode values and their display names\nexport function GetEventCategoryCodes() : Tuple<EventCategoryCode, string>[] {\n\tlet result : Tuple<EventCategoryCode, string>[] = [];\n \n\tresult.push(new Tuple<EventCategoryCode, string>(EventCategoryCode.SECURITY, 'EventCategoryCode.SECURITY'))\n\tresult.push(new Tuple<EventCategoryCode, string>(EventCategoryCode.OPERATIONS, 'EventCategoryCode.OPERATIONS'))\n\t\n return result;\n}\n\n// Return map of EventCategoryCode values and their display names\nexport function MapEventCategoryCodes() : Map<EventCategoryCode, string> {\n let result = new Map<EventCategoryCode, string>();\n result.set(EventCategoryCode.UNDEFINED, 'Undefined');\n\tresult.set(EventCategoryCode.SECURITY, 'Security');\n\tresult.set(EventCategoryCode.OPERATIONS, 'Operations');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// ParserTaskCompletionStatus represents the parser task completion status: SUCCESS | FAILED | FAILED_WAS_ALREADY_COMPLETED | FAILED_ALREADY_INPROGRESS | FAILED_STREAM_DISABLED\nexport enum ParserTaskCompletionStatus {\n\n // Undefined [0] \n SUCCESS = 0,\n\n // Failed [1] \n FAILED = 1,\n\n // Failed, passed task was already completed [2] \n FAILED_WAS_ALREADY_COMPLETED = 2,\n\n // Failed, passed task already in progress \n FAILED_ALREADY_INPROGRESS = 3,\n\n // Failed, stream has been disabled since task published [4] \n FAILED_STREAM_DISABLED = 4,\n\n // Failed, empty files list [5] \n FAILED_EMPTY_FILES_LIST = 5,\n\n}\n\n// Return list of ParserTaskCompletionStatus values and their display names\nexport function GetParserTaskCompletionStatuss() : Tuple<ParserTaskCompletionStatus, string>[] {\n\tlet result : Tuple<ParserTaskCompletionStatus, string>[] = [];\n result.push(new Tuple<ParserTaskCompletionStatus, string>(ParserTaskCompletionStatus.SUCCESS, 'ParserTaskCompletionStatus.SUCCESS'))\n\tresult.push(new Tuple<ParserTaskCompletionStatus, string>(ParserTaskCompletionStatus.FAILED, 'ParserTaskCompletionStatus.FAILED'))\n\tresult.push(new Tuple<ParserTaskCompletionStatus, string>(ParserTaskCompletionStatus.FAILED_WAS_ALREADY_COMPLETED, 'ParserTaskCompletionStatus.FAILED_WAS_ALREADY_COMPLETED'))\n\tresult.push(new Tuple<ParserTaskCompletionStatus, string>(ParserTaskCompletionStatus.FAILED_ALREADY_INPROGRESS, 'ParserTaskCompletionStatus.FAILED_ALREADY_INPROGRESS'))\n\tresult.push(new Tuple<ParserTaskCompletionStatus, string>(ParserTaskCompletionStatus.FAILED_STREAM_DISABLED, 'ParserTaskCompletionStatus.FAILED_STREAM_DISABLED'))\n\tresult.push(new Tuple<ParserTaskCompletionStatus, string>(ParserTaskCompletionStatus.FAILED_EMPTY_FILES_LIST, 'ParserTaskCompletionStatus.FAILED_EMPTY_FILES_LIST'))\n\t\n return result;\n}\n\n// Return map of ParserTaskCompletionStatus values and their display names\nexport function MapParserTaskCompletionStatuss() : Map<ParserTaskCompletionStatus, string> {\n let result = new Map<ParserTaskCompletionStatus, string>();\n result.set(ParserTaskCompletionStatus.SUCCESS, 'Success');\n\tresult.set(ParserTaskCompletionStatus.FAILED, 'Failed');\n\tresult.set(ParserTaskCompletionStatus.FAILED_WAS_ALREADY_COMPLETED, 'Failed Was Already Completed');\n\tresult.set(ParserTaskCompletionStatus.FAILED_ALREADY_INPROGRESS, 'Failed Already Inprogress');\n\tresult.set(ParserTaskCompletionStatus.FAILED_STREAM_DISABLED, 'Failed Stream Disabled');\n\tresult.set(ParserTaskCompletionStatus.FAILED_EMPTY_FILES_LIST, 'Failed Empty Files List');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// DataSourceCode represents data source: EVENT | USAGE | SESSION ...\nexport enum DataSourceCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Data source based on Events [1] \n EVENT = 1,\n\n // Data source based on usage records [2] \n USAGE = 2,\n\n // Data source based on Session records [3] \n SESSION = 3,\n\n // Data source based on Flow records [4] \n FLOW = 4,\n\n}\n\n// Return list of DataSourceCode values and their display names\nexport function GetDataSourceCodes() : Tuple<DataSourceCode, string>[] {\n\tlet result : Tuple<DataSourceCode, string>[] = [];\n \n\tresult.push(new Tuple<DataSourceCode, string>(DataSourceCode.EVENT, 'DataSourceCode.EVENT'))\n\tresult.push(new Tuple<DataSourceCode, string>(DataSourceCode.USAGE, 'DataSourceCode.USAGE'))\n\tresult.push(new Tuple<DataSourceCode, string>(DataSourceCode.SESSION, 'DataSourceCode.SESSION'))\n\tresult.push(new Tuple<DataSourceCode, string>(DataSourceCode.FLOW, 'DataSourceCode.FLOW'))\n\t\n return result;\n}\n\n// Return map of DataSourceCode values and their display names\nexport function MapDataSourceCodes() : Map<DataSourceCode, string> {\n let result = new Map<DataSourceCode, string>();\n result.set(DataSourceCode.UNDEFINED, 'Undefined');\n\tresult.set(DataSourceCode.EVENT, 'Event');\n\tresult.set(DataSourceCode.USAGE, 'Usage');\n\tresult.set(DataSourceCode.SESSION, 'Session');\n\tresult.set(DataSourceCode.FLOW, 'Flow');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// AccountTypeCode represents the account type: DEMO | TRIAL | PARTNER ...\nexport enum AccountTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Demo account [1] \n DEMO = 1,\n\n // Trial account for pilots [2] \n TRIAL = 2,\n\n // Active account for partners [3] \n PARTNER = 3,\n\n // Active account for paying customers [4] \n CUSTOMER = 4,\n\n}\n\n// Return list of AccountTypeCode values and their display names\nexport function GetAccountTypeCodes() : Tuple<AccountTypeCode, string>[] {\n\tlet result : Tuple<AccountTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<AccountTypeCode, string>(AccountTypeCode.DEMO, 'AccountTypeCode.DEMO'))\n\tresult.push(new Tuple<AccountTypeCode, string>(AccountTypeCode.TRIAL, 'AccountTypeCode.TRIAL'))\n\tresult.push(new Tuple<AccountTypeCode, string>(AccountTypeCode.PARTNER, 'AccountTypeCode.PARTNER'))\n\tresult.push(new Tuple<AccountTypeCode, string>(AccountTypeCode.CUSTOMER, 'AccountTypeCode.CUSTOMER'))\n\t\n return result;\n}\n\n// Return map of AccountTypeCode values and their display names\nexport function MapAccountTypeCodes() : Map<AccountTypeCode, string> {\n let result = new Map<AccountTypeCode, string>();\n result.set(AccountTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(AccountTypeCode.DEMO, 'Demo');\n\tresult.set(AccountTypeCode.TRIAL, 'Trial');\n\tresult.set(AccountTypeCode.PARTNER, 'Partner');\n\tresult.set(AccountTypeCode.CUSTOMER, 'Customer');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// BoolTypeCode represents boolean values: UNDEFINED | FALSE | TRUE\nexport enum BoolTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // False [1] \n FALSE = 1,\n\n // True [2] \n TRUE = 2,\n\n}\n\n// Return list of BoolTypeCode values and their display names\nexport function GetBoolTypeCodes() : Tuple<BoolTypeCode, string>[] {\n\tlet result : Tuple<BoolTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<BoolTypeCode, string>(BoolTypeCode.FALSE, 'BoolTypeCode.FALSE'))\n\tresult.push(new Tuple<BoolTypeCode, string>(BoolTypeCode.TRUE, 'BoolTypeCode.TRUE'))\n\t\n return result;\n}\n\n// Return map of BoolTypeCode values and their display names\nexport function MapBoolTypeCodes() : Map<BoolTypeCode, string> {\n let result = new Map<BoolTypeCode, string>();\n result.set(BoolTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(BoolTypeCode.FALSE, 'False');\n\tresult.set(BoolTypeCode.TRUE, 'True');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// DeviceCreationCode represents the list of device creation policy: UNDEFINED | NONE | IP | SID | EID\nexport enum DeviceCreationCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Do not create device [1] \n NONE = 1,\n\n // Create Device based on static IP [2] \n IP = 2,\n\n // Create Device based on Subscriber ID - IMSI [3] \n SID = 3,\n\n // Create Device based on Equipment ID - IMEI [4] \n EID = 4,\n\n}\n\n// Return list of DeviceCreationCode values and their display names\nexport function GetDeviceCreationCodes() : Tuple<DeviceCreationCode, string>[] {\n\tlet result : Tuple<DeviceCreationCode, string>[] = [];\n \n\tresult.push(new Tuple<DeviceCreationCode, string>(DeviceCreationCode.NONE, 'DeviceCreationCode.NONE'))\n\tresult.push(new Tuple<DeviceCreationCode, string>(DeviceCreationCode.IP, 'DeviceCreationCode.IP'))\n\tresult.push(new Tuple<DeviceCreationCode, string>(DeviceCreationCode.SID, 'DeviceCreationCode.SID'))\n\tresult.push(new Tuple<DeviceCreationCode, string>(DeviceCreationCode.EID, 'DeviceCreationCode.EID'))\n\t\n return result;\n}\n\n// Return map of DeviceCreationCode values and their display names\nexport function MapDeviceCreationCodes() : Map<DeviceCreationCode, string> {\n let result = new Map<DeviceCreationCode, string>();\n result.set(DeviceCreationCode.UNDEFINED, 'Undefined');\n\tresult.set(DeviceCreationCode.NONE, 'None');\n\tresult.set(DeviceCreationCode.IP, 'Ip');\n\tresult.set(DeviceCreationCode.SID, 'Sid');\n\tresult.set(DeviceCreationCode.EID, 'Eid');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// FeatureCode represents the list of features: EVENTS_EXPORT\nexport enum FeatureCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Events export [1] \n EVENTS_EXPORT = 1,\n\n // Event source files [2] \n EVENT_SOURCE_FILES = 2,\n\n // Event preventive actions [3] \n EVENT_ACTION = 3,\n\n // Devices export [4] \n DEVICES_EXPORT = 4,\n\n // Device network map [5] \n DEVICE_NETWORK_MAP = 5,\n\n // Device preventive actions [6] \n DEVICE_ACTIONS = 6,\n\n // Network map [7] \n NETWORK_MAP = 7,\n\n // Compliance report [8] \n COMPLIANCE_REPORTS = 8,\n\n // User defined rules [9] \n CUSTOM_RULES = 9,\n\n // Integrations [10] \n INTEGRATIONS = 10,\n\n // General upgrade button [11] \n GENERAL_UPGRADE = 11,\n\n // Enable add/delete device actions [12] \n ADD_DELETE_DEVICE = 12,\n\n // AI based insights [13] \n ADVANCED_INSIGHTS = 13,\n\n}\n\n// Return list of FeatureCode values and their display names\nexport function GetFeatureCodes() : Tuple<FeatureCode, string>[] {\n\tlet result : Tuple<FeatureCode, string>[] = [];\n \n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.EVENTS_EXPORT, 'FeatureCode.EVENTS_EXPORT'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.EVENT_SOURCE_FILES, 'FeatureCode.EVENT_SOURCE_FILES'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.EVENT_ACTION, 'FeatureCode.EVENT_ACTION'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.DEVICES_EXPORT, 'FeatureCode.DEVICES_EXPORT'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.DEVICE_NETWORK_MAP, 'FeatureCode.DEVICE_NETWORK_MAP'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.DEVICE_ACTIONS, 'FeatureCode.DEVICE_ACTIONS'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.NETWORK_MAP, 'FeatureCode.NETWORK_MAP'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.COMPLIANCE_REPORTS, 'FeatureCode.COMPLIANCE_REPORTS'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.CUSTOM_RULES, 'FeatureCode.CUSTOM_RULES'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.INTEGRATIONS, 'FeatureCode.INTEGRATIONS'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.GENERAL_UPGRADE, 'FeatureCode.GENERAL_UPGRADE'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.ADD_DELETE_DEVICE, 'FeatureCode.ADD_DELETE_DEVICE'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.ADVANCED_INSIGHTS, 'FeatureCode.ADVANCED_INSIGHTS'))\n\t\n return result;\n}\n\n// Return map of FeatureCode values and their display names\nexport function MapFeatureCodes() : Map<FeatureCode, string> {\n let result = new Map<FeatureCode, string>();\n result.set(FeatureCode.UNDEFINED, 'Undefined');\n\tresult.set(FeatureCode.EVENTS_EXPORT, 'Events Export');\n\tresult.set(FeatureCode.EVENT_SOURCE_FILES, 'Event Source Files');\n\tresult.set(FeatureCode.EVENT_ACTION, 'Event Action');\n\tresult.set(FeatureCode.DEVICES_EXPORT, 'Devices Export');\n\tresult.set(FeatureCode.DEVICE_NETWORK_MAP, 'Device Network Map');\n\tresult.set(FeatureCode.DEVICE_ACTIONS, 'Device Actions');\n\tresult.set(FeatureCode.NETWORK_MAP, 'Network Map');\n\tresult.set(FeatureCode.COMPLIANCE_REPORTS, 'Compliance Reports');\n\tresult.set(FeatureCode.CUSTOM_RULES, 'Custom Rules');\n\tresult.set(FeatureCode.INTEGRATIONS, 'Integrations');\n\tresult.set(FeatureCode.GENERAL_UPGRADE, 'General Upgrade');\n\tresult.set(FeatureCode.ADD_DELETE_DEVICE, 'Add Delete Device');\n\tresult.set(FeatureCode.ADVANCED_INSIGHTS, 'Advanced Insights');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// IntegrationTriggerCode represents integration types: EVENT | ACTION\nexport enum IntegrationTriggerCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // EVENT based integration [1] \n EVENT = 1,\n\n // ACTION based integration [2] \n ACTION = 2,\n\n}\n\n// Return list of IntegrationTriggerCode values and their display names\nexport function GetIntegrationTriggerCodes() : Tuple<IntegrationTriggerCode, string>[] {\n\tlet result : Tuple<IntegrationTriggerCode, string>[] = [];\n \n\tresult.push(new Tuple<IntegrationTriggerCode, string>(IntegrationTriggerCode.EVENT, 'IntegrationTriggerCode.EVENT'))\n\tresult.push(new Tuple<IntegrationTriggerCode, string>(IntegrationTriggerCode.ACTION, 'IntegrationTriggerCode.ACTION'))\n\t\n return result;\n}\n\n// Return map of IntegrationTriggerCode values and their display names\nexport function MapIntegrationTriggerCodes() : Map<IntegrationTriggerCode, string> {\n let result = new Map<IntegrationTriggerCode, string>();\n result.set(IntegrationTriggerCode.UNDEFINED, 'Undefined');\n\tresult.set(IntegrationTriggerCode.EVENT, 'Event');\n\tresult.set(IntegrationTriggerCode.ACTION, 'Action');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// IntegrationTypeCode represents integration types: HTTP | SMTP | EMAIL | SMS\nexport enum IntegrationTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // General HTTP(S) based integration [1] \n HTTP = 1,\n\n // General SMTP based integration [2] \n SMTP = 2,\n\n // Internal email service integration [3] \n EMAIL = 3,\n\n // Internal SMS service integration [4] \n SMS = 4,\n\n}\n\n// Return list of IntegrationTypeCode values and their display names\nexport function GetIntegrationTypeCodes() : Tuple<IntegrationTypeCode, string>[] {\n\tlet result : Tuple<IntegrationTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<IntegrationTypeCode, string>(IntegrationTypeCode.HTTP, 'IntegrationTypeCode.HTTP'))\n\tresult.push(new Tuple<IntegrationTypeCode, string>(IntegrationTypeCode.SMTP, 'IntegrationTypeCode.SMTP'))\n\tresult.push(new Tuple<IntegrationTypeCode, string>(IntegrationTypeCode.EMAIL, 'IntegrationTypeCode.EMAIL'))\n\tresult.push(new Tuple<IntegrationTypeCode, string>(IntegrationTypeCode.SMS, 'IntegrationTypeCode.SMS'))\n\t\n return result;\n}\n\n// Return map of IntegrationTypeCode values and their display names\nexport function MapIntegrationTypeCodes() : Map<IntegrationTypeCode, string> {\n let result = new Map<IntegrationTypeCode, string>();\n result.set(IntegrationTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(IntegrationTypeCode.HTTP, 'Http');\n\tresult.set(IntegrationTypeCode.SMTP, 'Smtp');\n\tresult.set(IntegrationTypeCode.EMAIL, 'Email');\n\tresult.set(IntegrationTypeCode.SMS, 'Sms');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// MemberRoleCode represents the list of roles available for a user in the account: ADMIN | SUPERVISOR | OPERATOR ...\nexport enum MemberRoleCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Account administrator can perform all operations [1] \n ADMIN = 1,\n\n // Supervisor can perform operations on events and generate reports [2] \n SUPERVISOR = 2,\n\n // Account operator can perform operations on events only [3] \n OPERATOR = 3,\n\n // Viewer has read-only permissions only [4] \n VIEWER = 4,\n\n}\n\n// Return list of MemberRoleCode values and their display names\nexport function GetMemberRoleCodes() : Tuple<MemberRoleCode, string>[] {\n\tlet result : Tuple<MemberRoleCode, string>[] = [];\n \n\tresult.push(new Tuple<MemberRoleCode, string>(MemberRoleCode.ADMIN, 'MemberRoleCode.ADMIN'))\n\tresult.push(new Tuple<MemberRoleCode, string>(MemberRoleCode.SUPERVISOR, 'MemberRoleCode.SUPERVISOR'))\n\tresult.push(new Tuple<MemberRoleCode, string>(MemberRoleCode.OPERATOR, 'MemberRoleCode.OPERATOR'))\n\tresult.push(new Tuple<MemberRoleCode, string>(MemberRoleCode.VIEWER, 'MemberRoleCode.VIEWER'))\n\t\n return result;\n}\n\n// Return map of MemberRoleCode values and their display names\nexport function MapMemberRoleCodes() : Map<MemberRoleCode, string> {\n let result = new Map<MemberRoleCode, string>();\n result.set(MemberRoleCode.UNDEFINED, 'Undefined');\n\tresult.set(MemberRoleCode.ADMIN, 'Admin');\n\tresult.set(MemberRoleCode.SUPERVISOR, 'Supervisor');\n\tresult.set(MemberRoleCode.OPERATOR, 'Operator');\n\tresult.set(MemberRoleCode.VIEWER, 'Viewer');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// TimePeriodCode represents a code for a time period (e.g., Minute, Hour, Day).\nexport enum TimePeriodCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Minute [1] \n MINUTE = 1,\n\n // Hour [2] \n HOUR = 2,\n\n // Day [3] \n DAY = 3,\n\n // Week [4] \n WEEK = 4,\n\n // Month [5] \n MONTH = 5,\n\n}\n\n// Return list of TimePeriodCode values and their display names\nexport function GetTimePeriodCodes() : Tuple<TimePeriodCode, string>[] {\n\tlet result : Tuple<TimePeriodCode, string>[] = [];\n \n\tresult.push(new Tuple<TimePeriodCode, string>(TimePeriodCode.MINUTE, 'TimePeriodCode.MINUTE'))\n\tresult.push(new Tuple<TimePeriodCode, string>(TimePeriodCode.HOUR, 'TimePeriodCode.HOUR'))\n\tresult.push(new Tuple<TimePeriodCode, string>(TimePeriodCode.DAY, 'TimePeriodCode.DAY'))\n\tresult.push(new Tuple<TimePeriodCode, string>(TimePeriodCode.WEEK, 'TimePeriodCode.WEEK'))\n\tresult.push(new Tuple<TimePeriodCode, string>(TimePeriodCode.MONTH, 'TimePeriodCode.MONTH'))\n\t\n return result;\n}\n\n// Return map of TimePeriodCode values and their display names\nexport function MapTimePeriodCodes() : Map<TimePeriodCode, string> {\n let result = new Map<TimePeriodCode, string>();\n result.set(TimePeriodCode.UNDEFINED, 'Undefined');\n\tresult.set(TimePeriodCode.MINUTE, 'Minute');\n\tresult.set(TimePeriodCode.HOUR, 'Hour');\n\tresult.set(TimePeriodCode.DAY, 'Day');\n\tresult.set(TimePeriodCode.WEEK, 'Week');\n\tresult.set(TimePeriodCode.MONTH, 'Month');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// DeviceIdentityCode represents the list of device Identity policy : AUTO | IP | IMSI | ICCID | MSISDN | IMEI | MAC\nexport enum DeviceIdentityCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Device Identity is provided by the system [1] \n AUTO = 1,\n\n // Device Identity is based on static IP [2] \n IP = 2,\n\n // Device Identity is based on Subscriber ID - IMSI [3] \n IMSI = 3,\n\n // Device Identity is based on IccId [4] \n ICCID = 4,\n\n // Device Identity is based on msisdn [5] \n MSISDN = 5,\n\n // Device Identity is based on Equipment ID - IMEI [6] \n IMEI = 6,\n\n // Device Identity is based on MAC address [7] \n MAC = 7,\n\n}\n\n// Return list of DeviceIdentityCode values and their display names\nexport function GetDeviceIdentityCodes() : Tuple<DeviceIdentityCode, string>[] {\n\tlet result : Tuple<DeviceIdentityCode, string>[] = [];\n \n\tresult.push(new Tuple<DeviceIdentityCode, string>(DeviceIdentityCode.AUTO, 'DeviceIdentityCode.AUTO'))\n\tresult.push(new Tuple<DeviceIdentityCode, string>(DeviceIdentityCode.IP, 'DeviceIdentityCode.IP'))\n\tresult.push(new Tuple<DeviceIdentityCode, string>(DeviceIdentityCode.IMSI, 'DeviceIdentityCode.IMSI'))\n\tresult.push(new Tuple<DeviceIdentityCode, string>(DeviceIdentityCode.ICCID, 'DeviceIdentityCode.ICCID'))\n\tresult.push(new Tuple<DeviceIdentityCode, string>(DeviceIdentityCode.MSISDN, 'DeviceIdentityCode.MSISDN'))\n\tresult.push(new Tuple<DeviceIdentityCode, string>(DeviceIdentityCode.IMEI, 'DeviceIdentityCode.IMEI'))\n\tresult.push(new Tuple<DeviceIdentityCode, string>(DeviceIdentityCode.MAC, 'DeviceIdentityCode.MAC'))\n\t\n return result;\n}\n\n// Return map of DeviceIdentityCode values and their display names\nexport function MapDeviceIdentityCodes() : Map<DeviceIdentityCode, string> {\n let result = new Map<DeviceIdentityCode, string>();\n result.set(DeviceIdentityCode.UNDEFINED, 'Undefined');\n\tresult.set(DeviceIdentityCode.AUTO, 'Auto');\n\tresult.set(DeviceIdentityCode.IP, 'Ip');\n\tresult.set(DeviceIdentityCode.IMSI, 'Imsi');\n\tresult.set(DeviceIdentityCode.ICCID, 'Iccid');\n\tresult.set(DeviceIdentityCode.MSISDN, 'Msisdn');\n\tresult.set(DeviceIdentityCode.IMEI, 'Imei');\n\tresult.set(DeviceIdentityCode.MAC, 'Mac');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// InsightSourceCode represents the list of insight sources: USAGE | EVENT | ALERT\nexport enum InsightSourceCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Inactive (muted) insight [1] \n USAGE = 1,\n\n // Pending insight (not visible yet - for testing only) [2] \n EVENT = 2,\n\n // Active insight [3] \n ALERT = 3,\n\n}\n\n// Return list of InsightSourceCode values and their display names\nexport function GetInsightSourceCodes() : Tuple<InsightSourceCode, string>[] {\n\tlet result : Tuple<InsightSourceCode, string>[] = [];\n \n\tresult.push(new Tuple<InsightSourceCode, string>(InsightSourceCode.USAGE, 'InsightSourceCode.USAGE'))\n\tresult.push(new Tuple<InsightSourceCode, string>(InsightSourceCode.EVENT, 'InsightSourceCode.EVENT'))\n\tresult.push(new Tuple<InsightSourceCode, string>(InsightSourceCode.ALERT, 'InsightSourceCode.ALERT'))\n\t\n return result;\n}\n\n// Return map of InsightSourceCode values and their display names\nexport function MapInsightSourceCodes() : Map<InsightSourceCode, string> {\n let result = new Map<InsightSourceCode, string>();\n result.set(InsightSourceCode.UNDEFINED, 'Undefined');\n\tresult.set(InsightSourceCode.USAGE, 'Usage');\n\tresult.set(InsightSourceCode.EVENT, 'Event');\n\tresult.set(InsightSourceCode.ALERT, 'Alert');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// InsightStatusCode represents the list of insight statuses: INACTIVE | PENDING | ACTIVE\nexport enum InsightStatusCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Inactive (muted) insight [1] \n INACTIVE = 1,\n\n // Pending insight (not visible yet - for testing only) [2] \n PENDING = 2,\n\n // Active insight [3] \n ACTIVE = 3,\n\n}\n\n// Return list of InsightStatusCode values and their display names\nexport function GetInsightStatusCodes() : Tuple<InsightStatusCode, string>[] {\n\tlet result : Tuple<InsightStatusCode, string>[] = [];\n \n\tresult.push(new Tuple<InsightStatusCode, string>(InsightStatusCode.INACTIVE, 'InsightStatusCode.INACTIVE'))\n\tresult.push(new Tuple<InsightStatusCode, string>(InsightStatusCode.PENDING, 'InsightStatusCode.PENDING'))\n\tresult.push(new Tuple<InsightStatusCode, string>(InsightStatusCode.ACTIVE, 'InsightStatusCode.ACTIVE'))\n\t\n return result;\n}\n\n// Return map of InsightStatusCode values and their display names\nexport function MapInsightStatusCodes() : Map<InsightStatusCode, string> {\n let result = new Map<InsightStatusCode, string>();\n result.set(InsightStatusCode.UNDEFINED, 'Undefined');\n\tresult.set(InsightStatusCode.INACTIVE, 'Inactive');\n\tresult.set(InsightStatusCode.PENDING, 'Pending');\n\tresult.set(InsightStatusCode.ACTIVE, 'Active');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// InsightTypeCode represents the list of insights types: EVENTS | STATISTICS | AI_BASED\nexport enum InsightTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Event Group insight [1] \n EVENTS = 2,\n\n // Statistical insight [2] \n STATISTICS = 2,\n\n // AI/ML-based insight [3] \n AI_BASED = 3,\n\n}\n\n// Return list of InsightTypeCode values and their display names\nexport function GetInsightTypeCodes() : Tuple<InsightTypeCode, string>[] {\n\tlet result : Tuple<InsightTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<InsightTypeCode, string>(InsightTypeCode.EVENTS, 'InsightTypeCode.EVENTS'))\n\tresult.push(new Tuple<InsightTypeCode, string>(InsightTypeCode.STATISTICS, 'InsightTypeCode.STATISTICS'))\n\tresult.push(new Tuple<InsightTypeCode, string>(InsightTypeCode.AI_BASED, 'InsightTypeCode.AI_BASED'))\n\t\n return result;\n}\n\n// Return map of InsightTypeCode values and their display names\nexport function MapInsightTypeCodes() : Map<InsightTypeCode, string> {\n let result = new Map<InsightTypeCode, string>();\n result.set(InsightTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(InsightTypeCode.EVENTS, 'Events');\n\tresult.set(InsightTypeCode.STATISTICS, 'Statistics');\n\tresult.set(InsightTypeCode.AI_BASED, 'Ai Based');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// NotificationTypeCode represents the list of notification types: ONBOARDING | IS_READY | REPORTS_COUNT_TO_SEND\nexport enum NotificationTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Onboarding has started [1] \n ACCOUNT_ONBOARDING = 1,\n\n // Account is ready [2] \n ACCOUNT_IS_READY = 2,\n\n // Reports count to send [3] \n REPORTS_COUNT_TO_SEND = 3,\n\n // Report [4] \n REPORT = 4,\n\n // SYSTEM [5] \n SYSTEM = 5,\n\n // DEVICE [6] \n DEVICE = 6,\n\n}\n\n// Return list of NotificationTypeCode values and their display names\nexport function GetNotificationTypeCodes() : Tuple<NotificationTypeCode, string>[] {\n\tlet result : Tuple<NotificationTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<NotificationTypeCode, string>(NotificationTypeCode.ACCOUNT_ONBOARDING, 'NotificationTypeCode.ACCOUNT_ONBOARDING'))\n\tresult.push(new Tuple<NotificationTypeCode, string>(NotificationTypeCode.ACCOUNT_IS_READY, 'NotificationTypeCode.ACCOUNT_IS_READY'))\n\tresult.push(new Tuple<NotificationTypeCode, string>(NotificationTypeCode.REPORTS_COUNT_TO_SEND, 'NotificationTypeCode.REPORTS_COUNT_TO_SEND'))\n\tresult.push(new Tuple<NotificationTypeCode, string>(NotificationTypeCode.REPORT, 'NotificationTypeCode.REPORT'))\n\tresult.push(new Tuple<NotificationTypeCode, string>(NotificationTypeCode.SYSTEM, 'NotificationTypeCode.SYSTEM'))\n\tresult.push(new Tuple<NotificationTypeCode, string>(NotificationTypeCode.DEVICE, 'NotificationTypeCode.DEVICE'))\n\t\n return result;\n}\n\n// Return map of NotificationTypeCode values and their display names\nexport function MapNotificationTypeCodes() : Map<NotificationTypeCode, string> {\n let result = new Map<NotificationTypeCode, string>();\n result.set(NotificationTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(NotificationTypeCode.ACCOUNT_ONBOARDING, 'Account Onboarding');\n\tresult.set(NotificationTypeCode.ACCOUNT_IS_READY, 'Account Is Ready');\n\tresult.set(NotificationTypeCode.REPORTS_COUNT_TO_SEND, 'Reports Count To Send');\n\tresult.set(NotificationTypeCode.REPORT, 'Report');\n\tresult.set(NotificationTypeCode.SYSTEM, 'System');\n\tresult.set(NotificationTypeCode.DEVICE, 'Device');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// ReportTypeCode represents the list of report types: COMPLIANCE | DEVICES | EVENTS ...\nexport enum ReportTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Compliance report [1] \n COMPLIANCE = 1,\n\n // Devices report [2] \n DEVICES = 2,\n\n // Events report [3] \n EVENTS = 3,\n\n}\n\n// Return list of ReportTypeCode values and their display names\nexport function GetReportTypeCodes() : Tuple<ReportTypeCode, string>[] {\n\tlet result : Tuple<ReportTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<ReportTypeCode, string>(ReportTypeCode.COMPLIANCE, 'ReportTypeCode.COMPLIANCE'))\n\tresult.push(new Tuple<ReportTypeCode, string>(ReportTypeCode.DEVICES, 'ReportTypeCode.DEVICES'))\n\tresult.push(new Tuple<ReportTypeCode, string>(ReportTypeCode.EVENTS, 'ReportTypeCode.EVENTS'))\n\t\n return result;\n}\n\n// Return map of ReportTypeCode values and their display names\nexport function MapReportTypeCodes() : Map<ReportTypeCode, string> {\n let result = new Map<ReportTypeCode, string>();\n result.set(ReportTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(ReportTypeCode.COMPLIANCE, 'Compliance');\n\tresult.set(ReportTypeCode.DEVICES, 'Devices');\n\tresult.set(ReportTypeCode.EVENTS, 'Events');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// TrafficDirectionCode represents direction of network flow: INBOUND | OUTBOUND\nexport enum TrafficDirectionCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Denotes inbound network traffic [1] \n INBOUND = 1,\n\n // Denotes outbound network traffic [2] \n OUTBOUND = 2,\n\n // Denotes bidirectional network traffic [3] \n INOUT = 3,\n\n}\n\n// Return list of TrafficDirectionCode values and their display names\nexport function GetTrafficDirectionCodes() : Tuple<TrafficDirectionCode, string>[] {\n\tlet result : Tuple<TrafficDirectionCode, string>[] = [];\n \n\tresult.push(new Tuple<TrafficDirectionCode, string>(TrafficDirectionCode.INBOUND, 'TrafficDirectionCode.INBOUND'))\n\tresult.push(new Tuple<TrafficDirectionCode, string>(TrafficDirectionCode.OUTBOUND, 'TrafficDirectionCode.OUTBOUND'))\n\tresult.push(new Tuple<TrafficDirectionCode, string>(TrafficDirectionCode.INOUT, 'TrafficDirectionCode.INOUT'))\n\t\n return result;\n}\n\n// Return map of TrafficDirectionCode values and their display names\nexport function MapTrafficDirectionCodes() : Map<TrafficDirectionCode, string> {\n let result = new Map<TrafficDirectionCode, string>();\n result.set(TrafficDirectionCode.UNDEFINED, 'Undefined');\n\tresult.set(TrafficDirectionCode.INBOUND, 'Inbound');\n\tresult.set(TrafficDirectionCode.OUTBOUND, 'Outbound');\n\tresult.set(TrafficDirectionCode.INOUT, 'Inout');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// HttpMethodCode represents the list of HTTP methods: GET | POST | PUT | PATCH | DELETED\nexport enum HttpMethodCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // GET [1] \n GET = 1,\n\n // POST [2] \n POST = 2,\n\n // PUT [3] \n PUT = 3,\n\n // PATCH [4] \n PATCH = 4,\n\n // Deleted account [5] \n DELETED = 5,\n\n}\n\n// Return list of HttpMethodCode values and their display names\nexport function GetHttpMethodCodes() : Tuple<HttpMethodCode, string>[] {\n\tlet result : Tuple<HttpMethodCode, string>[] = [];\n \n\tresult.push(new Tuple<HttpMethodCode, string>(HttpMethodCode.GET, 'HttpMethodCode.GET'))\n\tresult.push(new Tuple<HttpMethodCode, string>(HttpMethodCode.POST, 'HttpMethodCode.POST'))\n\tresult.push(new Tuple<HttpMethodCode, string>(HttpMethodCode.PUT, 'HttpMethodCode.PUT'))\n\tresult.push(new Tuple<HttpMethodCode, string>(HttpMethodCode.PATCH, 'HttpMethodCode.PATCH'))\n\tresult.push(new Tuple<HttpMethodCode, string>(HttpMethodCode.DELETED, 'HttpMethodCode.DELETED'))\n\t\n return result;\n}\n\n// Return map of HttpMethodCode values and their display names\nexport function MapHttpMethodCodes() : Map<HttpMethodCode, string> {\n let result = new Map<HttpMethodCode, string>();\n result.set(HttpMethodCode.UNDEFINED, 'Undefined');\n\tresult.set(HttpMethodCode.GET, 'Get');\n\tresult.set(HttpMethodCode.POST, 'Post');\n\tresult.set(HttpMethodCode.PUT, 'Put');\n\tresult.set(HttpMethodCode.PATCH, 'Patch');\n\tresult.set(HttpMethodCode.DELETED, 'Deleted');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// RuleTypeCode represents the sources (engines) of rules: SUSPICIOUS_IP | STATIC | ANOMALY | IDS ...\nexport enum RuleTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Suspicious IP based on IP reputation engine [1] \n SUSPICIOUS_IP = 1,\n\n // Static rule based on deterministic rule engine [2] \n STATIC = 2,\n\n // Rule based on anomaly detection and classification [3] \n ANOMALY = 3,\n\n // IDS Rule based on IDS engine [4] \n IDS = 4,\n\n}\n\n// Return list of RuleTypeCode values and their display names\nexport function GetRuleTypeCodes() : Tuple<RuleTypeCode, string>[] {\n\tlet result : Tuple<RuleTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<RuleTypeCode, string>(RuleTypeCode.SUSPICIOUS_IP, 'RuleTypeCode.SUSPICIOUS_IP'))\n\tresult.push(new Tuple<RuleTypeCode, string>(RuleTypeCode.STATIC, 'RuleTypeCode.STATIC'))\n\tresult.push(new Tuple<RuleTypeCode, string>(RuleTypeCode.ANOMALY, 'RuleTypeCode.ANOMALY'))\n\tresult.push(new Tuple<RuleTypeCode, string>(RuleTypeCode.IDS, 'RuleTypeCode.IDS'))\n\t\n return result;\n}\n\n// Return map of RuleTypeCode values and their display names\nexport function MapRuleTypeCodes() : Map<RuleTypeCode, string> {\n let result = new Map<RuleTypeCode, string>();\n result.set(RuleTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(RuleTypeCode.SUSPICIOUS_IP, 'Suspicious Ip');\n\tresult.set(RuleTypeCode.STATIC, 'Static');\n\tresult.set(RuleTypeCode.ANOMALY, 'Anomaly');\n\tresult.set(RuleTypeCode.IDS, 'Ids');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// DeviceActionCode represents device related preventive actions: REDIRECT | SUSPEND | THROTTLE ...\nexport enum DeviceActionCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Redirect device traffic [1] \n REDIRECT = 1,\n\n // Suspend device [2] \n SUSPEND = 2,\n\n // Throttle device traffic [3] \n THROTTLE = 3,\n\n // Block specific IP [4] \n BLOCK_IP = 4,\n\n // Unsuspend device [5] \n UNSUSPEND = 5,\n\n}\n\n// Return list of DeviceActionCode values and their display names\nexport function GetDeviceActionCodes() : Tuple<DeviceActionCode, string>[] {\n\tlet result : Tuple<DeviceActionCode, string>[] = [];\n \n\tresult.push(new Tuple<DeviceActionCode, string>(DeviceActionCode.REDIRECT, 'DeviceActionCode.REDIRECT'))\n\tresult.push(new Tuple<DeviceActionCode, string>(DeviceActionCode.SUSPEND, 'DeviceActionCode.SUSPEND'))\n\tresult.push(new Tuple<DeviceActionCode, string>(DeviceActionCode.THROTTLE, 'DeviceActionCode.THROTTLE'))\n\tresult.push(new Tuple<DeviceActionCode, string>(DeviceActionCode.BLOCK_IP, 'DeviceActionCode.BLOCK_IP'))\n\tresult.push(new Tuple<DeviceActionCode, string>(DeviceActionCode.UNSUSPEND, 'DeviceActionCode.UNSUSPEND'))\n\t\n return result;\n}\n\n// Return map of DeviceActionCode values and their display names\nexport function MapDeviceActionCodes() : Map<DeviceActionCode, string> {\n let result = new Map<DeviceActionCode, string>();\n result.set(DeviceActionCode.UNDEFINED, 'Undefined');\n\tresult.set(DeviceActionCode.REDIRECT, 'Redirect');\n\tresult.set(DeviceActionCode.SUSPEND, 'Suspend');\n\tresult.set(DeviceActionCode.THROTTLE, 'Throttle');\n\tresult.set(DeviceActionCode.BLOCK_IP, 'Block Ip');\n\tresult.set(DeviceActionCode.UNSUSPEND, 'Unsuspend');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// DeviceTypeCode represents device types: CONTROLLER | METER | SENSOR | CAMERA | POS ...\nexport enum DeviceTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Other (Unknown Device) [1] \n OTHER = 1,\n\n // Industrial Controller [2] \n CONTROLLER = 2,\n\n // General smart meter [3] \n METER = 3,\n\n // General sensor [4] \n SENSOR = 4,\n\n // General camera [5] \n CAMERA = 5,\n\n // Point of sale [6] \n POS = 6,\n\n // Pump [7] \n PUMP = 7,\n\n // EV charging station' [8] \n CHARGING_STATION = 8,\n\n // Smart lightning [9] \n LIGHTNING = 9,\n\n // Temperature sensor [10] \n TEMPERATURE_SENSOR = 10,\n\n // Air Quality sensor [11] \n AIR_QUALITY_SENSOR = 11,\n\n // Valve [12] \n VALVE = 12,\n\n // Gateway [13] \n GATEWAY = 13,\n\n // ATM [14] \n ATM = 14,\n\n}\n\n// Return list of DeviceTypeCode values and their display names\nexport function GetDeviceTypeCodes() : Tuple<DeviceTypeCode, string>[] {\n\tlet result : Tuple<DeviceTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.OTHER, 'DeviceTypeCode.OTHER'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.CONTROLLER, 'DeviceTypeCode.CONTROLLER'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.METER, 'DeviceTypeCode.METER'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.SENSOR, 'DeviceTypeCode.SENSOR'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.CAMERA, 'DeviceTypeCode.CAMERA'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.POS, 'DeviceTypeCode.POS'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.PUMP, 'DeviceTypeCode.PUMP'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.CHARGING_STATION, 'DeviceTypeCode.CHARGING_STATION'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.LIGHTNING, 'DeviceTypeCode.LIGHTNING'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.TEMPERATURE_SENSOR, 'DeviceTypeCode.TEMPERATURE_SENSOR'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.AIR_QUALITY_SENSOR, 'DeviceTypeCode.AIR_QUALITY_SENSOR'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.VALVE, 'DeviceTypeCode.VALVE'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.GATEWAY, 'DeviceTypeCode.GATEWAY'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.ATM, 'DeviceTypeCode.ATM'))\n\t\n return result;\n}\n\n// Return map of DeviceTypeCode values and their display names\nexport function MapDeviceTypeCodes() : Map<DeviceTypeCode, string> {\n let result = new Map<DeviceTypeCode, string>();\n result.set(DeviceTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(DeviceTypeCode.OTHER, 'Other');\n\tresult.set(DeviceTypeCode.CONTROLLER, 'Controller');\n\tresult.set(DeviceTypeCode.METER, 'Meter');\n\tresult.set(DeviceTypeCode.SENSOR, 'Sensor');\n\tresult.set(DeviceTypeCode.CAMERA, 'Camera');\n\tresult.set(DeviceTypeCode.POS, 'Pos');\n\tresult.set(DeviceTypeCode.PUMP, 'Pump');\n\tresult.set(DeviceTypeCode.CHARGING_STATION, 'Charging Station');\n\tresult.set(DeviceTypeCode.LIGHTNING, 'Lightning');\n\tresult.set(DeviceTypeCode.TEMPERATURE_SENSOR, 'Temperature Sensor');\n\tresult.set(DeviceTypeCode.AIR_QUALITY_SENSOR, 'Air Quality Sensor');\n\tresult.set(DeviceTypeCode.VALVE, 'Valve');\n\tresult.set(DeviceTypeCode.GATEWAY, 'Gateway');\n\tresult.set(DeviceTypeCode.ATM, 'Atm');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// EventStatusCode represents the list of event types: UNDEFINED | NEW | OPEN | CLOSED_TRUE | CLOSED_FALSE\nexport enum EventStatusCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // New event [1] \n NEW = 1,\n\n // Open event, handled by the operator [2] \n OPEN = 2,\n\n // Closed event (tagged as True event) [3] \n CLOSED_TRUE = 3,\n\n // Closed event (tagged as False event) [4] \n CLOSED_FALSE = 4,\n\n}\n\n// Return list of EventStatusCode values and their display names\nexport function GetEventStatusCodes() : Tuple<EventStatusCode, string>[] {\n\tlet result : Tuple<EventStatusCode, string>[] = [];\n \n\tresult.push(new Tuple<EventStatusCode, string>(EventStatusCode.NEW, 'EventStatusCode.NEW'))\n\tresult.push(new Tuple<EventStatusCode, string>(EventStatusCode.OPEN, 'EventStatusCode.OPEN'))\n\tresult.push(new Tuple<EventStatusCode, string>(EventStatusCode.CLOSED_TRUE, 'EventStatusCode.CLOSED_TRUE'))\n\tresult.push(new Tuple<EventStatusCode, string>(EventStatusCode.CLOSED_FALSE, 'EventStatusCode.CLOSED_FALSE'))\n\t\n return result;\n}\n\n// Return map of EventStatusCode values and their display names\nexport function MapEventStatusCodes() : Map<EventStatusCode, string> {\n let result = new Map<EventStatusCode, string>();\n result.set(EventStatusCode.UNDEFINED, 'Undefined');\n\tresult.set(EventStatusCode.NEW, 'New');\n\tresult.set(EventStatusCode.OPEN, 'Open');\n\tresult.set(EventStatusCode.CLOSED_TRUE, 'Closed True');\n\tresult.set(EventStatusCode.CLOSED_FALSE, 'Closed False');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// EventTypeCode represents the list of event types: UNDEFINED | OTHER | DEVICE_TAKEOVER\nexport enum EventTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Other (Unknown Event) [1] \n OTHER = 1,\n\n // Device Takeover [2] \n DEVICE_TAKEOVER = 2,\n\n // DDoS [3] \n DDOS = 3,\n\n // Unknown Malware [4] \n UNKNOWN_MALWARE = 4,\n\n // Man-in-the-Middle [5] \n MAN_IN_THE_MIDDLE = 5,\n\n // Data Theft [6] \n DATA_THEFT = 6,\n\n // Port Scanning [7] \n PORT_SCANNING = 7,\n\n // Abnormal Download [8] \n ABNORMAL_DOWNLOAD = 8,\n\n // Abnormal Incoming Connection [9] \n ABNORMAL_INCOMING_CONNECTION = 9,\n\n // Unsuccessful Connection Attempts [10] \n UNSUCCESSFUL_CONNECTION_ATTEMPTS = 10,\n\n // High Volume Transmit [11] \n HIGH_VOLUME_TRANSIT = 11,\n\n // Device Level Attack [12] \n DEVICE_LEVEL_ATTACK = 12,\n\n // Replay Attack [13] \n REPLAY_ATTACK = 13,\n\n // Attempted Device Takeover [14] \n DEVICE_TAKEOVER_ATTEMPT = 14,\n\n // Unknown Operation' [15] \n UNKNOWN_OPERATION = 15,\n\n // Crypto Mining [16] \n CRYPTO_MINING = 16,\n\n // Suspicious IP [17] \n SUSPICIOUS_IP = 17,\n\n // Abnormal number of outbound ports [18] \n ABNORMAL_OUTBOUND_PORTS = 18,\n\n // Abnormal number of outbound endpoints (destinations) [19] \n ABNORMAL_OUTBOUND_ENDPOINTS = 19,\n\n // Sim Switch [20] \n SIM_SWITCH = 20,\n\n // SIM misusage [21] \n SIM_MISUSAGE = 21,\n\n // Device disconnect [22] \n DEVICE_DISCONNECTION = 22,\n\n // Anomaly detected [23] \n ANOMALY_DETECTED = 23,\n\n // DGA DNS Query [24] \n DGA_DNS_QUERY = 24,\n\n // CASE-MUTATED DNS Query [25] \n CASE_MUTATED_DNS_QUERY = 25,\n\n // Suspicious IP OUT [27] \n SUSPICIOUS_IP_OUT = 27,\n\n // DNS request for known IP/MAC lookup service [28] \n IP_LOOKUP_DNS_REQUEST = 28,\n\n // Excessive conn attempts non-standard DNS port [29] \n EXCESSIVE_NONSTD_DNS_ATTEMPTS = 29,\n\n // Conn attempt to non-trusted endpoint over exploited port [30] \n IOT_MALWARE_PORT_CONN = 30,\n\n // IoT outbound connection to Windows worm/exploit port [31] \n IOT_OUTBOUND_WIN_WORM_PORT = 31,\n\n // IoT outbound connection to email/spam-related port [32] \n IOT_OUTBOUND_EMAIL_SPAM_PORT = 32,\n\n // IoT outbound connection to notorious/misused service port [33] \n IOT_OUTBOUND_NOTORIOUS_PORT = 33,\n\n // IoT outbound long-lived conn to alt-SSH [34] \n IOT_OUTBOUND_LONG_CONN_ALT_SSH = 34,\n\n // Fast connect/disconnect burst (no data) from local endpoint [35] \n IOT_OUTBOUND_FAST_CONNECT_BURST = 35,\n\n // Fast connect/disconnect burst (no data) between local endpoints [36] \n IOT_LOCAL_FAST_CONNECT_BURST = 36,\n\n // DNS query to high-risk TLD [37] \n IOT_HIGH_RISK_TLD_QUERY = 37,\n\n // DNS query of type TXT from IoT device to public resolver [38] \n IOT_DNS_TXT_PUBLIC_RESOLVER = 38,\n\n // FTP credentials sent in cleartext (USER/PASS over TCP/21) [39] \n IOT_FTP_PLAINTEXT_CREDS = 39,\n\n}\n\n// Return list of EventTypeCode values and their display names\nexport function GetEventTypeCodes() : Tuple<EventTypeCode, string>[] {\n\tlet result : Tuple<EventTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.OTHER, 'EventTypeCode.OTHER'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.DEVICE_TAKEOVER, 'EventTypeCode.DEVICE_TAKEOVER'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.DDOS, 'EventTypeCode.DDOS'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.UNKNOWN_MALWARE, 'EventTypeCode.UNKNOWN_MALWARE'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.MAN_IN_THE_MIDDLE, 'EventTypeCode.MAN_IN_THE_MIDDLE'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.DATA_THEFT, 'EventTypeCode.DATA_THEFT'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.PORT_SCANNING, 'EventTypeCode.PORT_SCANNING'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.ABNORMAL_DOWNLOAD, 'EventTypeCode.ABNORMAL_DOWNLOAD'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.ABNORMAL_INCOMING_CONNECTION, 'EventTypeCode.ABNORMAL_INCOMING_CONNECTION'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.UNSUCCESSFUL_CONNECTION_ATTEMPTS, 'EventTypeCode.UNSUCCESSFUL_CONNECTION_ATTEMPTS'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.HIGH_VOLUME_TRANSIT, 'EventTypeCode.HIGH_VOLUME_TRANSIT'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.DEVICE_LEVEL_ATTACK, 'EventTypeCode.DEVICE_LEVEL_ATTACK'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.REPLAY_ATTACK, 'EventTypeCode.REPLAY_ATTACK'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.DEVICE_TAKEOVER_ATTEMPT, 'EventTypeCode.DEVICE_TAKEOVER_ATTEMPT'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.UNKNOWN_OPERATION, 'EventTypeCode.UNKNOWN_OPERATION'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.CRYPTO_MINING, 'EventTypeCode.CRYPTO_MINING'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.SUSPICIOUS_IP, 'EventTypeCode.SUSPICIOUS_IP'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.ABNORMAL_OUTBOUND_PORTS, 'EventTypeCode.ABNORMAL_OUTBOUND_PORTS'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.ABNORMAL_OUTBOUND_ENDPOINTS, 'EventTypeCode.ABNORMAL_OUTBOUND_ENDPOINTS'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.SIM_SWITCH, 'EventTypeCode.SIM_SWITCH'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.SIM_MISUSAGE, 'EventTypeCode.SIM_MISUSAGE'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.DEVICE_DISCONNECTION, 'EventTypeCode.DEVICE_DISCONNECTION'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.ANOMALY_DETECTED, 'EventTypeCode.ANOMALY_DETECTED'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.DGA_DNS_QUERY, 'EventTypeCode.DGA_DNS_QUERY'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.CASE_MUTATED_DNS_QUERY, 'EventTypeCode.CASE_MUTATED_DNS_QUERY'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.SUSPICIOUS_IP_OUT, 'EventTypeCode.SUSPICIOUS_IP_OUT'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IP_LOOKUP_DNS_REQUEST, 'EventTypeCode.IP_LOOKUP_DNS_REQUEST'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.EXCESSIVE_NONSTD_DNS_ATTEMPTS, 'EventTypeCode.EXCESSIVE_NONSTD_DNS_ATTEMPTS'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_MALWARE_PORT_CONN, 'EventTypeCode.IOT_MALWARE_PORT_CONN'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_OUTBOUND_WIN_WORM_PORT, 'EventTypeCode.IOT_OUTBOUND_WIN_WORM_PORT'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_OUTBOUND_EMAIL_SPAM_PORT, 'EventTypeCode.IOT_OUTBOUND_EMAIL_SPAM_PORT'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_OUTBOUND_NOTORIOUS_PORT, 'EventTypeCode.IOT_OUTBOUND_NOTORIOUS_PORT'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_OUTBOUND_LONG_CONN_ALT_SSH, 'EventTypeCode.IOT_OUTBOUND_LONG_CONN_ALT_SSH'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_OUTBOUND_FAST_CONNECT_BURST, 'EventTypeCode.IOT_OUTBOUND_FAST_CONNECT_BURST'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_LOCAL_FAST_CONNECT_BURST, 'EventTypeCode.IOT_LOCAL_FAST_CONNECT_BURST'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_HIGH_RISK_TLD_QUERY, 'EventTypeCode.IOT_HIGH_RISK_TLD_QUERY'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_DNS_TXT_PUBLIC_RESOLVER, 'EventTypeCode.IOT_DNS_TXT_PUBLIC_RESOLVER'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_FTP_PLAINTEXT_CREDS, 'EventTypeCode.IOT_FTP_PLAINTEXT_CREDS'))\n\t\n return result;\n}\n\n// Return map of EventTypeCode values and their display names\nexport function MapEventTypeCodes() : Map<EventTypeCode, string> {\n let result = new Map<EventTypeCode, string>();\n result.set(EventTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(EventTypeCode.OTHER, 'Other');\n\tresult.set(EventTypeCode.DEVICE_TAKEOVER, 'Device Takeover');\n\tresult.set(EventTypeCode.DDOS, 'Ddos');\n\tresult.set(EventTypeCode.UNKNOWN_MALWARE, 'Unknown Malware');\n\tresult.set(EventTypeCode.MAN_IN_THE_MIDDLE, 'Man In The Middle');\n\tresult.set(EventTypeCode.DATA_THEFT, 'Data Theft');\n\tresult.set(EventTypeCode.PORT_SCANNING, 'Port Scanning');\n\tresult.set(EventTypeCode.ABNORMAL_DOWNLOAD, 'Abnormal Download');\n\tresult.set(EventTypeCode.ABNORMAL_INCOMING_CONNECTION, 'Abnormal Incoming Connection');\n\tresult.set(EventTypeCode.UNSUCCESSFUL_CONNECTION_ATTEMPTS, 'Unsuccessful Connection Attempts');\n\tresult.set(EventTypeCode.HIGH_VOLUME_TRANSIT, 'High Volume Transit');\n\tresult.set(EventTypeCode.DEVICE_LEVEL_ATTACK, 'Device Level Attack');\n\tresult.set(EventTypeCode.REPLAY_ATTACK, 'Replay Attack');\n\tresult.set(EventTypeCode.DEVICE_TAKEOVER_ATTEMPT, 'Device Takeover Attempt');\n\tresult.set(EventTypeCode.UNKNOWN_OPERATION, 'Unknown Operation');\n\tresult.set(EventTypeCode.CRYPTO_MINING, 'Crypto Mining');\n\tresult.set(EventTypeCode.SUSPICIOUS_IP, 'Suspicious Ip');\n\tresult.set(EventTypeCode.ABNORMAL_OUTBOUND_PORTS, 'Abnormal Outbound Ports');\n\tresult.set(EventTypeCode.ABNORMAL_OUTBOUND_ENDPOINTS, 'Abnormal Outbound Endpoints');\n\tresult.set(EventTypeCode.SIM_SWITCH, 'Sim Switch');\n\tresult.set(EventTypeCode.SIM_MISUSAGE, 'Sim Misusage');\n\tresult.set(EventTypeCode.DEVICE_DISCONNECTION, 'Device Disconnection');\n\tresult.set(EventTypeCode.ANOMALY_DETECTED, 'Anomaly Detected');\n\tresult.set(EventTypeCode.DGA_DNS_QUERY, 'Dga Dns Query');\n\tresult.set(EventTypeCode.CASE_MUTATED_DNS_QUERY, 'Case Mutated Dns Query');\n\tresult.set(EventTypeCode.SUSPICIOUS_IP_OUT, 'Suspicious Ip Out');\n\tresult.set(EventTypeCode.IP_LOOKUP_DNS_REQUEST, 'Ip Lookup Dns Request');\n\tresult.set(EventTypeCode.EXCESSIVE_NONSTD_DNS_ATTEMPTS, 'Excessive Nonstd Dns Attempts');\n\tresult.set(EventTypeCode.IOT_MALWARE_PORT_CONN, 'Iot Malware Port Conn');\n\tresult.set(EventTypeCode.IOT_OUTBOUND_WIN_WORM_PORT, 'Iot Outbound Win Worm Port');\n\tresult.set(EventTypeCode.IOT_OUTBOUND_EMAIL_SPAM_PORT, 'Iot Outbound Email Spam Port');\n\tresult.set(EventTypeCode.IOT_OUTBOUND_NOTORIOUS_PORT, 'Iot Outbound Notorious Port');\n\tresult.set(EventTypeCode.IOT_OUTBOUND_LONG_CONN_ALT_SSH, 'Iot Outbound Long Conn Alt Ssh');\n\tresult.set(EventTypeCode.IOT_OUTBOUND_FAST_CONNECT_BURST, 'Iot Outbound Fast Connect Burst');\n\tresult.set(EventTypeCode.IOT_LOCAL_FAST_CONNECT_BURST, 'Iot Local Fast Connect Burst');\n\tresult.set(EventTypeCode.IOT_HIGH_RISK_TLD_QUERY, 'Iot High Risk Tld Query');\n\tresult.set(EventTypeCode.IOT_DNS_TXT_PUBLIC_RESOLVER, 'Iot Dns Txt Public Resolver');\n\tresult.set(EventTypeCode.IOT_FTP_PLAINTEXT_CREDS, 'Iot Ftp Plaintext Creds');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// OperatorCode represents the list of query operations: EQ | NEQ | GT | GTE | LT | LTE | IN | NOTIN | RANGE | LIKE | CONTAINS | NOTCONTAINS\nexport enum OperatorCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Equal (=) [1] \n EQ = 1,\n\n // Not Equal (!=) [2] \n NEQ = 2,\n\n // Greater than (>) [3] \n GT = 3,\n\n // Greater or equal (>=) [4] \n GTE = 4,\n\n // Less than (<) [5] \n LT = 5,\n\n // Less or equal (<=) [6] \n LTE = 6,\n\n // Included in (*) [7] \n IN = 7,\n\n // Not included in (-) [8] \n NOTIN = 8,\n\n // In range (#) [9] \n RANGE = 9,\n\n // Like (~) [10] \n LIKE = 10,\n\n // Contains (@) [11] \n CONTAINS = 11,\n\n // Not contains (!@) [12] \n NOTCONTAINS = 12,\n\n}\n\n// Return list of OperatorCode values and their display names\nexport function GetOperatorCodes() : Tuple<OperatorCode, string>[] {\n\tlet result : Tuple<OperatorCode, string>[] = [];\n \n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.EQ, 'OperatorCode.EQ'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.NEQ, 'OperatorCode.NEQ'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.GT, 'OperatorCode.GT'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.GTE, 'OperatorCode.GTE'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.LT, 'OperatorCode.LT'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.LTE, 'OperatorCode.LTE'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.IN, 'OperatorCode.IN'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.NOTIN, 'OperatorCode.NOTIN'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.RANGE, 'OperatorCode.RANGE'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.LIKE, 'OperatorCode.LIKE'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.CONTAINS, 'OperatorCode.CONTAINS'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.NOTCONTAINS, 'OperatorCode.NOTCONTAINS'))\n\t\n return result;\n}\n\n// Return map of OperatorCode values and their display names\nexport function MapOperatorCodes() : Map<OperatorCode, string> {\n let result = new Map<OperatorCode, string>();\n result.set(OperatorCode.UNDEFINED, 'Undefined');\n\tresult.set(OperatorCode.EQ, 'Eq');\n\tresult.set(OperatorCode.NEQ, 'Neq');\n\tresult.set(OperatorCode.GT, 'Gt');\n\tresult.set(OperatorCode.GTE, 'Gte');\n\tresult.set(OperatorCode.LT, 'Lt');\n\tresult.set(OperatorCode.LTE, 'Lte');\n\tresult.set(OperatorCode.IN, 'In');\n\tresult.set(OperatorCode.NOTIN, 'Notin');\n\tresult.set(OperatorCode.RANGE, 'Range');\n\tresult.set(OperatorCode.LIKE, 'Like');\n\tresult.set(OperatorCode.CONTAINS, 'Contains');\n\tresult.set(OperatorCode.NOTCONTAINS, 'Notcontains');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// PermissionCode represents the bitmask of the list of permissions: READ | CREATE | UPDATE | DELETE ...\nexport enum PermissionCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Read permission [1] \n READ = 1,\n\n // Create permission [2] \n CREATE = 2,\n\n // Update permission [4] \n UPDATE = 4,\n\n // Delete permission [8] \n DELETE = 8,\n\n // Action permission [16] \n ACTION = 16,\n\n}\n\n// Return list of PermissionCode values and their display names\nexport function GetPermissionCodes() : Tuple<PermissionCode, string>[] {\n\tlet result : Tuple<PermissionCode, string>[] = [];\n \n\tresult.push(new Tuple<PermissionCode, string>(PermissionCode.READ, 'PermissionCode.READ'))\n\tresult.push(new Tuple<PermissionCode, string>(PermissionCode.CREATE, 'PermissionCode.CREATE'))\n\tresult.push(new Tuple<PermissionCode, string>(PermissionCode.UPDATE, 'PermissionCode.UPDATE'))\n\tresult.push(new Tuple<PermissionCode, string>(PermissionCode.DELETE, 'PermissionCode.DELETE'))\n\tresult.push(new Tuple<PermissionCode, string>(PermissionCode.ACTION, 'PermissionCode.ACTION'))\n\t\n return result;\n}\n\n// Return map of PermissionCode values and their display names\nexport function MapPermissionCodes() : Map<PermissionCode, string> {\n let result = new Map<PermissionCode, string>();\n result.set(PermissionCode.UNDEFINED, 'Undefined');\n\tresult.set(PermissionCode.READ, 'Read');\n\tresult.set(PermissionCode.CREATE, 'Create');\n\tresult.set(PermissionCode.UPDATE, 'Update');\n\tresult.set(PermissionCode.DELETE, 'Delete');\n\tresult.set(PermissionCode.ACTION, 'Action');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// ReportSourceCode represents the sources (indices) of report data: ONDEMAND | PERIODIC\nexport enum ReportSourceCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // On demand report source - from API [1] \n ONDEMAND = 1,\n\n // Periodic task report source [2] \n PERIODIC = 2,\n\n}\n\n// Return list of ReportSourceCode values and their display names\nexport function GetReportSourceCodes() : Tuple<ReportSourceCode, string>[] {\n\tlet result : Tuple<ReportSourceCode, string>[] = [];\n \n\tresult.push(new Tuple<ReportSourceCode, string>(ReportSourceCode.ONDEMAND, 'ReportSourceCode.ONDEMAND'))\n\tresult.push(new Tuple<ReportSourceCode, string>(ReportSourceCode.PERIODIC, 'ReportSourceCode.PERIODIC'))\n\t\n return result;\n}\n\n// Return map of ReportSourceCode values and their display names\nexport function MapReportSourceCodes() : Map<ReportSourceCode, string> {\n let result = new Map<ReportSourceCode, string>();\n result.set(ReportSourceCode.UNDEFINED, 'Undefined');\n\tresult.set(ReportSourceCode.ONDEMAND, 'Ondemand');\n\tresult.set(ReportSourceCode.PERIODIC, 'Periodic');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// UserStatusCode represents the list of user status: PENDING | ACTIVE | BLOCKED ...\nexport enum UserStatusCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // User is registered and pending verification [1] \n PENDING = 1,\n\n // Active user in the system [2] \n ACTIVE = 2,\n\n // Blocked user (only account system can unblock the user) [3] \n BLOCKED = 3,\n\n // Suspended user (about to be deleted) [4] \n SUSPENDED = 4,\n\n}\n\n// Return list of UserStatusCode values and their display names\nexport function GetUserStatusCodes() : Tuple<UserStatusCode, string>[] {\n\tlet result : Tuple<UserStatusCode, string>[] = [];\n \n\tresult.push(new Tuple<UserStatusCode, string>(UserStatusCode.PENDING, 'UserStatusCode.PENDING'))\n\tresult.push(new Tuple<UserStatusCode, string>(UserStatusCode.ACTIVE, 'UserStatusCode.ACTIVE'))\n\tresult.push(new Tuple<UserStatusCode, string>(UserStatusCode.BLOCKED, 'UserStatusCode.BLOCKED'))\n\tresult.push(new Tuple<UserStatusCode, string>(UserStatusCode.SUSPENDED, 'UserStatusCode.SUSPENDED'))\n\t\n return result;\n}\n\n// Return map of UserStatusCode values and their display names\nexport function MapUserStatusCodes() : Map<UserStatusCode, string> {\n let result = new Map<UserStatusCode, string>();\n result.set(UserStatusCode.UNDEFINED, 'Undefined');\n\tresult.set(UserStatusCode.PENDING, 'Pending');\n\tresult.set(UserStatusCode.ACTIVE, 'Active');\n\tresult.set(UserStatusCode.BLOCKED, 'Blocked');\n\tresult.set(UserStatusCode.SUSPENDED, 'Suspended');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// DeviceStatusCode represents the list of device status: PENDING | ACTIVE | INACTIVE\nexport enum DeviceStatusCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Device is registered and pending verification [1] \n PENDING = 1,\n\n // Device is registered and active [2] \n ACTIVE = 2,\n\n // Device is registered and inactive [3] \n INACTIVE = 3,\n\n // Device is registered and blocked [4] \n BLOCKED = 4,\n\n}\n\n// Return list of DeviceStatusCode values and their display names\nexport function GetDeviceStatusCodes() : Tuple<DeviceStatusCode, string>[] {\n\tlet result : Tuple<DeviceStatusCode, string>[] = [];\n \n\tresult.push(new Tuple<DeviceStatusCode, string>(DeviceStatusCode.PENDING, 'DeviceStatusCode.PENDING'))\n\tresult.push(new Tuple<DeviceStatusCode, string>(DeviceStatusCode.ACTIVE, 'DeviceStatusCode.ACTIVE'))\n\tresult.push(new Tuple<DeviceStatusCode, string>(DeviceStatusCode.INACTIVE, 'DeviceStatusCode.INACTIVE'))\n\tresult.push(new Tuple<DeviceStatusCode, string>(DeviceStatusCode.BLOCKED, 'DeviceStatusCode.BLOCKED'))\n\t\n return result;\n}\n\n// Return map of DeviceStatusCode values and their display names\nexport function MapDeviceStatusCodes() : Map<DeviceStatusCode, string> {\n let result = new Map<DeviceStatusCode, string>();\n result.set(DeviceStatusCode.UNDEFINED, 'Undefined');\n\tresult.set(DeviceStatusCode.PENDING, 'Pending');\n\tresult.set(DeviceStatusCode.ACTIVE, 'Active');\n\tresult.set(DeviceStatusCode.INACTIVE, 'Inactive');\n\tresult.set(DeviceStatusCode.BLOCKED, 'Blocked');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// DirectionContextCode represents direction context: EVENT_LIST | DEVICE_LIST | EVENT_DETAILS | DEVICE_DETAILS\nexport enum DirectionContextCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Event list context [1] \n EVENT_LIST = 1,\n\n // Device list context [2] \n DEVICE_LIST = 2,\n\n // Event detailS context [3] \n EVENT_DETAILS = 3,\n\n // Device detailS context [4] \n DEVICE_DETAILS = 4,\n\n}\n\n// Return list of DirectionContextCode values and their display names\nexport function GetDirectionContextCodes() : Tuple<DirectionContextCode, string>[] {\n\tlet result : Tuple<DirectionContextCode, string>[] = [];\n \n\tresult.push(new Tuple<DirectionContextCode, string>(DirectionContextCode.EVENT_LIST, 'DirectionContextCode.EVENT_LIST'))\n\tresult.push(new Tuple<DirectionContextCode, string>(DirectionContextCode.DEVICE_LIST, 'DirectionContextCode.DEVICE_LIST'))\n\tresult.push(new Tuple<DirectionContextCode, string>(DirectionContextCode.EVENT_DETAILS, 'DirectionContextCode.EVENT_DETAILS'))\n\tresult.push(new Tuple<DirectionContextCode, string>(DirectionContextCode.DEVICE_DETAILS, 'DirectionContextCode.DEVICE_DETAILS'))\n\t\n return result;\n}\n\n// Return map of DirectionContextCode values and their display names\nexport function MapDirectionContextCodes() : Map<DirectionContextCode, string> {\n let result = new Map<DirectionContextCode, string>();\n result.set(DirectionContextCode.UNDEFINED, 'Undefined');\n\tresult.set(DirectionContextCode.EVENT_LIST, 'Event List');\n\tresult.set(DirectionContextCode.DEVICE_LIST, 'Device List');\n\tresult.set(DirectionContextCode.EVENT_DETAILS, 'Event Details');\n\tresult.set(DirectionContextCode.DEVICE_DETAILS, 'Device Details');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// NetworkMapTypeCode represents the types of network maps: TOP_DEVICES | TOP_MALICIOUS_IPS | NETWORK\nexport enum NetworkMapTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Top devices network map [1] \n TOP_DEVICES = 1,\n\n // Top malicious IP network map [2] \n TOP_MALICIOUS_IPS = 2,\n\n // Network devices network map [3] \n NETWORK = 3,\n\n}\n\n// Return list of NetworkMapTypeCode values and their display names\nexport function GetNetworkMapTypeCodes() : Tuple<NetworkMapTypeCode, string>[] {\n\tlet result : Tuple<NetworkMapTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<NetworkMapTypeCode, string>(NetworkMapTypeCode.TOP_DEVICES, 'NetworkMapTypeCode.TOP_DEVICES'))\n\tresult.push(new Tuple<NetworkMapTypeCode, string>(NetworkMapTypeCode.TOP_MALICIOUS_IPS, 'NetworkMapTypeCode.TOP_MALICIOUS_IPS'))\n\tresult.push(new Tuple<NetworkMapTypeCode, string>(NetworkMapTypeCode.NETWORK, 'NetworkMapTypeCode.NETWORK'))\n\t\n return result;\n}\n\n// Return map of NetworkMapTypeCode values and their display names\nexport function MapNetworkMapTypeCodes() : Map<NetworkMapTypeCode, string> {\n let result = new Map<NetworkMapTypeCode, string>();\n result.set(NetworkMapTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(NetworkMapTypeCode.TOP_DEVICES, 'Top Devices');\n\tresult.set(NetworkMapTypeCode.TOP_MALICIOUS_IPS, 'Top Malicious Ips');\n\tresult.set(NetworkMapTypeCode.NETWORK, 'Network');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// RuleActivityStatusCode represents the list of rule activity status: ACTIVE | INACTIVE\nexport enum RuleActivityStatusCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Active [1] \n ACTIVE = 1,\n\n // Inactive [2] \n INACTIVE = 2,\n\n}\n\n// Return list of RuleActivityStatusCode values and their display names\nexport function GetRuleActivityStatusCodes() : Tuple<RuleActivityStatusCode, string>[] {\n\tlet result : Tuple<RuleActivityStatusCode, string>[] = [];\n \n\tresult.push(new Tuple<RuleActivityStatusCode, string>(RuleActivityStatusCode.ACTIVE, 'RuleActivityStatusCode.ACTIVE'))\n\tresult.push(new Tuple<RuleActivityStatusCode, string>(RuleActivityStatusCode.INACTIVE, 'RuleActivityStatusCode.INACTIVE'))\n\t\n return result;\n}\n\n// Return map of RuleActivityStatusCode values and their display names\nexport function MapRuleActivityStatusCodes() : Map<RuleActivityStatusCode, string> {\n let result = new Map<RuleActivityStatusCode, string>();\n result.set(RuleActivityStatusCode.UNDEFINED, 'Undefined');\n\tresult.set(RuleActivityStatusCode.ACTIVE, 'Active');\n\tresult.set(RuleActivityStatusCode.INACTIVE, 'Inactive');\n\t\n return result;\n}\n","\n\n// IntegrationContext model represents union of several entities (user, device, event) to inject to integration template in order to resolve fields\nexport class IntegrationContext {\n\n\t// User Context \n\tpublic user: Map<string,object>;\n\n\t// Device Context \n\tpublic device: Map<string,object>;\n\n\t// Event context \n\tpublic event: Map<string,object>;\n\n constructor(user?: Map<string,object>, device?: Map<string,object>, event?: Map<string,object>) { \n if (user !== undefined) { this.user = user; }\n if (device !== undefined) { this.device = device; }\n if (event !== undefined) { this.event = event; }\n }\n\n}\n\n\n","\n\n// IntKeyValue model used as a tuple of int to int key-value pair\nexport class IntKeyValue {\n\n\t// Tuple key \n\tpublic key: number;\n\n\t// Tuple value \n\tpublic value: number;\n\n constructor(key?: number, value?: number) { \n if (key !== undefined) { this.key = key; }\n if (value !== undefined) { this.value = value; }\n }\n\n}\n\n\n","\nimport { DeviceTypeCode } from './DeviceTypeCode';\nimport { Tuple } from './Tuple';\n\n// Node represents a vertex in a network map\nexport class Node {\n\n\t// Node Id (system id for inner map calculation) \n\tpublic id: string;\n\n\t// Node graph Id (can be device id or ip based on node type \n\tpublic nodeId: string;\n\n\t// Device name \n\tpublic name: string;\n\n\t// Device IP address (IPv4 or IPv6) \n\tpublic ip: string;\n\n\t// Device type: UNDEFINED | CONTROLLER | METER | SENSOR ... \n\tpublic type: DeviceTypeCode;\n\n\t// Device current security score \n\tpublic score: number;\n\n\t// List of device tags \n\tpublic tags: string[];\n\n\t// List of attributes (key-value pairs) \n\tpublic labels: Tuple<string, string>[];\n\n\t// Number of total events for the time period (calculated field) \n\tpublic eventCount: number;\n\n\t// Is aggregated node \n\tpublic isGroup: boolean;\n\n\t// \n\tpublic deviceCount: number;\n\n constructor(id?: string, nodeId?: string, name?: string, iP?: string, type?: DeviceTypeCode, score?: number, tags?: string[], labels?: Tuple<string, string>[], eventCount?: number, isGroup?: boolean, deviceCount?: number) { \n if (id !== undefined) { this.id = id; }\n if (nodeId !== undefined) { this.nodeId = nodeId; }\n if (name !== undefined) { this.name = name; }\n if (iP !== undefined) { this.ip = iP; }\n if (type !== undefined) { this.type = type; }\n if (score !== undefined) { this.score = score; }\n if (tags !== undefined) { this.tags = tags; }\n if (labels !== undefined) { this.labels = labels; }\n if (eventCount !== undefined) { this.eventCount = eventCount; }\n if (isGroup !== undefined) { this.isGroup = isGroup; }\n if (deviceCount !== undefined) { this.deviceCount = deviceCount; }\n }\n\n}\n\n\n","\nimport { SeverityTypeCode } from './SeverityTypeCode';\n\n// Link represents a relation between two nodes\nexport class Link {\n\n\t// Unique object Id \n\tpublic id: string;\n\n\t// Source node Id \n\tpublic src: string;\n\n\t// Destination node Id \n\tpublic dst: string;\n\n\t// Textual description of this link \n\tpublic name: string;\n\n\t// Numeric value of this link \n\tpublic value: number;\n\n\t// Event severity: UNDEFINED | LOW | MEDIUM | HIGH | ... \n\tpublic severity: SeverityTypeCode;\n\n\t// Number of events related to the link for the time period (calculated field) \n\tpublic eventCount: number;\n\n constructor(id?: string, src?: string, dst?: string, name?: string, value?: number, severity?: SeverityTypeCode, eventCount?: number) { \n if (id !== undefined) { this.id = id; }\n if (src !== undefined) { this.src = src; }\n if (dst !== undefined) { this.dst = dst; }\n if (name !== undefined) { this.name = name; }\n if (value !== undefined) { this.value = value; }\n if (severity !== undefined) { this.severity = severity; }\n if (eventCount !== undefined) { this.eventCount = eventCount; }\n }\n\n}\n\n\n","\n\n// ConsumptionDataPoint represent data consumption (traffic) data point\nexport class ConsumptionDataPoint {\n\n\t// Incoming traffic in Kb \n\tpublic dataIn: number;\n\n\t// Outgoing traffic in Kb \n\tpublic dataOut: number;\n\n\t// Total traffic in Kb \n\tpublic total: number;\n\n constructor(dataIn?: number, dataOut?: number, total?: number) { \n if (dataIn !== undefined) { this.dataIn = dataIn; }\n if (dataOut !== undefined) { this.dataOut = dataOut; }\n if (total !== undefined) { this.total = total; }\n }\n\n}\n\n\n","\n\n// BaseEntity is a base structure for any concrete Entity.\n// It provides common fields like Id, CreatedOn, and UpdatedOn that are standard across most entities.\n// Embed this struct in your domain entities to inherit these standard fields and basic behavior.\nexport class BaseEntity {\n\n\t// Id is the unique object identifier \n\tpublic id: string;\n\n\t// CreatedOn is the timestamp when the object was created [Epoch milliseconds Timestamp] \n\tpublic createdOn: number;\n\n\t// UpdatedOn is the timestamp when the object was last updated [Epoch milliseconds Timestamp] \n\tpublic updatedOn: number;\n\n constructor(id?: string, createdOn?: number, updatedOn?: number) { \n if (id !== undefined) { this.id = id; }\n if (createdOn !== undefined) { this.createdOn = createdOn; }\n if (updatedOn !== undefined) { this.updatedOn = updatedOn; }\n }\n\n}\n\n\n","\n\n// ColumnDef model represents table column definition\nexport class ColumnDef {\n\n\t// Column field icon \n\tpublic icon: string;\n\n\t// Column field name \n\tpublic name: string;\n\n\t// Column field type \n\tpublic type: string;\n\n\t// Display format hint \n\tpublic format: string;\n\n\t// Sort order 0: no sort, 1: sort asc, -1 sort desc \n\tpublic sort: number;\n\n\t// Filter operand \n\tpublic filterOp: number;\n\n\t// Filter by value \n\tpublic filter: any;\n\n constructor(icon?: string, name?: string, type?: string, format?: string, sort?: number, filterOp?: number, filter?: any) { \n if (icon !== undefined) { this.icon = icon; }\n if (name !== undefined) { this.name = name; }\n if (type !== undefined) { this.type = type; }\n if (format !== undefined) { this.format = format; }\n if (sort !== undefined) { this.sort = sort; }\n if (filterOp !== undefined) { this.filterOp = filterOp; }\n if (filter !== undefined) { this.filter = filter; }\n }\n\n}\n\n\n","\nimport { FeatureCode } from './FeatureCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Feature represents a capability in the system\n// It is used for the feature toggle mechanism\nexport class Feature extends BaseEntity {\n\n\t// Feature code \n\tpublic code: FeatureCode;\n\n\t// Feature display name \n\tpublic name: string;\n\n}\n\nexport function GetFeatureColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"code\", \"FeatureCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// StringKeyValue model used as a string key-value pair\nexport class StringKeyValue {\n\n\t// Tuple key \n\tpublic key: string;\n\n\t// Tuple value \n\tpublic value: string;\n\n constructor(key?: string, value?: string) { \n if (key !== undefined) { this.key = key; }\n if (value !== undefined) { this.value = value; }\n }\n\n}\n\n\n","\n\n// IntFloatValue model used as a tuple of int to float64 key-value pair\nexport class IntFloatValue {\n\n\t// Tuple key \n\tpublic key: number;\n\n\t// Tuple value \n\tpublic value: number;\n\n constructor(key?: number, value?: number) { \n if (key !== undefined) { this.key = key; }\n if (value !== undefined) { this.value = value; }\n }\n\n}\n\n\n","\n\n// ZScore parameters\nexport class ZScore {\n\n\t// Mean value \n\tpublic mean: number;\n\n\t// Standard Deviation \n\tpublic sd: number;\n\n constructor(mean?: number, sD?: number) { \n if (mean !== undefined) { this.mean = mean; }\n if (sD !== undefined) { this.sd = sD; }\n }\n\n}\n\n\n","\nimport { TimeDataPoint } from './TimeDataPoint';\nimport { ConsumptionDataPoint } from './ConsumptionDataPoint';\nimport { TimeFrame } from './TimeFrame';\n\n// TimeSeriesConsumption model represents a set of data consumption points over time\nexport class TimeSeriesConsumption {\n\n\t// Name of the time series \n\tpublic name: string;\n\n\t// Range of the series (from ... to) \n\tpublic range: TimeFrame;\n\n\t// Series data points \n\tpublic values: TimeDataPoint<ConsumptionDataPoint>[];\n\n constructor(name?: string, range?: TimeFrame, values?: TimeDataPoint<ConsumptionDataPoint>[]) { \n if (name !== undefined) { this.name = name; }\n if (range !== undefined) { this.range = range; }\n if (values !== undefined) { this.values = values; }\n }\n\n}\n\n\n","\nimport { Distribution } from './Distribution';\n\n// MaliciousIpCard model represents a group of elements of Suspicious IP card\nexport class MaliciousIpCard {\n\n\t// Malicious IP \n\tpublic maliciousIp: string;\n\n\t// Malicious IP DNS name \n\tpublic maliciousIpDns: string;\n\n\t// Country code \n\tpublic countryCode: string;\n\n\t// Ip description \n\tpublic ipDescription: string;\n\n\t// Last event timestamp [Epoch milliseconds Timestamp] \n\tpublic lastEventTime: number;\n\n\t// List of attack categories \n\tpublic attackCategories: string[];\n\n\t// Number of devices \n\tpublic numberOfDevices: number;\n\n\t// Events BySeverityBreakdown \n\tpublic eventsBySeverityBreakdown: Distribution<number>;\n\n constructor(maliciousIp?: string, maliciousIpDns?: string, countryCode?: string, ipDescription?: string, lastEventTime?: number, attackCategories?: string[], numberOfDevices?: number, eventsBySeverityBreakdown?: Distribution<number>) { \n if (maliciousIp !== undefined) { this.maliciousIp = maliciousIp; }\n if (maliciousIpDns !== undefined) { this.maliciousIpDns = maliciousIpDns; }\n if (countryCode !== undefined) { this.countryCode = countryCode; }\n if (ipDescription !== undefined) { this.ipDescription = ipDescription; }\n if (lastEventTime !== undefined) { this.lastEventTime = lastEventTime; }\n if (attackCategories !== undefined) { this.attackCategories = attackCategories; }\n if (numberOfDevices !== undefined) { this.numberOfDevices = numberOfDevices; }\n if (eventsBySeverityBreakdown !== undefined) { this.eventsBySeverityBreakdown = eventsBySeverityBreakdown; }\n }\n\n}\n\n\n","\n\n// ConditionDescription represents a single condition within a user-defined rule (UDR).\n// This structure is designed to capture all necessary elements of a logical expression\n// that can later be translated into a SQL WHERE clause.\n// It supports comparisons, ranges, sets, and typed values with optional units (e.g., \"KB\", \"seconds\").\nexport class ConditionDescription {\n\n\t// Field specifies the name of the field (column) being filtered, e.g., \"src_ip\", \"dst_port\", \"bytes_to_srv\". \n\tpublic field: string;\n\n\t// Operator defines the comparison or logical operation to apply, such as \"equals\", \"greater\", \"between\", \"is_one_of\", etc. \n\tpublic operator: string;\n\n\t// Values holds one or more values that the condition compares against. - For \"equals\" and similar operators, it contains one item. - For \"between\", it contains two values: min and max. - For \"is_one_of\", it contains a list of options. \n\tpublic values: string[];\n\n\t// ValueType defines the type of the value(s), such as: - \"string\" for IPs or protocol names - \"int\" for numerical values like ports or byte counts - \"duration\" for time-based filters \n\tpublic value_type: string;\n\n\t// Unit is an optional field that provides a size or time unit for the value(s), e.g., \"kb\", \"mb\", \"seconds\", \"minutes\". Relevant when ValueType is \"int\" or \"duration\" and the values require normalization. \n\tpublic unit: string;\n\n constructor(field?: string, operator?: string, values?: string[], valueType?: string, unit?: string) { \n if (field !== undefined) { this.field = field; }\n if (operator !== undefined) { this.operator = operator; }\n if (values !== undefined) { this.values = values; }\n if (valueType !== undefined) { this.value_type = valueType; }\n if (unit !== undefined) { this.unit = unit; }\n }\n\n}\n\n\n","\nimport { Location } from './Location';\n\n// MapBounds model represents maps bounds using 2 points southwest and northeast\nexport class MapBounds {\n\n\t// Geo Location (WGS-84) \n\tpublic southwest: Location;\n\n\t// Geo Location (WGS-84) \n\tpublic northeast: Location;\n\n constructor(southwest?: Location, northeast?: Location) { \n if (southwest !== undefined) { this.southwest = southwest; }\n if (northeast !== undefined) { this.northeast = northeast; }\n }\n\n}\n\n\n","\nimport { AITasksCode } from './AITasksCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// AICheckpoint represents checkpoints for AI jobs\nexport class AICheckpoint extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// name of the job \n\tpublic jobName: string;\n\n\t// enum of which ai function to run. not enumerated in model since ai can change this quickly \n\tpublic taskType: AITasksCode;\n\n\t// running jobid generated at the controlled. should be unique \n\tpublic jobId: string;\n\n\t// topic through which jobs are sent out. I.E. each worker type is subscribed to it's own JobPool \n\tpublic jobPool: string;\n\n\t// Identity of the worker who processed the file. should help debug if several tasks failed on same worker \n\tpublic processedBy: string;\n\n\t// time received at the worker \n\tpublic receivedAt: number;\n\n\t// estimate by the controller of upper limit of how much time such a task should take. should be based on statistics about similar tasks \n\tpublic jobTimeEstimate: number;\n\n\t// how much time task took \n\tpublic jobTime: number;\n\n\t// time worker finished working on task. to be used in the JobTimeEstimate statistics \n\tpublic completedAt: number;\n\n\t// exit code of the task. 0 if successful \n\tpublic errorCode: number;\n\n\t// General purpose description \n\tpublic errorMessage: string;\n\n\t// AI job parameters \n\tpublic parameters: Map<string,object>;\n\n\t// AI job parameters \n\tpublic parameters2: Map<string,object>;\n\n}\n\nexport function GetAICheckpointColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"jobName\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"taskType\", \"AITasksCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"jobId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"jobPool\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"processedBy\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"receivedAt\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"jobTimeEstimate\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"jobTime\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"completedAt\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"errorCode\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"errorMessage\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"parameters\", \"Map<string,object>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"parameters2\", \"Map<string,object>\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// BaseMessage provides a basic implementation of the IMessage interface.\n// It can be embedded in other message structs to provide default behavior for the common message attributes.\nexport class BaseMessage {\n\n\t// The topic (channel or queue) of the message. \n\tpublic topic: string;\n\n\t// An operational code for the message. \n\tpublic opCode: number;\n\n\t// The version of the message. \n\tpublic version: string;\n\n\t// The final recipient of the message. \n\tpublic addressee: string;\n\n\t// A session ID for tracking related messages. \n\tpublic sessionId: string;\n\n constructor(msgTopic?: string, msgOpCode?: number, msgVersion?: string, msgAddressee?: string, msgSessionId?: string) { \n if (msgTopic !== undefined) { this.topic = msgTopic; }\n if (msgOpCode !== undefined) { this.opCode = msgOpCode; }\n if (msgVersion !== undefined) { this.version = msgVersion; }\n if (msgAddressee !== undefined) { this.addressee = msgAddressee; }\n if (msgSessionId !== undefined) { this.sessionId = msgSessionId; }\n }\n\n}\n\n\n","\n\n// BaseRestResponse is a common structure for all response types\nexport class BaseRestResponse {\n\n\t// Error code (0 for success) \n\tpublic code: number;\n\n\t// Error message \n\tpublic error: string;\n\n constructor(code?: number, error?: string) { \n if (code !== undefined) { this.code = code; }\n if (error !== undefined) { this.error = error; }\n }\n\n}\n\n\n","\nimport { BaseRestResponse } from './BaseRestResponse';\nimport { ColumnDef } from './ColumnDef';\n\n// EntitiesResponse message is returned for any action returning multiple entities\nexport class EntitiesResponse<T> extends BaseRestResponse {\n\n\t// Current page (Bulk) number \n\tpublic page: number;\n\n\t// Size of page (items in bulk) \n\tpublic size: number;\n\n\t// Total number of pages \n\tpublic pages: number;\n\n\t// Total number of items in the query \n\tpublic total: number;\n\n\t// List of objects in the current result set \n\tpublic list: T[];\n\n}\n\nexport function GetEntitiesResponseColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"page\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"size\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"pages\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"total\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"list\", \"T\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { NetworkEndpoint } from './NetworkEndpoint';\nimport { ColumnDef } from './ColumnDef';\n\n// NetworkTopology represents an account's network structure\nexport class NetworkTopology extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// List of endpoints \n\tpublic endpoints: NetworkEndpoint[];\n\n}\n\nexport function GetNetworkTopologyColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"endpoints\", \"NetworkEndpoint\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// BaseEntityEx is an extended base Entity with custom attributes.\n// It includes all fields from BaseEntity and adds support for a status Flag and a generic properties map (Props).\n// This is useful for entities that need soft-delete capabilities (via Flag) or extensible fields (via Props).\nexport class BaseEntityEx {\n\n\t// Id is the unique object identifier \n\tpublic id: string;\n\n\t// CreatedOn is the timestamp when the object was created [Epoch milliseconds Timestamp] \n\tpublic createdOn: number;\n\n\t// UpdatedOn is the timestamp when the object was last updated [Epoch milliseconds Timestamp] \n\tpublic updatedOn: number;\n\n\t// Flag represents the entity status (e.g. -1 = deleted, 0 = active) \n\tpublic flag: number;\n\n\t// Props is a map of custom properties for extensibility \n\tpublic props: Map<string,object>;\n\n constructor(id?: string, createdOn?: number, updatedOn?: number, flag?: number, props?: Map<string,object>) { \n if (id !== undefined) { this.id = id; }\n if (createdOn !== undefined) { this.createdOn = createdOn; }\n if (updatedOn !== undefined) { this.updatedOn = updatedOn; }\n if (flag !== undefined) { this.flag = flag; }\n if (props !== undefined) { this.props = props; }\n }\n\n\n}\n\n\n","\nimport { BaseEntityEx } from './BaseEntityEx';\nimport { EventTypeCode } from './EventTypeCode';\nimport { SeverityTypeCode } from './SeverityTypeCode';\nimport { RuleTypeCode } from './RuleTypeCode';\nimport { GeoData } from './GeoData';\nimport { EventCategoryCode } from './EventCategoryCode';\nimport { TrafficDirectionCode } from './TrafficDirectionCode';\nimport { EventStatusCode } from './EventStatusCode';\nimport { Tuple } from './Tuple';\nimport { ColumnDef } from './ColumnDef';\n\n// Alert entity\n// The Alert entity representing an aggregation of many Event occurrences of the same type to present to the same user\n// The purpose of this aggregation is to avoid flooding the user with many (hundreds and thousands) of events of the same type\nexport class Alert extends BaseEntityEx {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// Device id \n\tpublic deviceId: string;\n\n\t// The time of the first event in epoch time milliseconds \n\tpublic startTime: number;\n\n\t// The time of the last event in epoch time milliseconds \n\tpublic endTime: number;\n\n\t// Event type: UNDEFINED | DDOS | PORT_SCANNING | DEVICE_TAKEOVER ... \n\tpublic type: EventTypeCode;\n\n\t// Event severity: UNDEFINED | LOW | MEDIUM | HIGH | ... \n\tpublic severity: SeverityTypeCode;\n\n\t// Event current security score \n\tpublic score: number;\n\n\t// Probability score by IP reputation engine \n\tpublic probability: number;\n\n\t// Event workflow status: UNDEFINED | NEW | OPEN ... \n\tpublic status: EventStatusCode;\n\n\t// Rule engine type \n\tpublic ruleType: RuleTypeCode;\n\n\t// Static Rule id \n\tpublic ruleId: string;\n\n\t// The allocated IP for the device at the time of the event occurrence \n\tpublic sourceIp: string;\n\n\t// Target IP address for some of the events (e.g. suspicious IP) \n\tpublic targetIp: string;\n\n\t// GeoIP information based on MaxMind database \n\tpublic targetLocation: GeoData;\n\n\t// Event description \n\tpublic description: string;\n\n\t// Additional Event tags \n\tpublic tags: string[];\n\n\t// List of custom attributes (key-value pairs) \n\tpublic labels: Tuple<string, string>[];\n\n\t// Event category \n\tpublic category: EventCategoryCode;\n\n\t// Recommended action description to apply \n\tpublic recommendedAction: string;\n\n\t// Denotes network traffic direction: UNDEFINED | INBOUND | OUTBOUND \n\tpublic trafficDirection: TrafficDirectionCode;\n\n\t// Contains confidence score of malicious IP detection. Value range: 0-100 \n\tpublic confidenceScore: number;\n\n\t// Event occurrences count \n\tpublic occurrencesCount: number;\n\n}\n\nexport function GetAlertColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"startTime\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"endTime\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"EventTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"severity\", \"SeverityTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"score\", \"number\", \"decimal\"));\n\tresult.push(new ColumnDef(\"\", \"probability\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"status\", \"EventStatusCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"ruleType\", \"RuleTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"ruleId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"sourceIp\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"targetIp\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"targetLocation\", \"GeoData\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"tags\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"labels\", \"Tuple<string, string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"category\", \"EventCategoryCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"recommendedAction\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"trafficDirection\", \"TrafficDirectionCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"confidenceScore\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"occurrencesCount\", \"number\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { Device } from './Device';\nimport { Alert } from './Alert';\nimport { ColumnDef } from './ColumnDef';\n\n// AlertWithDevice entity is an alert with the device info (for display onlY)\nexport class AlertWithDevice extends Alert {\n\n\t// Device attached to the event \n\tpublic device: Device;\n\n}\n\nexport function GetAlertWithDeviceColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"device\", \"Device\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { EventTypeCode } from './EventTypeCode';\nimport { SeverityTypeCode } from './SeverityTypeCode';\nimport { GeoData } from './GeoData';\nimport { Tuple } from './Tuple';\nimport { EventCategoryCode } from './EventCategoryCode';\nimport { TrafficDirectionCode } from './TrafficDirectionCode';\nimport { Indicator } from './Indicator';\nimport { EventStatusCode } from './EventStatusCode';\nimport { RuleTypeCode } from './RuleTypeCode';\nimport { EventOccurrence } from './EventOccurrence';\nimport { BaseEntityEx } from './BaseEntityEx';\nimport { ColumnDef } from './ColumnDef';\n\n// Event entity\n// The Event entity is created by multiple services (e.g. ip reputation, static rules, anomaly detection) by analyzing network statistics (usage and session data) and related to specific IP address.\n// Multiple Events created by the same root cause in a specific timeframe should be represented in a single Alert, this is because in case of a burst, the user\n// should not see hundreds or thousands events but only few alerts pointing to the same root cause (since resolving the root cause of a single alert should resolve all the events)\n// For that reason, the event Id and Alert Id should be predictable values and identical to the same event in a time frame\n// Event ID pattern: [deviceId]:[ruleId]:[1_minute_rounded_timestamp] - to ensure all events on the same device from the same rule within a minute will share the same Id\n// Alert ID pattern: [deviceId]:[ruleId]:[1_month_rounded_timestamp] - to ensure all events on the same device from the same rule within a month will share the same Id to create a single alert\nexport class Event extends BaseEntityEx {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// Device id \n\tpublic deviceId: string;\n\n\t// Alert id \n\tpublic alertId: string;\n\n\t// If an event has been created from Suricata's alert, holds corresponding Suricata's flow_id \n\tpublic flowId: number;\n\n\t// Start window time in epoch time milliseconds \n\tpublic startTime: number;\n\n\t// End window time in epoch time milliseconds \n\tpublic endTime: number;\n\n\t// Event type: UNDEFINED | DDOS | PORT_SCANNING | DEVICE_TAKEOVER ... \n\tpublic type: EventTypeCode;\n\n\t// Event severity: UNDEFINED | LOW | MEDIUM | HIGH | ... \n\tpublic severity: SeverityTypeCode;\n\n\t// Event current security score \n\tpublic score: number;\n\n\t// Probability score by IP reputation engine \n\tpublic probability: number;\n\n\t// NOT IN USE - (moved to Alert) Will be removed in the NExt version \n\tpublic status: EventStatusCode;\n\n\t// Rule engine type \n\tpublic ruleType: RuleTypeCode;\n\n\t// Static Rule id \n\tpublic ruleId: string;\n\n\t// The allocated IP for the device at the time of the event occurrence \n\tpublic sourceIp: string;\n\n\t// Target IP address for some of the events (e.g. suspicious IP) \n\tpublic targetIp: string;\n\n\t// GeoIP information based on MaxMind database \n\tpublic targetLocation: GeoData;\n\n\t// Event description \n\tpublic description: string;\n\n\t// Additional Event tags \n\tpublic tags: string[];\n\n\t// List of custom attributes (key-value pairs) \n\tpublic labels: Tuple<string, string>[];\n\n\t// Event category \n\tpublic category: EventCategoryCode;\n\n\t// Recommended action description to apply \n\tpublic recommendedAction: string;\n\n\t// List of occurrences of the aggregated event - NOT IN USE - WILL BE REMOVED IN THE NEXT VERSION \n\tpublic occurrences: EventOccurrence[];\n\n\t// Denotes network traffic direction: UNDEFINED | INBOUND | OUTBOUND \n\tpublic trafficDirection: TrafficDirectionCode;\n\n\t// Contains confidence score of malicious IP detection. Value range: 0-100 \n\tpublic confidenceScore: number;\n\n\t// Event occurrences count \n\tpublic occurrencesCount: number;\n\n\t// List of event occurrence indicators \n\tpublic indicators: Indicator[];\n\n\t// Referenced source file \n\tpublic source: string;\n\n}\n\nexport function GetEventColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"alertId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"flowId\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"startTime\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"endTime\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"EventTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"severity\", \"SeverityTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"score\", \"number\", \"decimal\"));\n\tresult.push(new ColumnDef(\"\", \"probability\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"status\", \"EventStatusCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"ruleType\", \"RuleTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"ruleId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"sourceIp\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"targetIp\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"targetLocation\", \"GeoData\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"tags\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"labels\", \"Tuple<string, string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"category\", \"EventCategoryCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"recommendedAction\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"occurrences\", \"EventOccurrence\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"trafficDirection\", \"TrafficDirectionCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"confidenceScore\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"occurrencesCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"indicators\", \"Indicator\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"source\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { BoolTypeCode } from './BoolTypeCode';\n\n// NetworkTopologyReportParams parameters aggregator for network topology report query\nexport class NetworkTopologyReportParams {\n\n\t// Filter by StreamId \n\tpublic streamId: string;\n\n\t// Filter by Destination IP address(es) \n\tpublic dstIp: string[];\n\n\t// Filter by DNS name(s) \n\tpublic dstDns: string[];\n\n\t// Filter by port number(s) \n\tpublic dstPort: number[];\n\n\t// Filter by IP Protocol(s) used in layer 3 (e.g., TCP, UDP) \n\tpublic protocol: string[];\n\n\t// Filter by Applicative Protocol(s) used in layer 7 (e.g., HTTP, MQTT) \n\tpublic appProtocol: string[];\n\n\t// Filter by IP owner name(s) \n\tpublic name: string[];\n\n\t// Filter by Country code(s) \n\tpublic country: string[];\n\n\t// Does this endpoint involved in malicious activity \n\tpublic malicious: BoolTypeCode;\n\n\t// Does this endpoint is blocked by ACL/Firewall rules (no incoming traffic) \n\tpublic blocked: BoolTypeCode;\n\n\t// Sort descriptor (field name with suffix +/- for sort order) \n\tpublic sort: string;\n\n\t// Page number for pagination \n\tpublic page: number;\n\n\t// Page size: number of items per page \n\tpublic size: number;\n\n constructor(streamId?: string, dstIP?: string[], dstDNS?: string[], dstPort?: number[], protocol?: string[], appProtocol?: string[], name?: string[], country?: string[], malicious?: BoolTypeCode, blocked?: BoolTypeCode, sort?: string, page?: number, size?: number) { \n if (streamId !== undefined) { this.streamId = streamId; }\n if (dstIP !== undefined) { this.dstIp = dstIP; }\n if (dstDNS !== undefined) { this.dstDns = dstDNS; }\n if (dstPort !== undefined) { this.dstPort = dstPort; }\n if (protocol !== undefined) { this.protocol = protocol; }\n if (appProtocol !== undefined) { this.appProtocol = appProtocol; }\n if (name !== undefined) { this.name = name; }\n if (country !== undefined) { this.country = country; }\n if (malicious !== undefined) { this.malicious = malicious; }\n if (blocked !== undefined) { this.blocked = blocked; }\n if (sort !== undefined) { this.sort = sort; }\n if (page !== undefined) { this.page = page; }\n if (size !== undefined) { this.size = size; }\n }\n\n}\n\n\n","\nimport { Tuple } from './Tuple';\nimport { StreamConfig } from './StreamConfig';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Stream represents data stream configuration for group of identical IoT devices service the same purpose and sharing the same attributes (e.g. water meter, point-of-sale, ATM IP camera etc)\nexport class Stream extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream name \n\tpublic name: string;\n\n\t// Stream description \n\tpublic description: string;\n\n\t// The APN name in the connectivity provider's mobile code \n\tpublic providerAPN: string;\n\n\t// Flag to indicate if stream is enabled (to be processed) \n\tpublic enabled: boolean;\n\n\t// List of custom attributes (key-value pairs) for user defined data \n\tpublic labels: Tuple<string, string>[];\n\n\t// Stream configuration \n\tpublic config: StreamConfig;\n\n}\n\nexport function GetStreamColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"providerAPN\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"enabled\", \"boolean\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"labels\", \"Tuple<string, string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"config\", \"StreamConfig\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { BaseMessage } from './BaseMessage';\nimport { ColumnDef } from './ColumnDef';\n\n// Message is a generic message structure that embeds BaseMessage and adds a typed payload.\n// Type Parameters:\n// T: The type of the payload.\nexport class Message<T> extends BaseMessage {\n\n\t// The typed data payload of the message. \n\tpublic payload: T;\n\n}\n\nexport function GetMessageColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"payload\", \"T\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { BaseRestResponse } from './BaseRestResponse';\nimport { ColumnDef } from './ColumnDef';\n\n// EntityResponse message is returned for any create/update action on entity\nexport class EntityResponse<T> extends BaseRestResponse {\n\n\t// The entity \n\tpublic entity: T;\n\n}\n\nexport function GetEntityResponseColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"entity\", \"T\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { NotificationTypeCode } from './NotificationTypeCode';\nimport { BaseEntityEx } from './BaseEntityEx';\nimport { ColumnDef } from './ColumnDef';\n\n// Notification represents a notification email\nexport class Notification extends BaseEntityEx {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Notification type: UNDEFINED | ACCOUNT_ONBOARDING | ACCOUNT_IS_READY \n\tpublic notificationType: NotificationTypeCode;\n\n}\n\nexport function GetNotificationColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"notificationType\", \"NotificationTypeCode\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { ConditionDescription } from './ConditionDescription';\n\n// Indicator model represents an event indicator which is a feature and feature value within a normal range\nexport class Indicator {\n\n\t// Feature name \n\tpublic name: string;\n\n\t// Level of Significance \n\tpublic significance: number;\n\n\t// Min normal value \n\tpublic min: number;\n\n\t// Max normal value \n\tpublic max: number;\n\n\t// Actual value of the feature \n\tpublic actual: number;\n\n\t// Reflects Rule’s condition which triggered Event creation \n\tpublic condition: ConditionDescription;\n\n\t// Reflects actual value of corresponding Flow record field which is result of Rule’s condition match \n\tpublic actualVal: string;\n\n constructor(name?: string, significance?: number, min?: number, max?: number, actual?: number, condition?: ConditionDescription, actualVal?: string) { \n if (name !== undefined) { this.name = name; }\n if (significance !== undefined) { this.significance = significance; }\n if (min !== undefined) { this.min = min; }\n if (max !== undefined) { this.max = max; }\n if (actual !== undefined) { this.actual = actual; }\n if (condition !== undefined) { this.condition = condition; }\n if (actualVal !== undefined) { this.actualVal = actualVal; }\n }\n\n}\n\n\n","\nimport { GeoData } from './GeoData';\nimport { BaseEntity } from './BaseEntity';\nimport { DeviceTypeCode } from './DeviceTypeCode';\nimport { DeviceStatusCode } from './DeviceStatusCode';\nimport { Tuple } from './Tuple';\nimport { DeviceActionCode } from './DeviceActionCode';\nimport { SIM } from './SIM';\nimport { ColumnDef } from './ColumnDef';\n\n// Device entity is an IoT device representation with attributes and state\n// Device may have several external identities such as\n// * IMSI - International mobile subscriber identity (2G/3G/4G)\n// * SUPI - Subscription Permanent Identifier (IMSI equivalent for 5G)\n// * IMEI - International Mobile Equipment Identity (2G/3G/4G)\n// * SUCI - Subscription Concealed Identifier (5G)\nexport class Device extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// The device identity in the external system (used for integration) \n\tpublic externalId: string;\n\n\t// Device name \n\tpublic name: string;\n\n\t// Device description \n\tpublic description: string;\n\n\t// Country name \n\tpublic country: string;\n\n\t// Mobile network operator name \n\tpublic operator: string;\n\n\t// Device type: UNDEFINED | CONTROLLER | METER | SENSOR ... \n\tpublic type: DeviceTypeCode;\n\n\t// Device status: UNDEFINED | PENDING | ACTIVE | INACTIVE | SUSPENDED \n\tpublic status: DeviceStatusCode;\n\n\t// Device last activity timestamp [Epoch milliseconds Timestamp] \n\tpublic lastActivity: number;\n\n\t// Device MAC address \n\tpublic mac: string;\n\n\t// Device IP address (IPv4 or IPv6) \n\tpublic ip: string;\n\n\t// Device mobile subscriber id (IMSI or SUPI) \n\tpublic sid: string;\n\n\t// Device mobile equipment id (IMEI or PEI) \n\tpublic eid: string;\n\n\t// Device current security score \n\tpublic score: number;\n\n\t// List of device tags \n\tpublic tags: string[];\n\n\t// List of attributes (key-value pairs) \n\tpublic labels: Tuple<string, string>[];\n\n\t// Number of events for the time period (calculated field) \n\tpublic eventCount: number;\n\n\t// Action applied on the device \n\tpublic actionApplied: DeviceActionCode;\n\n\t// Who applied the action (user id) \n\tpublic ActionAppliedBy: string;\n\n\t// When action was applied [Epoch milliseconds Timestamp] \n\tpublic ActionAppliedOn: number;\n\n\t// List of SIM cards associated with the device \n\tpublic simCards: SIM[];\n\n\t// GeoIP information based on MaxMind database for device address \n\tpublic address: GeoData;\n\n}\n\nexport function GetDeviceColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"externalId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"country\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"operator\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"DeviceTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"status\", \"DeviceStatusCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"lastActivity\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"mac\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"ip\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"sid\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"eid\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"score\", \"number\", \"decimal\"));\n\tresult.push(new ColumnDef(\"\", \"tags\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"labels\", \"Tuple<string, string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"eventCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"actionApplied\", \"DeviceActionCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"ActionAppliedBy\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"ActionAppliedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"simCards\", \"SIM\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"address\", \"GeoData\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { Event } from './Event';\nimport { Device } from './Device';\nimport { ColumnDef } from './ColumnDef';\n\n// DeviceWithEvents entity is device info with list of attached events\n// This is for display only\nexport class DeviceWithEvents extends Device {\n\n\t// List of events \n\tpublic events: Event[];\n\n}\n\nexport function GetDeviceWithEventsColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"events\", \"Event\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Image stores a small base64 picture (such as: user avatar, account logo, etc) or URI (for large pictures) in the database\n// The id of the image is the entity id\nexport class Image extends BaseEntity {\n\n\t// Image content URL (starts with http) or embedded image (base64) \n\tpublic content: string;\n\n\t// Image content Mime Type \n\tpublic contentType: string;\n\n}\n\nexport function GetImageColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"content\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"contentType\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { RuleTypeCode } from './RuleTypeCode';\nimport { DataSourceCode } from './DataSourceCode';\nimport { ConditionDescription } from './ConditionDescription';\nimport { DeviceTypeCode } from './DeviceTypeCode';\nimport { EventTypeCode } from './EventTypeCode';\nimport { SeverityTypeCode } from './SeverityTypeCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Rule entity\nexport class Rule extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// Rule name \n\tpublic name: string;\n\n\t// Rule type \n\tpublic type: RuleTypeCode;\n\n\t// Rule description \n\tpublic description: string;\n\n\t// Flag to indicate if this is a system rule (read-only) or user-defined rule \n\tpublic isSystemRule: boolean;\n\n\t// Flag to indicate if this rule is active (true) or suspended (false), only active rules are evaluated \n\tpublic isActiveRule: boolean;\n\n\t// Rule context - what is the data source to evaluate the rule \n\tpublic context: DataSourceCode;\n\n\t// List of IDS rule lines (Suricata format) \n\tpublic idsRuleLines: string[];\n\n\t// Global threashold for IDS rules (Suricata format) \n\tpublic idsGlobalThreashold: string;\n\n\t// List of AND conditions, all of them must be true for the rule to trigger event \n\tpublic matchAll: ConditionDescription[];\n\n\t// List of OR conditions, at least one of them must be true for the rule to trigger event \n\tpublic matchAny: ConditionDescription[];\n\n\t// Exclude devices with ID included in this list \n\tpublic excludeIDs: string[];\n\n\t// Exclude devices with type included in this list \n\tpublic excludeTags: string[];\n\n\t// Exclude devices with this type \n\tpublic excludeTypes: DeviceTypeCode[];\n\n\t// Include devices with ID included in this list \n\tpublic includeIDs: string[];\n\n\t// Include devices with type included in this list \n\tpublic includeTags: string[];\n\n\t// Include devices with this type \n\tpublic includeTypes: DeviceTypeCode[];\n\n\t// The time duration (in seconds) for consecutive aggregations \n\tpublic timeWindowSec: number;\n\n\t// Set the event type on events generated by this rule \n\tpublic setEventType: EventTypeCode;\n\n\t// Set the event severity on events generated by this rule \n\tpublic setEventSeverity: SeverityTypeCode;\n\n\t// time of last alert \n\tpublic lastAlertTimestamp: number;\n\n\t// amount of alerts \n\tpublic alertsCount: number;\n\n}\n\nexport function GetRuleColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"RuleTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"isSystemRule\", \"boolean\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"isActiveRule\", \"boolean\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"context\", \"DataSourceCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"idsRuleLines\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"idsGlobalThreashold\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"matchAll\", \"ConditionDescription\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"matchAny\", \"ConditionDescription\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"excludeIDs\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"excludeTags\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"excludeTypes\", \"DeviceTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"includeIDs\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"includeTags\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"includeTypes\", \"DeviceTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"timeWindowSec\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"setEventType\", \"EventTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"setEventSeverity\", \"SeverityTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"lastAlertTimestamp\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"alertsCount\", \"number\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { Rule } from './Rule';\nimport { ColumnDef } from './ColumnDef';\n\n// RuleWithSQL is an API response wrapper that extends the base Rule definition\n// with an additional SQL field.\n// The SQL field contains the BigQuery-compatible WHERE clause generated from\n// the rule's MatchAll (AND) and MatchAny (OR) conditions, using the UDR → SQL grammar.\n// This struct is used for API responses where consumers (UI, external services, tools)\n// need to inspect or execute the SQL representation of a rule without modifying the rule itself.\n// Note: The SQL field is computed at runtime and is not persisted in the database.\nexport class RuleWithSQL extends Rule {\n\n\t// \n\tpublic sql: string;\n\n}\n\nexport function GetRuleWithSQLColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"sql\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// SessionRecord represents network statistics for a session\nexport class SessionRecord extends BaseEntity {\n\n\t// Indication to the source location of the record \n\tpublic source: string;\n\n\t// Session ID \n\tpublic sessionId: string;\n\n\t// Account ID \n\tpublic accountId: string;\n\n\t// Stream ID \n\tpublic streamId: string;\n\n\t// Device ID \n\tpublic deviceId: string;\n\n\t// Device SIM card ID (to support multiple SIMs) \n\tpublic simId: string;\n\n\t// Start window time in epoch time milliseconds \n\tpublic startTime: number;\n\n\t// End window time in epoch time milliseconds \n\tpublic endTime: number;\n\n\t// Device IP \n\tpublic deviceIp: string;\n\n\t// Device Port \n\tpublic devicePort: number;\n\n\t// Destination (remote) IP \n\tpublic dstIp: string;\n\n\t// Destination (remote) Port \n\tpublic dstPort: number;\n\n\t// Destination (remote) FQDN \n\tpublic dstDns: string;\n\n\t// Protocol \n\tpublic protocol: string;\n\n\t// Number of incoming packets (to the device) \n\tpublic packetsIn: number;\n\n\t// Number of outgoing packets (from the device) \n\tpublic packetsOut: number;\n\n\t// Total number of incoming bytes (to the device) \n\tpublic bytesIn: number;\n\n\t// Total number of outgoing bytes (from the device) \n\tpublic bytesOut: number;\n\n\t// List of labels \n\tpublic labels: string[];\n\n}\n\nexport function GetSessionRecordColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"source\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"sessionId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"simId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"startTime\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"endTime\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceIp\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"devicePort\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstIp\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstPort\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstDns\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"protocol\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"packetsIn\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"packetsOut\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"bytesIn\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"bytesOut\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"labels\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// Location model represents WGS-84 coordinates\nexport class Location {\n\n\t// \n\tpublic lon: number;\n\n\t// \n\tpublic lat: number;\n\n constructor(lon?: number, lat?: number) { \n if (lon !== undefined) { this.lon = lon; }\n if (lat !== undefined) { this.lat = lat; }\n }\n\n}\n\n\n","\n\n// StringIntValue model used as a string key-value pair\nexport class StringIntValue {\n\n\t// Tuple key \n\tpublic key: string;\n\n\t// Tuple value \n\tpublic value: number;\n\n constructor(key?: string, value?: number) { \n if (key !== undefined) { this.key = key; }\n if (value !== undefined) { this.value = value; }\n }\n\n}\n\n\n","\nimport { Link } from './Link';\nimport { Node } from './Node';\n\n// NetworkMap is a data structure representing a set of nodes and vertex representing a network\nexport class NetworkMap {\n\n\t// List of nodes \n\tpublic nodes: Node[];\n\n\t// List of links \n\tpublic links: Link[];\n\n constructor(nodes?: Node[], links?: Link[]) { \n if (nodes !== undefined) { this.nodes = nodes; }\n if (links !== undefined) { this.links = links; }\n }\n\n}\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { DeviceActionCode } from './DeviceActionCode';\nimport { ColumnDef } from './ColumnDef';\n\n// Action entity is a user action applied on an event or device\nexport class Action extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// Event id (in case action was applied on an event) \n\tpublic eventId: string;\n\n\t// Device id (in case action was applied on a device) \n\tpublic deviceId: string;\n\n\t// Action type: UNDEFINED | REDIRECT | SUSPEND | BLOCK_IP ... \n\tpublic type: DeviceActionCode;\n\n\t// User id who applied the action \n\tpublic userId: string;\n\n}\n\nexport function GetActionColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"eventId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"DeviceActionCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"userId\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { DeviceTypeCode } from './DeviceTypeCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// DeviceReport is a periodic (usually daily) snapshot on status of all devices, field createdOn indicates the snapshot time\nexport class DeviceReport extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// Total device count \n\tpublic totalDevices: number;\n\n\t// Total active device count (where their last activity was up to TBD hours) \n\tpublic activeDevices: number;\n\n\t// Total device at risk count (where their score is more than 30) \n\tpublic devicesAtRisk: number;\n\n\t// Total affected device count: (where their distinct event count is more than 0) \n\tpublic affectedDevices: number;\n\n\t// Distribution of devices at risk by type \n\tpublic devicesAtRiskByType: Map<DeviceTypeCode,number>;\n\n}\n\nexport function GetDeviceReportColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalDevices\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"activeDevices\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"devicesAtRisk\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"affectedDevices\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"devicesAtRiskByType\", \"Map<DeviceTypeCode,number>\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// FloatInterval represents an interval of min and max numbers Floats\nexport class FloatInterval {\n\n\t// From interval \n\tpublic from: number;\n\n\t// To interval \n\tpublic to: number;\n\n constructor(from?: number, to?: number) { \n if (from !== undefined) { this.from = from; }\n if (to !== undefined) { this.to = to; }\n }\n\n}\n\n\n","\n\n// MaliciousIPData is a data structure representing malicious IP and its statistics\nexport class MaliciousIPData {\n\n\t// The malicious IP \n\tpublic ip: string;\n\n\t// Total related events \n\tpublic totalEvents: number;\n\n\t// Total related devices \n\tpublic totalDevices: number;\n\n\t// Total number of malicious IPs \n\tpublic totalMaliciousIPs: number;\n\n constructor(iP?: string, totalEvents?: number, totalDevices?: number, totalMaliciousIPs?: number) { \n if (iP !== undefined) { this.ip = iP; }\n if (totalEvents !== undefined) { this.totalEvents = totalEvents; }\n if (totalDevices !== undefined) { this.totalDevices = totalDevices; }\n if (totalMaliciousIPs !== undefined) { this.totalMaliciousIPs = totalMaliciousIPs; }\n }\n\n}\n\n\n","\nimport { Device } from './Device';\nimport { Event } from './Event';\nimport { ColumnDef } from './ColumnDef';\n\n// EventWithDevice entity is an event with the device info (for display onlY)\nexport class EventWithDevice extends Event {\n\n\t// Device attached to the event \n\tpublic device: Device;\n\n}\n\nexport function GetEventWithDeviceColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"device\", \"Device\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { NotificationTypeCode } from './NotificationTypeCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// NotificationMessage represents a notification email\nexport class NotificationMessage extends BaseEntity {\n\n\t// Account ID related to the notification context \n\tpublic accountId: string;\n\n\t// Human-readable message shown to the user \n\tpublic description: string;\n\n\t// List of parts to build the action URL (e.g. [\"console\", \"reports\"]) \n\tpublic actionParts: string[];\n\n\t// Type indicates the notification category, e.g. \"report\", \"system\", \"device\" \n\tpublic type: NotificationTypeCode;\n\n}\n\nexport function GetNotificationMessageColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"actionParts\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"NotificationTypeCode\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { NotificationMessage } from './NotificationMessage';\nimport { ColumnDef } from './ColumnDef';\n\n// NotificationMessageDTO is a UI DTO that combines NotificationMessage and UserNotificationMessage fields\nexport class NotificationMessageDTO extends NotificationMessage {\n\n\t// \n\tpublic userId: string;\n\n\t// \n\tpublic isRead: boolean;\n\n\t// \n\tpublic readAt: number;\n\n}\n\nexport function GetNotificationMessageDTOColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"userId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"isRead\", \"boolean\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"readAt\", \"number\", \"datetime\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// DevicesAtRiskConfig is int of minimal score for device to be at risk\nexport class DevicesAtRiskConfig {\n\n\t// Minimal score for device to be at risk \n\tpublic minScore: number;\n\n constructor(minScore?: number) { \n if (minScore !== undefined) { this.minScore = minScore; }\n }\n\n}\n\n\n","\n\n// LocalTime represents the time (year, month, day, hour, minute, second) as number in the following format: YYYYMMDDhhmmss.\n// It is useful for storing time in a compact, human-readable integer format that preserves sorting order.\nexport class LocalTime {\n\n constructor() { \n }\n\n}\n\n\n","\nimport { Rule } from './Rule';\nimport { ColumnDef } from './ColumnDef';\n\n// IdsRule is an API response wrapper that extends the base Rule definition\n// with an additional SQL field for IDS rules.\nexport class IdsRule extends Rule {\n\n\t// \n\tpublic sql: string;\n\n}\n\nexport function GetIdsRuleColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"sql\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Checkpoint represents parsing status in time that preserves parsing cycle statistics and last checkpoint (timestamp) to avoid parsing the same files over and over again\nexport class Checkpoint extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// Checkpoint timestamp [Epoch milliseconds Timestamp] \n\tpublic checkpoint: number;\n\n\t// First packet timestamp [Epoch milliseconds Timestamp] \n\tpublic firstPacketTime: number;\n\n\t// Last packet timestamp [Epoch milliseconds Timestamp] \n\tpublic lastPacketTime: number;\n\n\t// Checkpoint label name (usually file name) \n\tpublic label: string;\n\n\t// General purpose description \n\tpublic description: string;\n\n\t// Total elapsed time (between updated and created time) \n\tpublic elapsed: number;\n\n\t// Total elapsed time spent in IDS processing \n\tpublic idsElapsed: number;\n\n\t// Total files parsed \n\tpublic totalFiles: number;\n\n\t// Total packets in the file \n\tpublic totalPackets: number;\n\n\t// Total bytes in the processed files, for use by Suricata parser \n\tpublic totalBytes: number;\n\n\t// Total alarms generated by Suricata parser when processing one files batch \n\tpublic totalAlarms: number;\n\n\t// Total usage records created \n\tpublic totalUsage: number;\n\n\t// Total session records created \n\tpublic totalSession: number;\n\n\t// Total RADIUS records created \n\tpublic totalRadius: number;\n\n\t// Total number of overlapped packets (their timestamp is earlier than the latest checkpoint) \n\tpublic overlappedPackets: number;\n\n\t// Total number of packets that failed parsing \n\tpublic failedPackets: number;\n\n\t// Total number of packets not related to the tracked devices \n\tpublic irrelevantPackets: number;\n\n\t// Total number of packets that could not be mapped to device identity \n\tpublic unmappedPackets: number;\n\n\t// Total number of successfully processed packets \n\tpublic processedPackets: number;\n\n\t// Checkpoint state: 0 - created, 1 - in progress, 2 - completed \n\tpublic state: number;\n\n\t// Identity of the worker who processed the file \n\tpublic processedBy: string;\n\n\t// Pkts is the total number of packets seen at the decoder Total packet & byte volume; used to track stream activity, load patterns, or downtime. Normalize per hour → “packets/s” or “MB/s”. \n\tpublic decoderPackets: number;\n\n\t// Bytes is the total number of bytes seen at the decoder \n\tpublic decoderBytes: number;\n\n\t// AvgPktSize is the average packet size seen at the decoder Indicates traffic type (IoT telemetry small; firmware downloads large) Changes may mark new payload types or DoS \n\tpublic decoderAvgPktSize: number;\n\n\t// MaxPktSize is the maximum packet size seen at the decoder \n\tpublic decoderMaxPktSize: number;\n\n\t// Total is the cumulative number of flows tracked during the stats window Total vs. concurrent flows → connection churn rate. Baseline for “device activity density.” \n\tpublic flowTotal: number;\n\n\t// The count of TCP flows seen (cumulative in the window) Protocol mix breakdown. Drift over time signals behavior change \n\tpublic flowTcp: number;\n\n\t// The count of UDP flows seen (cumulative in the window) \n\tpublic flowUdp: number;\n\n\t// The count of ICMP flows seen (cumulative in the window) \n\tpublic flowIcmp: number;\n\n\t// TCPReuse counts flows where 5-tuple/ports were quickly reused (possible scan/NAT churn) \n\tpublic flowTcpReuse: number;\n\n\t// Elephant counts flows flagged as large/long-lived per engine heuristics \n\tpublic flowElephant: number;\n\n\t// Memcap is the configured memory cap for the flow engine (bytes) \n\tpublic flowMemcap: number;\n\n\t// MemUse is current memory used by the flow engine (bytes) \n\tpublic flowMemuse: number;\n\n\t// Syn counts SYN packets seen (client connection attempts) TCP Behavior (handshake, teardown, quality) \n\tpublic tcpSyn: number;\n\n\t// SynAck counts SYN+ACK responses seen (server handshake replies) \n\tpublic tcpSynAck: number;\n\n\t// Rst counts TCP RST packets (aborted connections, port scans, resets) \n\tpublic tcpRst: number;\n\n\t// AckUnseenData counts ACKs referencing sequence numbers never observed \n\tpublic tcpAckUnseenData: number;\n\n\t// MidstreamPickups counts flows picked up midstream (no handshake observed) \n\tpublic tcpMidstreamPickups: number;\n\n\t// Sessions counts total TCP sessions tracked since startup \n\tpublic sessions: number;\n\n\t// \n\tpublic rulesLoaded: number;\n\n\t// \n\tpublic rulesFailed: number;\n\n\t// \n\tpublic rulesSkipped: number;\n\n\t// \n\tpublic alert: number;\n\n\t// \n\tpublic alertsSuppressed: number;\n\n\t// Total number of stream flows, excluding rejected flows Stream-related KPI fields \n\tpublic streamFlowsTotal: number;\n\n\t// Number of rejected stream flows due to unknown device \n\tpublic streamFlowRejectUnknownDevice: number;\n\n\t// Number of rejected TCP stream flows due to no data payload \n\tpublic streamFlowTcpRejectNoData: number;\n\n\t// Number of rejected stream flows due to ACL rules \n\tpublic streamFlowRejectACL: number;\n\n\t// \n\tpublic streamFlowTcpTotal: number;\n\n\t// \n\tpublic streamFlowTcpBytesIn: number;\n\n\t// \n\tpublic streamFlowTcpBytesOut: number;\n\n\t// \n\tpublic streamFlowTcpPacketsIn: number;\n\n\t// \n\tpublic streamFlowTcpPacketsOut: number;\n\n\t// \n\tpublic streamFlowUdpTotal: number;\n\n\t// \n\tpublic streamFlowUdpBytesIn: number;\n\n\t// \n\tpublic streamFlowUdpBytesOut: number;\n\n\t// \n\tpublic streamFlowUdpPacketsIn: number;\n\n\t// \n\tpublic streamFlowUdpPacketsOut: number;\n\n}\n\nexport function GetCheckpointColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"checkpoint\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"firstPacketTime\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"lastPacketTime\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"label\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"elapsed\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"idsElapsed\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalFiles\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalPackets\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalBytes\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalAlarms\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalUsage\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalSession\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalRadius\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"overlappedPackets\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"failedPackets\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"irrelevantPackets\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"unmappedPackets\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"processedPackets\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"state\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"processedBy\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"decoderPackets\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"decoderBytes\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"decoderAvgPktSize\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"decoderMaxPktSize\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"flowTotal\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"flowTcp\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"flowUdp\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"flowIcmp\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"flowTcpReuse\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"flowElephant\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"flowMemcap\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"flowMemuse\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"tcpSyn\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"tcpSynAck\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"tcpRst\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"tcpAckUnseenData\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"tcpMidstreamPickups\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"sessions\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"rulesLoaded\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"rulesFailed\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"rulesSkipped\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"alert\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"alertsSuppressed\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowsTotal\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowRejectUnknownDevice\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowTcpRejectNoData\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowRejectACL\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowTcpTotal\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowTcpBytesIn\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowTcpBytesOut\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowTcpPacketsIn\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowTcpPacketsOut\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowUdpTotal\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowUdpBytesIn\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowUdpBytesOut\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowUdpPacketsIn\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowUdpPacketsOut\", \"number\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// NetworkTopologyReportKPIs represents list of global KPIs for topology\nexport class NetworkTopologyReportKPIs {\n\n\t// number of distinct Public IPs \n\tpublic publicIPCount: number;\n\n\t// number of distinct Public DNS \n\tpublic publicDNSCount: number;\n\n\t// number of distinct countries \n\tpublic countriesCount: number;\n\n\t// number of distinct locations \n\tpublic locationsCount: number;\n\n\t// number of distinct ports \n\tpublic portsCount: number;\n\n\t// number of distinct IP protocols (TCP, UDP, ICMP) \n\tpublic protocolsCount: number;\n\n\t// number of distinct applications \n\tpublic applicationsCount: number;\n\n\t// number of distinct suspicious endpoints \n\tpublic suspiciousCount: number;\n\n constructor(publicIPCount?: number, publicDNSCount?: number, countriesCount?: number, locationsCount?: number, portsCount?: number, protocolsCount?: number, applicationsCount?: number, suspiciousCount?: number) { \n if (publicIPCount !== undefined) { this.publicIPCount = publicIPCount; }\n if (publicDNSCount !== undefined) { this.publicDNSCount = publicDNSCount; }\n if (countriesCount !== undefined) { this.countriesCount = countriesCount; }\n if (locationsCount !== undefined) { this.locationsCount = locationsCount; }\n if (portsCount !== undefined) { this.portsCount = portsCount; }\n if (protocolsCount !== undefined) { this.protocolsCount = protocolsCount; }\n if (applicationsCount !== undefined) { this.applicationsCount = applicationsCount; }\n if (suspiciousCount !== undefined) { this.suspiciousCount = suspiciousCount; }\n }\n\n}\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// UserNotificationMessage represents a notification assigned to a user\nexport class UserNotificationMessage extends BaseEntity {\n\n\t// FK to notification_message.id \n\tpublic notificationId: string;\n\n\t// FK to users.id \n\tpublic userId: string;\n\n\t// default false \n\tpublic isRead: boolean;\n\n\t// When the user acknowledged it \n\tpublic readAt: number;\n\n}\n\nexport function GetUserNotificationMessageColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"notificationId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"userId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"isRead\", \"boolean\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"readAt\", \"number\", \"datetime\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// EntityAction represents the type of action performed on an entity.\nexport class EntityAction {\n\n constructor() { \n }\n\n}\n\n\n","\nimport { Interval } from './Interval';\nimport { Tuple } from './Tuple';\n\n// SeriesData model represents a set of data structure for graphs\nexport class SeriesData<T,V> {\n\n\t// Range of the series (from ... to) \n\tpublic interval: Interval;\n\n\t// Map of int element to its value \n\tpublic values: Tuple<T, V>[];\n\n constructor(interval?: Interval, values?: Tuple<T, V>[]) { \n if (interval !== undefined) { this.interval = interval; }\n if (values !== undefined) { this.values = values; }\n }\n\n}\n\n\n","\nimport { Interval } from './Interval';\nimport { SeverityTypeCode } from './SeverityTypeCode';\n\n// SeverityIntervalTuple is tuple of SeverityTypeCode and Interval\nexport class SeverityIntervalTuple {\n\n\t// ALPHA_WEIGHT_FACTOR for shieldex calculation \n\tpublic severity: SeverityTypeCode;\n\n\t// ALPHA_WEIGHT_FACTOR for shieldex calculation \n\tpublic interval: Interval;\n\n constructor(severity?: SeverityTypeCode, interval?: Interval) { \n if (severity !== undefined) { this.severity = severity; }\n if (interval !== undefined) { this.interval = interval; }\n }\n\n}\n\n\n","\nimport { BaseRestResponse } from './BaseRestResponse';\nimport { ColumnDef } from './ColumnDef';\n\n// ActionResponse message is returned for any action on entity with no return data (e.d. delete)\nexport class ActionResponse extends BaseRestResponse {\n\n\t// The entity key (Id) \n\tpublic key: string;\n\n\t// Additional data \n\tpublic data: string;\n\n}\n\nexport function GetActionResponseColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"key\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"data\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// Entities is a generic wrapper to express a list of primitive or complex types as an Entity.\n// It allows a collection of items to be treated as a single Entity unit.\nexport class Entities<T> {\n\n\t// Values is the list of wrapped entities or values \n\tpublic values: T[];\n\n constructor(values?: T[]) { \n if (values !== undefined) { this.values = values; }\n }\n\n}\n\n\n","\nimport { TimeFrame } from './TimeFrame';\nimport { TimeDataPoint } from './TimeDataPoint';\n\n// TimeSeries represents a named collection of data points over a specific time range.\nexport class TimeSeries<T> {\n\n\t// Name of the time series \n\tpublic name: string;\n\n\t// Range covers the start and end time of the series \n\tpublic range: TimeFrame;\n\n\t// Values contains the data points \n\tpublic values: TimeDataPoint<T>[];\n\n constructor(name?: string, range?: TimeFrame, values?: TimeDataPoint<T>[]) { \n if (name !== undefined) { this.name = name; }\n if (range !== undefined) { this.range = range; }\n if (values !== undefined) { this.values = values; }\n }\n\n}\n\n\n","\nimport { Location } from './Location';\n\n// GeoData model represents Geographic data associated with IP\n// This structure is based on the Elasticsearch GeoIP pipeline fetching data from MaxMind database\nexport class GeoData {\n\n\t// Country ISO code \n\tpublic country_iso_code: string;\n\n\t// Country name \n\tpublic country_name: string;\n\n\t// Region ISO code \n\tpublic region_iso_code: string;\n\n\t// Region name \n\tpublic region_name: string;\n\n\t// City name \n\tpublic city_name: string;\n\n\t// Geo Location (WGS-84) \n\tpublic location: Location;\n\n\t// Street name \n\tpublic street: string;\n\n\t// Postal code \n\tpublic postal: number;\n\n constructor(countryIsoCode?: string, countryName?: string, regionIsoCode?: string, regionName?: string, cityName?: string, location?: Location, street?: string, postal?: number) { \n if (countryIsoCode !== undefined) { this.country_iso_code = countryIsoCode; }\n if (countryName !== undefined) { this.country_name = countryName; }\n if (regionIsoCode !== undefined) { this.region_iso_code = regionIsoCode; }\n if (regionName !== undefined) { this.region_name = regionName; }\n if (cityName !== undefined) { this.city_name = cityName; }\n if (location !== undefined) { this.location = location; }\n if (street !== undefined) { this.street = street; }\n if (postal !== undefined) { this.postal = postal; }\n }\n\n}\n\n\n","\n\n// NetworkTopologyRecord represents raw data structure of BigQuery table\nexport class NetworkTopologyRecord {\n\n\t// Stream ID - not persisted \n\tpublic streamId: string;\n\n\t// Destination IP address \n\tpublic dstIP: string;\n\n\t// Comma-separated list of DNS names \n\tpublic dstDNS: string;\n\n\t// Destination port number \n\tpublic dstPort: number;\n\n\t// IP Protocol used in layer 3 (e.g., TCP, UDP) \n\tpublic protocol: string;\n\n\t// Applicative Protocol used in layer 7 (e.g., HTTP, MQTT) \n\tpublic appProtocol: string;\n\n\t// Additional information about the application \n\tpublic appName: string;\n\n\t// Number of devices communicating with this IP \n\tpublic devices: number;\n\n\t// IP Geo location provided as WKT format \n\tpublic geo: string;\n\n\t// IP Owner name \n\tpublic name: string;\n\n\t// IP Owner address \n\tpublic address: string;\n\n\t// Does this endpoint involved in malicious activity \n\tpublic malicious: boolean;\n\n\t// List of malicious activities tags \n\tpublic tags: string[];\n\n\t// Country code \n\tpublic country: string;\n\n\t// Does this endpoint is blocked by ACL/Firewall rules (no incoming traffic) \n\tpublic blocked: boolean;\n\n constructor(streamId?: string, dstIP?: string, dstDNS?: string, dstPort?: number, protocol?: string, appProtocol?: string, appName?: string, devices?: number, geo?: string, name?: string, address?: string, malicious?: boolean, tags?: string[], country?: string, blocked?: boolean) { \n if (streamId !== undefined) { this.streamId = streamId; }\n if (dstIP !== undefined) { this.dstIP = dstIP; }\n if (dstDNS !== undefined) { this.dstDNS = dstDNS; }\n if (dstPort !== undefined) { this.dstPort = dstPort; }\n if (protocol !== undefined) { this.protocol = protocol; }\n if (appProtocol !== undefined) { this.appProtocol = appProtocol; }\n if (appName !== undefined) { this.appName = appName; }\n if (devices !== undefined) { this.devices = devices; }\n if (geo !== undefined) { this.geo = geo; }\n if (name !== undefined) { this.name = name; }\n if (address !== undefined) { this.address = address; }\n if (malicious !== undefined) { this.malicious = malicious; }\n if (tags !== undefined) { this.tags = tags; }\n if (country !== undefined) { this.country = country; }\n if (blocked !== undefined) { this.blocked = blocked; }\n }\n\n}\n\n\n","\nimport { Distribution } from './Distribution';\nimport { DeviceReport } from './DeviceReport';\nimport { ReportSourceCode } from './ReportSourceCode';\nimport { BaseEntityEx } from './BaseEntityEx';\nimport { ColumnDef } from './ColumnDef';\n\n// ReportInstance represents generated report\nexport class ReportInstance extends BaseEntityEx {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// From period of generated report \n\tpublic from: number;\n\n\t// To period of generated report \n\tpublic to: number;\n\n\t// Shield index score (1-100) \n\tpublic shieldexScore: number;\n\n\t// Devices distribution by status per report \n\tpublic devicesDistributionByStatus: Distribution<number>;\n\n\t// Device report \n\tpublic deviceReport: DeviceReport;\n\n\t// Alerts distribution by severity \n\tpublic alertsDistributionBySeverity: Distribution<number>;\n\n\t// link to download report \n\tpublic downloadLink: string;\n\n\t// report trigger source: Undefined, Ondemand or Periodic \n\tpublic reportTriggerSource: ReportSourceCode;\n\n\t// Username triggered the report or empty if system triggered \n\tpublic triggeredByUser: string;\n\n\t// will be populated with value of triggering Report’s id. \n\tpublic triggeredByScheduler: string;\n\n}\n\nexport function GetReportInstanceColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"from\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"to\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"shieldexScore\", \"number\", \"decimal\"));\n\tresult.push(new ColumnDef(\"\", \"devicesDistributionByStatus\", \"Distribution<number>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceReport\", \"DeviceReport\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"alertsDistributionBySeverity\", \"Distribution<number>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"downloadLink\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"reportTriggerSource\", \"ReportSourceCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"triggeredByUser\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"triggeredByScheduler\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\nexport class IdsList {\n\n\t// IDS rule code name \n\tpublic codeName: string;\n\n\t// \n\tpublic description: string;\n\n\t// list of operand string values \n\tpublic values: string[];\n\n constructor(codeName?: string, description?: string, values?: string[]) { \n if (codeName !== undefined) { this.codeName = codeName; }\n if (description !== undefined) { this.description = description; }\n if (values !== undefined) { this.values = values; }\n }\n\n}\n\n\n","\n\n// EntityRequest message is returned for any create/update action on entity\nexport class EntityRequest<T> {\n\n\t// The entity \n\tpublic entity: T;\n\n constructor(entity?: T) { \n if (entity !== undefined) { this.entity = entity; }\n }\n\n}\n\n\n","\n\n// NotificationMessageStats returns statistics about notifications for a user\nexport class NotificationMessageStats {\n\n\t// \n\tpublic unreadCount: number;\n\n\t// \n\tpublic totalCount: number;\n\n constructor(unreadCount?: number, totalCount?: number) { \n if (unreadCount !== undefined) { this.unreadCount = unreadCount; }\n if (totalCount !== undefined) { this.totalCount = totalCount; }\n }\n\n}\n\n\n","\nimport { ReportTypeCode } from './ReportTypeCode';\nimport { TimeFrame } from './TimeFrame';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Report represents a system generated and scheduled report\nexport class Report extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// User id who owns the report \n\tpublic userId: string;\n\n\t// Schedule report name \n\tpublic name: string;\n\n\t// Crontab (6 space-separated fields: sec, min, hour, day, month, dayOfWeek) syntax (https://en.wikipedia.org/wiki/Cron) \n\tpublic cron: string;\n\n\t// EMAIL recipients list \n\tpublic recipients: string[];\n\n\t// Report type (COMPLIANCE | DEVICES | EVENTS ...) \n\tpublic reportType: ReportTypeCode;\n\n\t// Absolute or relative time (epoch time milliseconds) to define start time and end time \n\tpublic period: TimeFrame;\n\n\t// Toggle to define whether report scheduler is enabled/disable \n\tpublic status: boolean;\n\n\t// Toggle to define whether created report instance should be sent by email to recipients \n\tpublic receiveViaMail: boolean;\n\n}\n\nexport function GetReportColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"userId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"cron\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"recipients\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"reportType\", \"ReportTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"period\", \"TimeFrame\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"status\", \"boolean\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"receiveViaMail\", \"boolean\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { DevicesAtRiskConfig } from './DevicesAtRiskConfig';\nimport { DeviceScoreConfig } from './DeviceScoreConfig';\n\n// DeviceConfig is a set of device related configurations\nexport class DeviceConfig {\n\n\t// devices at risk configuration \n\tpublic devicesAtRiskConfig: DevicesAtRiskConfig;\n\n\t// device score configurations \n\tpublic deviceScoreConfig: DeviceScoreConfig;\n\n constructor(devicesAtRiskConfig?: DevicesAtRiskConfig, deviceScoreConfig?: DeviceScoreConfig) { \n if (devicesAtRiskConfig !== undefined) { this.devicesAtRiskConfig = devicesAtRiskConfig; }\n if (deviceScoreConfig !== undefined) { this.deviceScoreConfig = deviceScoreConfig; }\n }\n\n}\n\n\n","\n\n// Timestamp represents Epoch milliseconds timestamp.\n// It is the primary time representation in the system, allowing for easy serialization and arithmetic.\nexport class Timestamp {\n\n constructor() { \n }\n\n}\n\n\n","\nimport { Tuple } from './Tuple';\nimport { SeriesData } from './SeriesData';\n\n// GraphSeries model represents a set of data points over min,max group of points. T used as a type for key in SeriesData, V used as a value in SeriesData\nexport class GraphSeries<T,V> {\n\n\t// Name of the time series \n\tpublic name: string;\n\n\t// Map of int element to its internal object: range, internalValues \n\tpublic values: Tuple<number, SeriesData<T,V>>[];\n\n constructor(name?: string, values?: Tuple<number, SeriesData<T,V>>[]) { \n if (name !== undefined) { this.name = name; }\n if (values !== undefined) { this.values = values; }\n }\n\n}\n\n\n","\n\n// TokenData model represents user info encrypted with the JWT token\nexport class TokenData {\n\n\t// Account ID \n\tpublic accountId: string;\n\n\t// Authenticated subject ID (can be user, or service account) \n\tpublic subjectId: string;\n\n\t// Subject type enum \n\tpublic subjectType: number;\n\n\t// Role of user in the account (Role should be specified as Flags (Bitmask) \n\tpublic subjectRole: number;\n\n\t// User status enum \n\tpublic status: number;\n\n\t// Token expiration [Epoch milliseconds Timestamp] \n\tpublic expiresIn: number;\n\n constructor(accountId?: string, subjectId?: string, subjectType?: number, subjectRole?: number, status?: number, expiresIn?: number) { \n if (accountId !== undefined) { this.accountId = accountId; }\n if (subjectId !== undefined) { this.subjectId = subjectId; }\n if (subjectType !== undefined) { this.subjectType = subjectType; }\n if (subjectRole !== undefined) { this.subjectRole = subjectRole; }\n if (status !== undefined) { this.status = status; }\n if (expiresIn !== undefined) { this.expiresIn = expiresIn; }\n }\n\n}\n\n\n","\n\n// ShieldexConfig is a list of weights used for shieldex calculation based on the following formula:\n// shieldex = 100 * max(1 - (weighted_risk / total_devices), 0) where weighted_risk is calculated as:\n// weighted_risk =\n// (lowRiskWeight * low_risk_devices) +\n// (mediumRiskWeight * medium_risk_devices) +\n// (highRiskWeight * high_risk_devices) +\n// (criticalRiskWeight * critical_risk_devices)\nexport class ShieldexConfig {\n\n\t// Deprecated: ALPHA_WEIGHT_FACTOR for shieldex calculation \n\tpublic alphaWeightFactor: number;\n\n\t// Deprecated: PERCENT_FACTOR for shieldex calculation \n\tpublic percentFactor: number;\n\n\t// Low risk devices weight \n\tpublic lowRiskWeight: number;\n\n\t// Medium risk devices weight \n\tpublic mediumRiskWeight: number;\n\n\t// High risk devices weight \n\tpublic highRiskWeight: number;\n\n\t// Critical risk devices weight \n\tpublic criticalRiskWeight: number;\n\n constructor(alphaWeightFactor?: number, percentFactor?: number, lowRiskWeight?: number, mediumRiskWeight?: number, highRiskWeight?: number, criticalRiskWeight?: number) { \n if (alphaWeightFactor !== undefined) { this.alphaWeightFactor = alphaWeightFactor; }\n if (percentFactor !== undefined) { this.percentFactor = percentFactor; }\n if (lowRiskWeight !== undefined) { this.lowRiskWeight = lowRiskWeight; }\n if (mediumRiskWeight !== undefined) { this.mediumRiskWeight = mediumRiskWeight; }\n if (highRiskWeight !== undefined) { this.highRiskWeight = highRiskWeight; }\n if (criticalRiskWeight !== undefined) { this.criticalRiskWeight = criticalRiskWeight; }\n }\n\n}\n\n\n","\nimport { Tuple } from './Tuple';\n\n// Distribution model represents a grouped counts of elements of generic type int (usually enum)\nexport class Distribution<V> {\n\n\t// Distribution name \n\tpublic name: string;\n\n\t// Total count (of all elements) \n\tpublic total: number;\n\n\t// Map of int element to its count \n\tpublic values: Tuple<V, number>[];\n\n constructor(name?: string, total?: number, values?: Tuple<V, number>[]) { \n if (name !== undefined) { this.name = name; }\n if (total !== undefined) { this.total = total; }\n if (values !== undefined) { this.values = values; }\n }\n\n}\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Shieldex is a security score per account level calculated periodically\nexport class Shieldex extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// Total number of events per account per stream \n\tpublic eventCount: number;\n\n\t// Shield index score (1-100) \n\tpublic score: number;\n\n}\n\nexport function GetShieldexColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"eventCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"score\", \"number\", \"decimal\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// TimeFrame represents a time interval with a start and end timestamp.\nexport class TimeFrame {\n\n\t// From is the start timestamp \n\tpublic from: number;\n\n\t// To is the end timestamp \n\tpublic to: number;\n\n constructor(from?: number, to?: number) { \n if (from !== undefined) { this.from = from; }\n if (to !== undefined) { this.to = to; }\n }\n\n}\n\n\n","\nimport { DeviceNode } from './DeviceNode';\nimport { MapBounds } from './MapBounds';\n\n// DevicesMap is a data structure representing a list of device nodes and map bounds\nexport class DevicesMap {\n\n\t// List of device nodes \n\tpublic deviceNodes: DeviceNode[];\n\n\t// map bounds \n\tpublic mapBounds: MapBounds;\n\n constructor(deviceNodes?: DeviceNode[], mapBounds?: MapBounds) { \n if (deviceNodes !== undefined) { this.deviceNodes = deviceNodes; }\n if (mapBounds !== undefined) { this.mapBounds = mapBounds; }\n }\n\n}\n\n\n","\nimport { Tuple } from './Tuple';\nimport { PermissionCode } from './PermissionCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// ApiKey entity is a structure representing the source data fields encapsulated in the API key\nexport class ApiKey extends BaseEntity {\n\n\t// API Key name \n\tpublic name: string;\n\n\t// Default session token TTL (in minutes), 0 means no TTL \n\tpublic ttl: number;\n\n\t// Access Control List - list of accessible resources with permissions flags (1:Read, 2:Create, 4:Update, 8:Delete, 16:Action) \n\tpublic acl: Tuple<string, PermissionCode>[];\n\n\t// Key version (for key rotation) \n\tpublic version: number;\n\n\t// Flag to indicate if this a system key or user defined key \n\tpublic systemKey: boolean;\n\n\t// Flag to indicate if the key is enabled \n\tpublic enabled: boolean;\n\n\t// The API Key (this value is auto generated and not stored in the DB) \n\tpublic key: string;\n\n}\n\nexport function GetApiKeyColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"ttl\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"acl\", \"Tuple<string, PermissionCode>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"version\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"systemKey\", \"boolean\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"enabled\", \"boolean\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"key\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { TrafficDirectionCode } from './TrafficDirectionCode';\nimport { Indicator } from './Indicator';\n\n// EventOccurrence is a single instance of event generated for the same deviceId based on the same rule on the same month\nexport class EventOccurrence {\n\n\t// Event occurrence time in epoch time milliseconds \n\tpublic timestamp: number;\n\n\t// Referenced source file \n\tpublic source: string;\n\n\t// The allocated IP for the device at the time of the event occurrence \n\tpublic sourceIp: string;\n\n\t// List of event occurrence indicators \n\tpublic indicators: Indicator[];\n\n\t// Denotes network traffic direction: UNDEFINED | INBOUND | OUTBOUND \n\tpublic trafficDirection: TrafficDirectionCode;\n\n constructor(timestamp?: number, source?: string, sourceIp?: string, indicators?: Indicator[], trafficDirection?: TrafficDirectionCode) { \n if (timestamp !== undefined) { this.timestamp = timestamp; }\n if (source !== undefined) { this.source = source; }\n if (sourceIp !== undefined) { this.sourceIp = sourceIp; }\n if (indicators !== undefined) { this.indicators = indicators; }\n if (trafficDirection !== undefined) { this.trafficDirection = trafficDirection; }\n }\n\n}\n\n\n","\nimport { DirectionContextCode } from './DirectionContextCode';\nimport { BaseEntity } from './BaseEntity';\nimport { InsightSourceCode } from './InsightSourceCode';\nimport { InsightTypeCode } from './InsightTypeCode';\nimport { ColumnDef } from './ColumnDef';\n\n// InsightQuery (insight query) entity\n// The InsightQuery entity is a definition of insight query to execute periodically in order to generate \"insights\" for the users.\nexport class InsightQuery extends BaseEntity {\n\n\t// Insight source: DEFAULT | USAGE | EVENT | ALERT \n\tpublic source: InsightSourceCode;\n\n\t// Insight type: UNDEFINED | EVENTS | STATISTICS \n\tpublic type: InsightTypeCode;\n\n\t// Templated string to show the description in the UI \n\tpublic description: string;\n\n\t// Insight query definition (KQL) \n\tpublic query: string;\n\n\t// InsightDirectionContext: UNDEFINED | EVENT_LIST | DEVICE_LIST | EVENT_DETAILS | DEVICE_DETAILS \n\tpublic insightDirectionContext: DirectionContextCode;\n\n\t// Insight UI query definition . query to use from API as response to UI on clickable insight \n\tpublic uiquery: string;\n\n\t// Is default query to use for new accounts \n\tpublic isDefault: boolean;\n\n}\n\nexport function GetInsightQueryColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"source\", \"InsightSourceCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"InsightTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"query\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"insightDirectionContext\", \"DirectionContextCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"uiquery\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"isDefault\", \"boolean\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { ZScore } from './ZScore';\n\n// UsageTransform is a list of z-score parameters for usage fields\nexport class UsageTransform {\n\n\t// ZScore parameters for incoming packets (to the device) \n\tpublic packetsIn: ZScore;\n\n\t// ZScore parameters for outgoing packets (from the device) \n\tpublic packetsOut: ZScore;\n\n\t// ZScore parameters for total number of incoming bytes (to the device) \n\tpublic bytesIn: ZScore;\n\n\t// ZScore parameters for total number of outgoing bytes (from the device) \n\tpublic bytesOut: ZScore;\n\n\t// ZScore parameters for number of destination endpoints \n\tpublic endpointsCount: ZScore;\n\n\t// ZScore parameters for number of destination ports \n\tpublic portsCount: ZScore;\n\n constructor(packetsIn?: ZScore, packetsOut?: ZScore, bytesIn?: ZScore, bytesOut?: ZScore, endpointsCount?: ZScore, portsCount?: ZScore) { \n if (packetsIn !== undefined) { this.packetsIn = packetsIn; }\n if (packetsOut !== undefined) { this.packetsOut = packetsOut; }\n if (bytesIn !== undefined) { this.bytesIn = bytesIn; }\n if (bytesOut !== undefined) { this.bytesOut = bytesOut; }\n if (endpointsCount !== undefined) { this.endpointsCount = endpointsCount; }\n if (portsCount !== undefined) { this.portsCount = portsCount; }\n }\n\n}\n\n\n","\nimport { AccountTypeCode } from './AccountTypeCode';\nimport { AccountStatusCode } from './AccountStatusCode';\nimport { Tuple } from './Tuple';\nimport { AccountSettings } from './AccountSettings';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Account is a tenant in the system (customer)\nexport class Account extends BaseEntity {\n\n\t// Account name \n\tpublic name: string;\n\n\t// The account identity in the external system (e.g. Billing, CRM etc) \n\tpublic externalId: string;\n\n\t// The tenant APN name in the connectivity provider's mobile code \n\tpublic providerAPN: string;\n\n\t// Account description \n\tpublic description: string;\n\n\t// Account Type: UNDEFINED | DEMO | TRIAL | PARTNER | CUSTOMER \n\tpublic type: AccountTypeCode;\n\n\t// Account status: UNDEFINED | ACTIVE | SUSPENDED \n\tpublic status: AccountStatusCode;\n\n\t// List of associated FeaturesGroup ids (for feature toggle) \n\tpublic groups: string[];\n\n\t// When the account will be expired [Epoch milliseconds Timestamp] (0 means no expiration time \n\tpublic expiredOn: number;\n\n\t// Additional user defined tags \n\tpublic tags: string[];\n\n\t// List of custom attributes (key-value pairs) for user defined data \n\tpublic labels: Tuple<string, string>[];\n\n\t// Account specific attributes \n\tpublic settings: AccountSettings;\n\n}\n\nexport function GetAccountColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"externalId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"providerAPN\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"AccountTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"status\", \"AccountStatusCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"groups\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"expiredOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"tags\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"labels\", \"Tuple<string, string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"settings\", \"AccountSettings\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { Account } from './Account';\nimport { DeviceReport } from './DeviceReport';\nimport { Distribution } from './Distribution';\nimport { ColumnDef } from './ColumnDef';\n\n// AccountReportDTO includes additional data related to Account for display\nexport class AccountReportDTO extends Account {\n\n\t// last Shieldex (health score ) \n\tpublic healthScore: number;\n\n\t// total number of members for account \n\tpublic membersCount: number;\n\n\t// latest device report for account \n\tpublic latestDeviceReport: DeviceReport;\n\n\t// device distribution per status for account \n\tpublic deviceDistributionByStatus: Distribution<number>;\n\n}\n\nexport function GetAccountReportDTOColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"healthScore\", \"number\", \"decimal\"));\n\tresult.push(new ColumnDef(\"\", \"membersCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"latestDeviceReport\", \"DeviceReport\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceDistributionByStatus\", \"Distribution<number>\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { ConfigParam } from './ConfigParam';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// ConfigParams stores a list of configuration parameters\nexport class ConfigParams extends BaseEntity {\n\n\t// Configuration parameters \n\tpublic params: ConfigParam[];\n\n}\n\nexport function GetConfigParamsColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"params\", \"ConfigParam\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { DeviceCreationCode } from './DeviceCreationCode';\nimport { DeviceIdentityCode } from './DeviceIdentityCode';\nimport { DeviceTypeCode } from './DeviceTypeCode';\n\n// DataIngestion is the ingestion pipeline configuration\nexport class DataIngestion {\n\n\t// Input files location \n\tpublic inputURI: string;\n\n\t// File format: pcap / pcapng (default) \n\tpublic format: string;\n\n\t// Where to archive processed files \n\tpublic archiveURI: string;\n\n\t// Input files extensions (filter by extensions) - ignore if empty \n\tpublic inputFilesExt: string[];\n\n\t// List of IoT devices subnets \n\tpublic subNets: string[];\n\n\t// List of subnets or IPs to exclude \n\tpublic exclude: string[];\n\n\t// List of allowed IPs/Subnets (ACL) \n\tpublic allowedAcl: string[];\n\n\t// Usage time window for aggregation (in seconds) \n\tpublic usageTimeWindowSec: number;\n\n\t// Session time window for aggregation (in seconds) \n\tpublic sessionTimeWindowSec: number;\n\n\t// Cron schedule template in 6 segment format (see: https://en.wikipedia.org/wiki/Cron) - leave empty for immediate processing \n\tpublic schedule: string;\n\n\t// Default device type code \n\tpublic defaultDeviceType: DeviceTypeCode;\n\n\t// How to create devices during the PCAP parsing (NONE | IP | SID | EID) \n\tpublic deviceCreationPolicy: DeviceCreationCode;\n\n\t// How to identify devices during the PCAP parsing (NONE | IP | SID | EID) \n\tpublic deviceIdentityPolicy: DeviceIdentityCode;\n\n\t// Flag to indicate if RADIUS protocol support ( to infer device identity ) is enabled \n\tpublic radiusSupport: boolean;\n\n constructor(inputURI?: string, format?: string, archiveURI?: string, inputFilesExt?: string[], subNets?: string[], exclude?: string[], allowedAcl?: string[], usageTimeWindowSec?: number, sessionTimeWindowSec?: number, schedule?: string, defaultDeviceType?: DeviceTypeCode, deviceCreationPolicy?: DeviceCreationCode, deviceIdentityPolicy?: DeviceIdentityCode, radiusSupport?: boolean) { \n if (inputURI !== undefined) { this.inputURI = inputURI; }\n if (format !== undefined) { this.format = format; }\n if (archiveURI !== undefined) { this.archiveURI = archiveURI; }\n if (inputFilesExt !== undefined) { this.inputFilesExt = inputFilesExt; }\n if (subNets !== undefined) { this.subNets = subNets; }\n if (exclude !== undefined) { this.exclude = exclude; }\n if (allowedAcl !== undefined) { this.allowedAcl = allowedAcl; }\n if (usageTimeWindowSec !== undefined) { this.usageTimeWindowSec = usageTimeWindowSec; }\n if (sessionTimeWindowSec !== undefined) { this.sessionTimeWindowSec = sessionTimeWindowSec; }\n if (schedule !== undefined) { this.schedule = schedule; }\n if (defaultDeviceType !== undefined) { this.defaultDeviceType = defaultDeviceType; }\n if (deviceCreationPolicy !== undefined) { this.deviceCreationPolicy = deviceCreationPolicy; }\n if (deviceIdentityPolicy !== undefined) { this.deviceIdentityPolicy = deviceIdentityPolicy; }\n if (radiusSupport !== undefined) { this.radiusSupport = radiusSupport; }\n }\n\n}\n\n\n","\nimport { UserTypeCode } from './UserTypeCode';\nimport { UserStatusCode } from './UserStatusCode';\nimport { Tuple } from './Tuple';\nimport { BaseEntityEx } from './BaseEntityEx';\nimport { ColumnDef } from './ColumnDef';\n\n// User represents a human / system operator that has access to the system, and can perform operations\n// User authentication is done by an external identity provider\nexport class User extends BaseEntityEx {\n\n\t// User name \n\tpublic name: string;\n\n\t// The user identity in the external system (e.g. Billing, CRM etc) \n\tpublic externalId: string;\n\n\t// User email \n\tpublic email: string;\n\n\t// User mobile phone number (for notification and validation) \n\tpublic mobile: string;\n\n\t// User type: UNDEFINED | SYSADMIN | SUPPORT | USER \n\tpublic type: UserTypeCode;\n\n\t// User status: UNDEFINED | PENDING | ACTIVE | BLOCKED | SUSPENDED \n\tpublic status: UserStatusCode;\n\n\t// Default account ID \n\tpublic defaultAccount: string;\n\n\t// When the user signed in for the last time [Epoch milliseconds Timestamp] \n\tpublic lastSignIn: number;\n\n\t// List of custom attributes (key-value pairs) for user defined data \n\tpublic labels: Tuple<string, string>[];\n\n\t// List of groups that the user belongs to \n\tpublic groups: string[];\n\n\t// Set to true for user need to be monitored in the audit log \n\tpublic isTracked: boolean;\n\n}\n\nexport function GetUserColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"externalId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"email\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"mobile\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"UserTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"status\", \"UserStatusCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"defaultAccount\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"lastSignIn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"labels\", \"Tuple<string, string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"groups\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"isTracked\", \"boolean\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// Tuple represents a generic key-value pair.\n// It is useful for storing associated data where a full map is not needed or order matters.\n// Type Parameters:\n// - K: The type of the key.\n// - V: The type of the value.\nexport class Tuple<K,V> {\n\n\t// Key is the first element of the tuple \n\tpublic key: K;\n\n\t// Value is the second element of the tuple \n\tpublic value: V;\n\n constructor(key?: K, value?: V) { \n if (key !== undefined) { this.key = key; }\n if (value !== undefined) { this.value = value; }\n }\n\n}\n\n\n","\n\n// RegulatoryViolation captures a specific regulation clause related to the Insight.\nexport class RegulatoryViolation {\n\n\t// Name/title of the regulation document (e.g., \"GDPR\", \"HIPAA\", \"NIST 800-53\") \n\tpublic title: string;\n\n\t// Clause/section identifier \n\tpublic clause: string;\n\n\t// Summary of the clause’s relevance to this Insight \n\tpublic description: string;\n\n\t// Canonical URL to the source document/section \n\tpublic sourceLink: string;\n\n constructor(title?: string, clause?: string, description?: string, sourceLink?: string) { \n if (title !== undefined) { this.title = title; }\n if (clause !== undefined) { this.clause = clause; }\n if (description !== undefined) { this.description = description; }\n if (sourceLink !== undefined) { this.sourceLink = sourceLink; }\n }\n\n}\n\n\n","\nimport { ZScore } from './ZScore';\n\n// SessionTransform is a list of z-score parameters for session fields\nexport class SessionTransform {\n\n\t// ZScore parameters for incoming packets (to the device) \n\tpublic packetsIn: ZScore;\n\n\t// ZScore parameters for outgoing packets (from the device) \n\tpublic packetsOut: ZScore;\n\n\t// ZScore parameters for total number of incoming bytes (to the device) \n\tpublic bytesIn: ZScore;\n\n\t// ZScore parameters for total number of outgoing bytes (from the device) \n\tpublic bytesOut: ZScore;\n\n constructor(packetsIn?: ZScore, packetsOut?: ZScore, bytesIn?: ZScore, bytesOut?: ZScore) { \n if (packetsIn !== undefined) { this.packetsIn = packetsIn; }\n if (packetsOut !== undefined) { this.packetsOut = packetsOut; }\n if (bytesIn !== undefined) { this.bytesIn = bytesIn; }\n if (bytesOut !== undefined) { this.bytesOut = bytesOut; }\n }\n\n}\n\n\n","\nimport { SeverityIntervalTuple } from './SeverityIntervalTuple';\n\n// EventSeverityConfig is a list of event severity configuration\nexport class EventSeverityConfig {\n\n\t// List of severity configurations key-value. Value of type Interval \n\tpublic severityConfigs: SeverityIntervalTuple[];\n\n constructor(severityConfigs?: SeverityIntervalTuple[]) { \n if (severityConfigs !== undefined) { this.severityConfigs = severityConfigs; }\n }\n\n}\n\n\n","\n\n// LoginParams model used for authorize user by email\nexport class LoginParams {\n\n\t// User email \n\tpublic email: string;\n\n constructor(email?: string) { \n if (email !== undefined) { this.email = email; }\n }\n\n}\n\n\n","\nimport { HomePageViewCode } from './HomePageViewCode';\n\n// AccountSettings is a set of account attributes\nexport class AccountSettings {\n\n\t// Default home page view \n\tpublic defaultHomePageView: HomePageViewCode;\n\n\t// Account logo URL for dark backgrounds \n\tpublic logo: string;\n\n\t// Account logo URL for light backgrounds \n\tpublic logoDark: string;\n\n constructor(defaultHomePageView?: HomePageViewCode, logo?: string, logoDark?: string) { \n if (defaultHomePageView !== undefined) { this.defaultHomePageView = defaultHomePageView; }\n if (logo !== undefined) { this.logo = logo; }\n if (logoDark !== undefined) { this.logoDark = logoDark; }\n }\n\n}\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// ConfigParam stores a key-value pair as a system configuration parameter\nexport class ConfigParam extends BaseEntity {\n\n\t// Configuration parameter type \n\tpublic inputType: string;\n\n\t// Configuration group \n\tpublic group: string;\n\n\t// Configuration parameter value \n\tpublic value: string;\n\n}\n\nexport function GetConfigParamColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"inputType\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"group\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"value\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { FeatureCode } from './FeatureCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// FeaturesGroup group represents a group of capabilities in the system\n// It is used for the feature toggle mechanism\nexport class FeaturesGroup extends BaseEntity {\n\n\t// Features group display name \n\tpublic name: string;\n\n\t// List of features \n\tpublic features: FeatureCode[];\n\n}\n\nexport function GetFeaturesGroupColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"features\", \"FeatureCode\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// ServiceStatus represents applicative status of a pulse service with a set of metrics\nexport class ServiceStatus extends BaseEntity {\n\n\t// Service name \n\tpublic serviceName: string;\n\n\t// Host (machine) name \n\tpublic hostName: string;\n\n\t// The starting time of the service \n\tpublic startTime: number;\n\n\t// Account id (if applicable) \n\tpublic accountId: string;\n\n\t// List of application metrics \n\tpublic metrics: Map<string,object>;\n\n}\n\nexport function GetServiceStatusColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"serviceName\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"hostName\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"startTime\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"metrics\", \"Map<string,object>\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// TimeDataPoint represents a generic data point associated with a timestamp.\nexport class TimeDataPoint<V> {\n\n\t// Timestamp of the data point \n\tpublic timestamp: number;\n\n\t// Value of the data point \n\tpublic value: V;\n\n constructor(timestamp?: number, value?: V) { \n if (timestamp !== undefined) { this.timestamp = timestamp; }\n if (value !== undefined) { this.value = value; }\n }\n\n}\n\n\n","\nimport { DeviceTypeCode } from './DeviceTypeCode';\nimport { Location } from './Location';\n\n// DeviceNode model represents partial device's data for map\nexport class DeviceNode {\n\n\t// Device id \n\tpublic deviceId: string;\n\n\t// Device name \n\tpublic deviceName: string;\n\n\t// Device current security score \n\tpublic score: number;\n\n\t// Device type: UNDEFINED | CONTROLLER | METER | SENSOR ... \n\tpublic type: DeviceTypeCode;\n\n\t// Geo Location (WGS-84) \n\tpublic location: Location;\n\n constructor(deviceId?: string, deviceName?: string, score?: number, type?: DeviceTypeCode, location?: Location) { \n if (deviceId !== undefined) { this.deviceId = deviceId; }\n if (deviceName !== undefined) { this.deviceName = deviceName; }\n if (score !== undefined) { this.score = score; }\n if (type !== undefined) { this.type = type; }\n if (location !== undefined) { this.location = location; }\n }\n\n}\n\n\n","\nimport { MemberRoleCode } from './MemberRoleCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Member represents a user in the account and the role he has in this account\n// User may have several memberships for several accounts, each with a different role\nexport class Member extends BaseEntity {\n\n\t// User id \n\tpublic userId: string;\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// User role in the account: UNDEFINED | ADMIN | OPERATOR | VIEWER \n\tpublic role: MemberRoleCode;\n\n}\n\nexport function GetMemberColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"userId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"role\", \"MemberRoleCode\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { AccountRole } from './AccountRole';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Group represents a set of memberships to various accounts.\nexport class Group extends BaseEntity {\n\n\t// Group name \n\tpublic name: string;\n\n\t// The group identity in the external system (e.g. Billing, CRM etc) \n\tpublic externalId: string;\n\n\t// Group email \n\tpublic email: string;\n\n\t// List of group roles in accounts \n\tpublic accountRoles: AccountRole[];\n\n}\n\nexport function GetGroupColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"externalId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"email\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"accountRoles\", \"AccountRole\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { SessionTransform } from './SessionTransform';\nimport { Thresholds } from './Thresholds';\nimport { UsageTransform } from './UsageTransform';\nimport { ShieldexConfig } from './ShieldexConfig';\nimport { EventSeverityConfig } from './EventSeverityConfig';\nimport { DeviceActionCode } from './DeviceActionCode';\nimport { DeviceConfig } from './DeviceConfig';\nimport { IdsConfig } from './IdsConfig';\nimport { DataIngestion } from './DataIngestion';\n\n// StreamConfig is a stream configuration description\nexport class StreamConfig {\n\n\t// Stream data ingestion pipeline \n\tpublic ingest: DataIngestion;\n\n\t// Session data transform parameters (normalize values) \n\tpublic sessionTransform: SessionTransform;\n\n\t// Usage data transform parameters (normalize values) \n\tpublic usageTransform: UsageTransform;\n\n\t// Set of stream configuration thresholds \n\tpublic thresholds: Thresholds;\n\n\t// Set of stream shieldex configuration \n\tpublic shieldexConfig: ShieldexConfig;\n\n\t// Set of event severity configuration \n\tpublic eventSeverityConfig: EventSeverityConfig;\n\n\t// Set of available preventive actions to apply \n\tpublic preventiveActions: DeviceActionCode[];\n\n\t// Set of device related configurations \n\tpublic deviceConfig: DeviceConfig;\n\n\t// \n\tpublic parserRules: string[];\n\n\t// Set of IDS rule configurations \n\tpublic idsConfig: IdsConfig;\n\n constructor(ingest?: DataIngestion, sessionTransform?: SessionTransform, usageTransform?: UsageTransform, thresholds?: Thresholds, shieldexConfig?: ShieldexConfig, eventSeverityConfig?: EventSeverityConfig, preventiveActions?: DeviceActionCode[], deviceConfig?: DeviceConfig, parserRules?: string[], idsConfig?: IdsConfig) { \n if (ingest !== undefined) { this.ingest = ingest; }\n if (sessionTransform !== undefined) { this.sessionTransform = sessionTransform; }\n if (usageTransform !== undefined) { this.usageTransform = usageTransform; }\n if (thresholds !== undefined) { this.thresholds = thresholds; }\n if (shieldexConfig !== undefined) { this.shieldexConfig = shieldexConfig; }\n if (eventSeverityConfig !== undefined) { this.eventSeverityConfig = eventSeverityConfig; }\n if (preventiveActions !== undefined) { this.preventiveActions = preventiveActions; }\n if (deviceConfig !== undefined) { this.deviceConfig = deviceConfig; }\n if (parserRules !== undefined) { this.parserRules = parserRules; }\n if (idsConfig !== undefined) { this.idsConfig = idsConfig; }\n }\n\n}\n\n\n","\nimport { MemberRoleCode } from './MemberRoleCode';\n\n// AccountRole model represents specific role in an account\nexport class AccountRole {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Account Name (for display only) \n\tpublic accountName: string;\n\n\t// User role in the account: UNDEFINED | ADMIN | OPERATOR | VIEWER \n\tpublic role: MemberRoleCode;\n\n constructor(accountId?: string, accountName?: string, role?: MemberRoleCode) { \n if (accountId !== undefined) { this.accountId = accountId; }\n if (accountName !== undefined) { this.accountName = accountName; }\n if (role !== undefined) { this.role = role; }\n }\n\n}\n\n\n","\n\n// MitreAttackCategory references a MITRE ATT&CK technique or category.\nexport class MitreAttackCategory {\n\n\t// Technique or sub-technique ID (e.g., \"T1110.001\") \n\tpublic id: string;\n\n\t// Technique name (e.g., \"Password Guessing\") \n\tpublic name: string;\n\n\t// URL to MITRE ATT&CK technique page \n\tpublic sourceLink: string;\n\n constructor(iD?: string, name?: string, sourceLink?: string) { \n if (iD !== undefined) { this.id = iD; }\n if (name !== undefined) { this.name = name; }\n if (sourceLink !== undefined) { this.sourceLink = sourceLink; }\n }\n\n}\n\n\n","\nimport { InsightStatusCode } from './InsightStatusCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// InsightSpec (insight specifications) entity\n// The InsightSpec entity is a link between account and stream Id to insight query.\nexport class InsightSpec extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id (leave empty to run insights on all streams) \n\tpublic streamId: string;\n\n\t// Insight status: UNDEFINED | INACTIVE | PENDING | ACTIVE \n\tpublic status: InsightStatusCode;\n\n\t// Insight query Id \n\tpublic queryId: string;\n\n\t// Is Insight enabled (if disabled, it will not be calculated) \n\tpublic enabled: boolean;\n\n}\n\nexport function GetInsightSpecColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"status\", \"InsightStatusCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"queryId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"enabled\", \"boolean\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { Distribution } from './Distribution';\nimport { NetworkTopologyReportParams } from './NetworkTopologyReportParams';\nimport { BaseEntity } from './BaseEntity';\nimport { NetworkTopologyReportKPIs } from './NetworkTopologyReportKPIs';\nimport { ColumnDef } from './ColumnDef';\n\n// NetworkTopologyReport represents topology structure for the report\nexport class NetworkTopologyReport extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// Global KPIs \n\tpublic KPIs: NetworkTopologyReportKPIs;\n\n\t// endpoints Distribution by app_protocol \n\tpublic byAppProtocol: Distribution<string>;\n\n\t// endpoints Distribution by country \n\tpublic byCountry: Distribution<string>;\n\n\t// endpoints Distribution by owner's name \n\tpublic byName: Distribution<string>;\n\n\t// endpoints Distribution by risk (undefined/safe/malicious 0/1/2) \n\tpublic byRisk: Distribution<number>;\n\n\t// the filter used to generate this report \n\tpublic filter: NetworkTopologyReportParams;\n\n}\n\nexport function GetNetworkTopologyReportColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"KPIs\", \"NetworkTopologyReportKPIs\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"byAppProtocol\", \"Distribution<string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"byCountry\", \"Distribution<string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"byName\", \"Distribution<string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"byRisk\", \"Distribution<number>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"filter\", \"NetworkTopologyReportParams\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// Thresholds is a list of stream configuration thresholds\nexport class Thresholds {\n\n\t// Total time (in minutes) from the last device activity to change the device status to INACTIVE \n\tpublic inactiveDeviceWindowMin: number;\n\n constructor(inactiveDeviceWindowMin?: number) { \n if (inactiveDeviceWindowMin !== undefined) { this.inactiveDeviceWindowMin = inactiveDeviceWindowMin; }\n }\n\n}\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// DNSRecord represents network statistics of DNS requests\nexport class DNSRecord extends BaseEntity {\n\n\t// Indication to the source location of the record \n\tpublic source: string;\n\n\t// Account ID \n\tpublic accountId: string;\n\n\t// Stream ID \n\tpublic streamId: string;\n\n\t// Device ID \n\tpublic deviceId: string;\n\n\t// Device SIM card ID (to support multiple SIMs) \n\tpublic simId: string;\n\n\t// Start window time in epoch time milliseconds \n\tpublic startTime: number;\n\n\t// End window time in epoch time milliseconds \n\tpublic endTime: number;\n\n\t// Fully Qualified Domain Name \n\tpublic fqdn: string;\n\n\t// List of A records \n\tpublic records: string[];\n\n}\n\nexport function GetDNSRecordColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"source\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"simId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"startTime\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"endTime\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"fqdn\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"records\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { Tuple } from './Tuple';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Radius entity is an IP allocation to device IMSI entry\nexport class Radius extends BaseEntity {\n\n\t// Indication to the source location of the record \n\tpublic source: string;\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// When the IP was assigned to the subscriber [Epoch milliseconds Timestamp] \n\tpublic assignedOn: number;\n\n\t// Device MAC address \n\tpublic mac: string;\n\n\t// Device IP address (IPv4 or IPv6) \n\tpublic ip: string;\n\n\t// Device mobile subscriber id (IMSI or SUPI) \n\tpublic sid: string;\n\n\t// Device mobile equipment id (IMEI or PEI) \n\tpublic eid: string;\n\n\t// Country name \n\tpublic country: string;\n\n\t// Mobile network operator name \n\tpublic operator: string;\n\n\t// List of attributes \n\tpublic attributes: Tuple<string, string>[];\n\n}\n\nexport function GetRadiusColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"source\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"assignedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"mac\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"ip\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"sid\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"eid\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"country\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"operator\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"attributes\", \"Tuple<string, string>\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { RuleBasedSeverityConditionConfig } from './RuleBasedSeverityConditionConfig';\nimport { FloatInterval } from './FloatInterval';\nimport { SeverityTypeCode } from './SeverityTypeCode';\nimport { Interval } from './Interval';\nimport { SeverityConditionConfig } from './SeverityConditionConfig';\nimport { RuleCountThresholdConfig } from './RuleCountThresholdConfig';\n\n// DeviceScoreConfig is a set of parameters for device score config\nexport class DeviceScoreConfig {\n\n\t// device score alpha factor \n\tpublic deviceScoreAlphaFactor: number;\n\n\t// occurrence threshold \n\tpublic occurrenceThreshold: number;\n\n\t// ruleCount threshold \n\tpublic ruleCountThreshold: number;\n\n\t// low weight alpha factor to use in device risk score calculation \n\tpublic lowWeightAlphaFactor: number;\n\n\t// medium weight alpha factor to use in device risk score calculation \n\tpublic mediumWeightAlphaFactor: number;\n\n\t// high weight alpha factor to use in device risk score calculation \n\tpublic highWeightAlphaFactor: number;\n\n\t// critical weight alpha factor to use in device risk score calculation \n\tpublic criticalWeightAlphaFactor: number;\n\n\t// high volume weight alpha factor to use in device risk score calculation \n\tpublic highVolumeWeightAlphaFactor: number;\n\n\t// abnormal out ports alpha factor to use in device risk score calculation \n\tpublic abnormalOutPortsAlphaFactor: number;\n\n\t// abnormal out endpoints alpha factor to use in device risk score calculation \n\tpublic abnormalOutEndpointsAlphaFactor: number;\n\n\t// suspicious Ip alpha factor to use in device risk score calculation \n\tpublic suspiciousIpAlphaFactor: number;\n\n\t// default range of the score for low severity \n\tpublic defaultSeverityRange: Interval;\n\n\t// default severity factor \n\tpublic defaultSeverityFactor: number;\n\n\t// 0 or more SeverityConditionConfig per severity \n\tpublic severityConditionConfigs: SeverityConditionConfig[];\n\n\t// 0 or more RuleCountThresholdConfig \n\tpublic ruleCountThresholdConfigs: RuleCountThresholdConfig[];\n\n\t// 0 or more RuleBasedSeverityConditionConfig \n\tpublic ruleBasedSeverityConditionConfigs: RuleBasedSeverityConditionConfig[];\n\n\t// true if severity based , false if rule based \n\tpublic isSeverityBased: boolean;\n\n\t// true if alert based , false if event based \n\tpublic isAlertBased: boolean;\n\n\t// Half-life H in minutes \n\tpublic decayHalfLifeMinutes: number;\n\n\t// Exponent beta for rarity weight \n\tpublic rarityBeta: number;\n\n\t// median|fixed \n\tpublic raritySmoothingKMode: string;\n\n\t// fixed K for smoothing \n\tpublic raritySmoothingKFixed: number;\n\n\t// (min,max) clip for rarity weights \n\tpublic rarityClip: FloatInterval;\n\n\t// byType|byTypeSeverity (reserved) \n\tpublic rarityMode: string;\n\n\t// Weight for Low events Severity weights \n\tpublic alphaLow: number;\n\n\t// Weight for Medium events \n\tpublic alphaMedium: number;\n\n\t// Weight for High events \n\tpublic alphaHigh: number;\n\n\t// Weight for Critical events \n\tpublic alphaCritical: number;\n\n\t// Threshold to stay within Med band Band thresholds (presence and overflow) \n\tpublic thMedEvents: number;\n\n\t// Threshold to stay within High band \n\tpublic thHighEvents: number;\n\n\t// Threshold to stay within Critical band \n\tpublic thCritEvents: number;\n\n\t// Threshold # of events to jump to Med band \n\tpublic thLowToMedEvents: number;\n\n\t// Threshold # of types to jump to Med band \n\tpublic thLowToMedTypes: number;\n\n\t// Threshold # of events to jump to High band \n\tpublic thMedToHighEvents: number;\n\n\t// Threshold # of types to jump to High band \n\tpublic thMedToHighTypes: number;\n\n\t// Threshold # of events to jump to Crit band \n\tpublic thHighToCritEvents: number;\n\n\t// Threshold # of types to jump to Crit band \n\tpublic thHighToCritTypes: number;\n\n\t// doesn't affect anything currently Calibration \n\tpublic calibrationMode: string;\n\n\t// objectives of calibration within bands (low,med,high,crit) \n\tpublic calibrationTargets: Map<SeverityTypeCode,number>;\n\n\t// calibration regularization (Not affecting anything currently) \n\tpublic calibrationRegularization: number;\n\n\t// maximum score per severity, Safety and caps \n\tpublic maxContributionPerTypeSeverity: number;\n\n\t// map of event types to rarity Learned parameters \n\tpublic rarityWeights: Map<number,number>;\n\n\t// calibration results per band \n\tpublic calibrationParams: Map<SeverityTypeCode,any>;\n\n\t// how many days to train on Admin \n\tpublic trainingDays: number;\n\n\t// how many days to use when calculating score. \n\tpublic scoringDays: number;\n\n constructor(deviceScoreAlphaFactor?: number, occurrenceThreshold?: number, ruleCountThreshold?: number, lowWeightAlphaFactor?: number, mediumWeightAlphaFactor?: number, highWeightAlphaFactor?: number, criticalWeightAlphaFactor?: number, highVolumeWeightAlphaFactor?: number, abnormalOutPortsAlphaFactor?: number, abnormalOutEndpointsAlphaFactor?: number, suspiciousIpAlphaFactor?: number, defaultSeverityRange?: Interval, defaultSeverityFactor?: number, severityConditionConfigs?: SeverityConditionConfig[], ruleCountThresholdConfigs?: RuleCountThresholdConfig[], ruleBasedSeverityConditionConfigs?: RuleBasedSeverityConditionConfig[], isSeverityBased?: boolean, isAlertBased?: boolean, decayHalfLifeMinutes?: number, rarityBeta?: number, raritySmoothingKMode?: string, raritySmoothingKFixed?: number, rarityClip?: FloatInterval, rarityMode?: string, alphaLow?: number, alphaMedium?: number, alphaHigh?: number, alphaCritical?: number, tHMedEvents?: number, tHHighEvents?: number, tHCritEvents?: number, tHLowToMedEvents?: number, tHLowToMedTypes?: number, tHMedToHighEvents?: number, tHMedToHighTypes?: number, tHHighToCritEvents?: number, tHHighToCritTypes?: number, calibrationMode?: string, calibrationTargets?: Map<SeverityTypeCode,number>, calibrationRegularization?: number, maxContributionPerTypeSeverity?: number, rarityWeights?: Map<number,number>, calibrationParams?: Map<SeverityTypeCode,any>, trainingDays?: number, scoringDays?: number) { \n if (deviceScoreAlphaFactor !== undefined) { this.deviceScoreAlphaFactor = deviceScoreAlphaFactor; }\n if (occurrenceThreshold !== undefined) { this.occurrenceThreshold = occurrenceThreshold; }\n if (ruleCountThreshold !== undefined) { this.ruleCountThreshold = ruleCountThreshold; }\n if (lowWeightAlphaFactor !== undefined) { this.lowWeightAlphaFactor = lowWeightAlphaFactor; }\n if (mediumWeightAlphaFactor !== undefined) { this.mediumWeightAlphaFactor = mediumWeightAlphaFactor; }\n if (highWeightAlphaFactor !== undefined) { this.highWeightAlphaFactor = highWeightAlphaFactor; }\n if (criticalWeightAlphaFactor !== undefined) { this.criticalWeightAlphaFactor = criticalWeightAlphaFactor; }\n if (highVolumeWeightAlphaFactor !== undefined) { this.highVolumeWeightAlphaFactor = highVolumeWeightAlphaFactor; }\n if (abnormalOutPortsAlphaFactor !== undefined) { this.abnormalOutPortsAlphaFactor = abnormalOutPortsAlphaFactor; }\n if (abnormalOutEndpointsAlphaFactor !== undefined) { this.abnormalOutEndpointsAlphaFactor = abnormalOutEndpointsAlphaFactor; }\n if (suspiciousIpAlphaFactor !== undefined) { this.suspiciousIpAlphaFactor = suspiciousIpAlphaFactor; }\n if (defaultSeverityRange !== undefined) { this.defaultSeverityRange = defaultSeverityRange; }\n if (defaultSeverityFactor !== undefined) { this.defaultSeverityFactor = defaultSeverityFactor; }\n if (severityConditionConfigs !== undefined) { this.severityConditionConfigs = severityConditionConfigs; }\n if (ruleCountThresholdConfigs !== undefined) { this.ruleCountThresholdConfigs = ruleCountThresholdConfigs; }\n if (ruleBasedSeverityConditionConfigs !== undefined) { this.ruleBasedSeverityConditionConfigs = ruleBasedSeverityConditionConfigs; }\n if (isSeverityBased !== undefined) { this.isSeverityBased = isSeverityBased; }\n if (isAlertBased !== undefined) { this.isAlertBased = isAlertBased; }\n if (decayHalfLifeMinutes !== undefined) { this.decayHalfLifeMinutes = decayHalfLifeMinutes; }\n if (rarityBeta !== undefined) { this.rarityBeta = rarityBeta; }\n if (raritySmoothingKMode !== undefined) { this.raritySmoothingKMode = raritySmoothingKMode; }\n if (raritySmoothingKFixed !== undefined) { this.raritySmoothingKFixed = raritySmoothingKFixed; }\n if (rarityClip !== undefined) { this.rarityClip = rarityClip; }\n if (rarityMode !== undefined) { this.rarityMode = rarityMode; }\n if (alphaLow !== undefined) { this.alphaLow = alphaLow; }\n if (alphaMedium !== undefined) { this.alphaMedium = alphaMedium; }\n if (alphaHigh !== undefined) { this.alphaHigh = alphaHigh; }\n if (alphaCritical !== undefined) { this.alphaCritical = alphaCritical; }\n if (tHMedEvents !== undefined) { this.thMedEvents = tHMedEvents; }\n if (tHHighEvents !== undefined) { this.thHighEvents = tHHighEvents; }\n if (tHCritEvents !== undefined) { this.thCritEvents = tHCritEvents; }\n if (tHLowToMedEvents !== undefined) { this.thLowToMedEvents = tHLowToMedEvents; }\n if (tHLowToMedTypes !== undefined) { this.thLowToMedTypes = tHLowToMedTypes; }\n if (tHMedToHighEvents !== undefined) { this.thMedToHighEvents = tHMedToHighEvents; }\n if (tHMedToHighTypes !== undefined) { this.thMedToHighTypes = tHMedToHighTypes; }\n if (tHHighToCritEvents !== undefined) { this.thHighToCritEvents = tHHighToCritEvents; }\n if (tHHighToCritTypes !== undefined) { this.thHighToCritTypes = tHHighToCritTypes; }\n if (calibrationMode !== undefined) { this.calibrationMode = calibrationMode; }\n if (calibrationTargets !== undefined) { this.calibrationTargets = calibrationTargets; }\n if (calibrationRegularization !== undefined) { this.calibrationRegularization = calibrationRegularization; }\n if (maxContributionPerTypeSeverity !== undefined) { this.maxContributionPerTypeSeverity = maxContributionPerTypeSeverity; }\n if (rarityWeights !== undefined) { this.rarityWeights = rarityWeights; }\n if (calibrationParams !== undefined) { this.calibrationParams = calibrationParams; }\n if (trainingDays !== undefined) { this.trainingDays = trainingDays; }\n if (scoringDays !== undefined) { this.scoringDays = scoringDays; }\n }\n\n}\n\n\n","\nimport { SeverityTypeCode } from './SeverityTypeCode';\nimport { Interval } from './Interval';\n\n// SeverityConditionConfig is a set of severity configuration configs\nexport class SeverityConditionConfig {\n\n\t// Condition severity such as High, Medium, Low... \n\tpublic conditionSeverity: SeverityTypeCode;\n\n\t// List of severities type codes \n\tpublic sevs: SeverityTypeCode[];\n\n\t// Count of occurrences \n\tpublic countTH: number;\n\n\t// Severity factor \n\tpublic severityFactor: number;\n\n\t// range of the score per severity \n\tpublic severityRange: Interval;\n\n constructor(conditionSeverity?: SeverityTypeCode, sevs?: SeverityTypeCode[], countTH?: number, severityFactor?: number, severityRange?: Interval) { \n if (conditionSeverity !== undefined) { this.conditionSeverity = conditionSeverity; }\n if (sevs !== undefined) { this.sevs = sevs; }\n if (countTH !== undefined) { this.countTH = countTH; }\n if (severityFactor !== undefined) { this.severityFactor = severityFactor; }\n if (severityRange !== undefined) { this.severityRange = severityRange; }\n }\n\n}\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// UsageRecord represents network statistics\nexport class UsageRecord extends BaseEntity {\n\n\t// Indication to the source location of the record, can be a comma-separated list since one usage record can be a result of multiple pcap files \n\tpublic source: string;\n\n\t// Account ID \n\tpublic accountId: string;\n\n\t// Stream ID \n\tpublic streamId: string;\n\n\t// Device ID \n\tpublic deviceId: string;\n\n\t// Device SIM card ID (to support multiple SIMs) \n\tpublic simId: string;\n\n\t// Device IP \n\tpublic deviceIp: string;\n\n\t// Start window time in epoch time milliseconds \n\tpublic startTime: number;\n\n\t// End window time in epoch time milliseconds \n\tpublic endTime: number;\n\n\t// List of source ports \n\tpublic srcPortsList: number[];\n\n\t// Number of source ports \n\tpublic srcPortsCount: number;\n\n\t// List of destination ports \n\tpublic dstPortsList: number[];\n\n\t// Number of destination ports \n\tpublic dstPortsCount: number;\n\n\t// List of outbound endpoints \n\tpublic endpointsList: string[];\n\n\t// Number of outbound endpoints (IPs) \n\tpublic endpointsCount: number;\n\n\t// List of outbound endpoints that sent data to the device \n\tpublic srcEndpoints: string[];\n\n\t// Number of outbound endpoints that sent data to the device \n\tpublic srcEndpointsCount: number;\n\n\t// List of outbound endpoints that received data from the device \n\tpublic dstEndpoints: string[];\n\n\t// Number of outbound endpoints that received data from the device \n\tpublic dstEndpointsCount: number;\n\n\t// Number of incoming packets (to the device) \n\tpublic packetsIn: number;\n\n\t// Number of outgoing packets (from the device) \n\tpublic packetsOut: number;\n\n\t// Total number of incoming bytes (to the device) \n\tpublic bytesIn: number;\n\n\t// Total number of outgoing bytes (from the device) \n\tpublic bytesOut: number;\n\n\t// Number of outgoing Ack flags (applicable only for TCP based protocols) \n\tpublic srcAckFlags: number;\n\n\t// Number of incoming Ack flags (applicable only for TCP based protocols) \n\tpublic dstAckFlags: number;\n\n\t// Number of outgoing Syn flags (applicable only for TCP based protocols) \n\tpublic srcSynFlags: number;\n\n\t// Number of incoming Syn flags (applicable only for TCP based protocols) \n\tpublic dstSynFlags: number;\n\n\t// Number of outgoing Rst flags (applicable only for TCP based protocols) \n\tpublic srcRstFlags: number;\n\n\t// Number of incoming Rst flags (applicable only for TCP based protocols) \n\tpublic dstRstFlags: number;\n\n\t// List of labels \n\tpublic labels: string[];\n\n\t// Internal helper field: Map of source ports (mapped to counter) \n\tpublic srcPortsMap: Map<number,number>;\n\n\t// Internal helper field: Map of destination ports (mapped to counter) \n\tpublic dstPortsMap: Map<number,number>;\n\n\t// Internal helper field: Map of endpoints (mapped to direction) \n\tpublic endpointsMap: Map<string,number>;\n\n}\n\nexport function GetUsageRecordColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"source\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"simId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceIp\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"startTime\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"endTime\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"srcPortsList\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"srcPortsCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstPortsList\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstPortsCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"endpointsList\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"endpointsCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"srcEndpoints\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"srcEndpointsCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstEndpoints\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstEndpointsCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"packetsIn\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"packetsOut\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"bytesIn\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"bytesOut\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"srcAckFlags\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstAckFlags\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"srcSynFlags\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstSynFlags\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"srcRstFlags\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstRstFlags\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"labels\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"srcPortsMap\", \"Map<number,number>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstPortsMap\", \"Map<number,number>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"endpointsMap\", \"Map<string,number>\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// EntitiesRequest message is returned for any action returning multiple entities\nexport class EntitiesRequest<T> {\n\n\t// List of objects in the current result set \n\tpublic list: T[];\n\n constructor(list?: T[]) { \n if (list !== undefined) { this.list = list; }\n }\n\n}\n\n\n","\nimport { IdsList } from './IdsList';\n\n// IdsConfig is the IDS configuration\nexport class IdsConfig {\n\n\t// List of IDS rules SIDs to exclude from processing for a stream \n\tpublic excludeIdsRulesSids: string[];\n\n\t// List of IDS rules lists to apply for a stream \n\tpublic idsLists: IdsList[];\n\n\t// will contain list of well-known DNS servers ( IPs) that in use by a stream's end-points \n\tpublic authorizedDnsServers: string[];\n\n\t// will contain list of well-known FTP servers ( IPs) that in use by a stream's end-points \n\tpublic authorizedFtpServers: string[];\n\n\t// will contain list of well-known Modbus pollers ( masters ) servers ( IPs) that in use by a stream's end-points \n\tpublic modbusMasters: string[];\n\n\t// list of Modbus ports ( 502,503,504...) \n\tpublic modbusPorts: number[];\n\n\t// list of ports, on external end-points, that internal end-points maintain long-lasted (>3600 secs) or persisted connections with. \n\tpublic longSessionsPorts: number[];\n\n constructor(excludeIdsRulesSids?: string[], idsLists?: IdsList[], authorizedDnsServers?: string[], authorizedFtpServers?: string[], modbusMasters?: string[], modbusPorts?: number[], longSessionsPorts?: number[]) { \n if (excludeIdsRulesSids !== undefined) { this.excludeIdsRulesSids = excludeIdsRulesSids; }\n if (idsLists !== undefined) { this.idsLists = idsLists; }\n if (authorizedDnsServers !== undefined) { this.authorizedDnsServers = authorizedDnsServers; }\n if (authorizedFtpServers !== undefined) { this.authorizedFtpServers = authorizedFtpServers; }\n if (modbusMasters !== undefined) { this.modbusMasters = modbusMasters; }\n if (modbusPorts !== undefined) { this.modbusPorts = modbusPorts; }\n if (longSessionsPorts !== undefined) { this.longSessionsPorts = longSessionsPorts; }\n }\n\n}\n\n\n","\nimport { EventTypeCode } from './EventTypeCode';\n\n// RuleCountThresholdConfig is a set of event type to threshold\nexport class RuleCountThresholdConfig {\n\n\t// event type code \n\tpublic eventType: EventTypeCode;\n\n\t// occurrences threshold \n\tpublic threshold: number;\n\n constructor(eventType?: EventTypeCode, threshold?: number) { \n if (eventType !== undefined) { this.eventType = eventType; }\n if (threshold !== undefined) { this.threshold = threshold; }\n }\n\n}\n\n\n","\n\n// JsonDoc is a Json document to store in Document object store (Postgres, ElasticSearch, Couchbase ...)\n// It serves as a generic container for JSON data with a unique identifier.\nexport class JsonDoc {\n\n\t// Id is the unique identifier of the document \n\tpublic id: string;\n\n\t// Data is the raw JSON string content \n\tpublic data: string;\n\n constructor(id?: string, data?: string) { \n if (id !== undefined) { this.id = id; }\n if (data !== undefined) { this.data = data; }\n }\n\n}\n\n\n","\nimport { Thresholds } from './Thresholds';\nimport { ShieldexConfig } from './ShieldexConfig';\nimport { EventSeverityConfig } from './EventSeverityConfig';\nimport { DeviceConfig } from './DeviceConfig';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// StreamAnalyticsConfig (temporary name - should be changed to StreamConfig) keeps the AI and rules related parameters and thresholds\n// It was separated from Stream since we should not provide him access to this data structure\nexport class StreamAnalyticsConfig extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Set of stream configuration thresholds \n\tpublic thresholds: Thresholds;\n\n\t// Set of stream shieldex configuration \n\tpublic shieldexConfig: ShieldexConfig;\n\n\t// Set of event severity configuration \n\tpublic eventSeverityConfig: EventSeverityConfig;\n\n\t// Set of device related configurations \n\tpublic deviceConfig: DeviceConfig;\n\n}\n\nexport function GetStreamAnalyticsConfigColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"thresholds\", \"Thresholds\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"shieldexConfig\", \"ShieldexConfig\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"eventSeverityConfig\", \"EventSeverityConfig\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceConfig\", \"DeviceConfig\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { AccountRole } from './AccountRole';\nimport { User } from './User';\nimport { ColumnDef } from './ColumnDef';\n\n// UserMemberships model include user data and all its accounts memberships\nexport class UserMemberships extends User {\n\n\t// List of user roles in accounts \n\tpublic accountRoles: AccountRole[];\n\n}\n\nexport function GetUserMembershipsColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountRoles\", \"AccountRole\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { FeatureCode } from './FeatureCode';\nimport { Account } from './Account';\nimport { ColumnDef } from './ColumnDef';\n\n// AccountDTO includes additional data for display\nexport class AccountDTO extends Account {\n\n\t// List of all features from all the groups \n\tpublic features: FeatureCode[];\n\n}\n\nexport function GetAccountDTOColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"features\", \"FeatureCode\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { UserTypeCode } from './UserTypeCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// AuditLog entity is a log entry in the audit log to track users / service account actions\nexport class AuditLog extends BaseEntity {\n\n\t// Account ID (empty if it is non-account entity) \n\tpublic accountId: string;\n\n\t// User Id \n\tpublic userId: string;\n\n\t// User type: UNDEFINED | SYSADMIN | USER | SERVICE_ACCOUNT \n\tpublic userType: UserTypeCode;\n\n\t// Action that was performed \n\tpublic action: string;\n\n\t// Item type \n\tpublic itemType: string;\n\n\t// Item Id \n\tpublic itemId: string;\n\n\t// Item Name \n\tpublic itemName: string;\n\n\t// Item value before change [Json] \n\tpublic beforeChange: string;\n\n\t// Item delta after change [Json] \n\tpublic afterChange: string;\n\n}\n\nexport function GetAuditLogColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"userId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"userType\", \"UserTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"action\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"itemType\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"itemId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"itemName\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"beforeChange\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"afterChange\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { AccountInfo } from './AccountInfo';\nimport { BaseEntityEx } from './BaseEntityEx';\nimport { ColumnDef } from './ColumnDef';\n\n// DeploymentInfo is a general statistics for a specific deployment\n// This data is used by the pulse-api to send statistics to the global dashboard\nexport class DeploymentInfo extends BaseEntityEx {\n\n\t// Account name \n\tpublic name: string;\n\n\t// Deployment accounts information \n\tpublic accounts: AccountInfo[];\n\n\t// Temporary access token to access deployment endpoint for inquiry \n\tpublic accessToken: string;\n\n\t// Cloud project id \n\tpublic cloudProjectId: string;\n\n\t// Cloud region \n\tpublic cloudRegion: string;\n\n}\n\nexport function GetDeploymentInfoColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"accounts\", \"AccountInfo\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"accessToken\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"cloudProjectId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"cloudRegion\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// SIM entity represents a physical SIM (Subscriber Identity Module) card used in an IoT device to access the internet via a cellular provider\nexport class SIM {\n\n\t// Unique SIM Identity (ICCID or IMSI or MSISDN or IP in this order) \n\tpublic id: string;\n\n\t// The ip \n\tpublic ip: string;\n\n\t// The unique serial number, integrated circuit card identification \n\tpublic iccid: string;\n\n\t// The international mobile subscriber identity number \n\tpublic imsi: string;\n\n\t// Mobile Subscriber ISDN Number (the actual phone number with the country prefix) \n\tpublic msisdn: string;\n\n constructor(id?: string, iP?: string, iCCID?: string, iMSI?: string, mSISDN?: string) { \n if (id !== undefined) { this.id = id; }\n if (iP !== undefined) { this.ip = iP; }\n if (iCCID !== undefined) { this.iccid = iCCID; }\n if (iMSI !== undefined) { this.imsi = iMSI; }\n if (mSISDN !== undefined) { this.msisdn = mSISDN; }\n }\n\n}\n\n\n","\n\n// Interval represents an interval of min and max numbers\nexport class Interval {\n\n\t// From interval \n\tpublic from: number;\n\n\t// To interval \n\tpublic to: number;\n\n constructor(from?: number, to?: number) { \n if (from !== undefined) { this.from = from; }\n if (to !== undefined) { this.to = to; }\n }\n\n}\n\n\n","\n\n// Json Represent arbitrary JSON fields collection\n// It is a map of string to any, used for flexible data structures.\nexport class Json {\n\n constructor() { \n }\n\n}\n\n\n","\nimport { AccountTypeCode } from './AccountTypeCode';\nimport { AccountStatusCode } from './AccountStatusCode';\nimport { BaseEntityEx } from './BaseEntityEx';\nimport { ColumnDef } from './ColumnDef';\n\n// AccountInfo is a summarized information about the account which is part of the deployment info\nexport class AccountInfo extends BaseEntityEx {\n\n\t// Deployment ID \n\tpublic deploymentId: string;\n\n\t// Account name \n\tpublic name: string;\n\n\t// Account Type: UNDEFINED | DEMO | TRIAL | PARTNER | CUSTOMER \n\tpublic type: AccountTypeCode;\n\n\t// Account status: UNDEFINED | ACTIVE | SUSPENDED \n\tpublic status: AccountStatusCode;\n\n\t// List of associated FeaturesGroup ids (for feature toggle) \n\tpublic groups: string[];\n\n\t// The total number of devices per stream in the account \n\tpublic totalDevices: Map<string,number>;\n\n\t// The total number of active devices per stream in the account \n\tpublic activeDevices: Map<string,number>;\n\n\t// The total number of alerts per stream in the last 24 hours \n\tpublic dailyAlerts: Map<string,number>;\n\n\t// The total number of rules per stream in this account \n\tpublic totalRules: Map<string,number>;\n\n\t// The total number of members in the account \n\tpublic totalMembers: number;\n\n\t// Shield index events count \n\tpublic shieldexEventCount: number;\n\n\t// Shield index score (1-100) \n\tpublic sheildexScore: number;\n\n\t// Shield index trend (Up / Down) \n\tpublic sheildexTrend: string;\n\n}\n\nexport function GetAccountInfoColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"deploymentId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"AccountTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"status\", \"AccountStatusCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"groups\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalDevices\", \"Map<string,number>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"activeDevices\", \"Map<string,number>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dailyAlerts\", \"Map<string,number>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalRules\", \"Map<string,number>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalMembers\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"shieldexEventCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"sheildexScore\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"sheildexTrend\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { MitreAttackCategory } from './MitreAttackCategory';\nimport { BaseEntity } from './BaseEntity';\nimport { InsightTypeCode } from './InsightTypeCode';\nimport { InsightStatusCode } from './InsightStatusCode';\nimport { SeverityTypeCode } from './SeverityTypeCode';\nimport { DirectionContextCode } from './DirectionContextCode';\nimport { RegulatoryViolation } from './RegulatoryViolation';\nimport { ColumnDef } from './ColumnDef';\n\n// Insight entity\n// The Insight entity is a specific instance of Insight specification which is the result of a single run\n// Insight is operational data (generated during the standard operation of the system) hence, it is saved in the Operational database (Elasticsearch) and has a life-cycle-policy\nexport class Insight extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id (leave empty to run insights on all streams) \n\tpublic streamId: string;\n\n\t// Insight specification Id (from insight_spec table) \n\tpublic specId: string;\n\n\t// Insight day (number representing a day in the format of: yyyymmdd) \n\tpublic dayId: number;\n\n\t// Insight type: UNDEFINED | EVENTS | STATISTICS \n\tpublic type: InsightTypeCode;\n\n\t// Insight status: UNDEFINED | INACTIVE | PENDING | ACTIVE \n\tpublic status: InsightStatusCode;\n\n\t// The string representing the insight description in the UI \n\tpublic description: string;\n\n\t// Linked objects for this insight \n\tpublic links: string[];\n\n\t// Event severity: UNDEFINED | LOW | MEDIUM | HIGH | ... \n\tpublic severity: SeverityTypeCode;\n\n\t// Title : short description of insight \n\tpublic title: string;\n\n\t// InsightDirectionContext: UNDEFINED | EVENT_LIST | DEVICE_LIST | EVENT_DETAILS | DEVICE_DETAILS \n\tpublic insightDirectionContext: DirectionContextCode;\n\n\t// Richer, longer text for insight details view NEW FIELDS \n\tpublic detailedDescription: string;\n\n\t// \n\tpublic affectedDeviceIds: string[];\n\n\t// \n\tpublic affectedAlertIds: string[];\n\n\t// \n\tpublic recommendedActions: string[];\n\n\t// \n\tpublic regulatoryViolations: RegulatoryViolation[];\n\n\t// \n\tpublic mitreAttackCategories: MitreAttackCategory[];\n\n\t// \n\tpublic affectedDeviceCount: number;\n\n}\n\nexport function GetInsightColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"specId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dayId\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"InsightTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"status\", \"InsightStatusCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"links\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"severity\", \"SeverityTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"title\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"insightDirectionContext\", \"DirectionContextCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"detailedDescription\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"affectedDeviceIds\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"affectedAlertIds\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"recommendedActions\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"regulatoryViolations\", \"RegulatoryViolation\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"mitreAttackCategories\", \"MitreAttackCategory\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"affectedDeviceCount\", \"number\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// SimpleEntity is a generic wrapper to express a primitive type as an Entity.\n// It is useful when you need to treat a simple value (like a string or int) as a full-fledged Entity\n// in the system, for example when passing it to functions that expect an Entity interface.\nexport class SimpleEntity<T> {\n\n\t// Value is the wrapped entity value \n\tpublic value: T;\n\n constructor(value?: T) { \n if (value !== undefined) { this.value = value; }\n }\n\n}\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// LlmPrompt entity is a structure representing insight LLM prompt\nexport class LlmPrompt extends BaseEntity {\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// \n\tpublic prompt: string;\n\n}\n\nexport function GetLlmPromptColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"prompt\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { BaseMessage } from './BaseMessage';\nimport { ColumnDef } from './ColumnDef';\n\n// EntityMessage is a message structure for carrying generic entity data.\n// It embeds BaseMessage and uses an `any` type for the payload.\nexport class EntityMessage extends BaseMessage {\n\n\t// The payload of the message, typically an entity. \n\tpublic payload: any;\n\n}\n\nexport function GetEntityMessageColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"payload\", \"any\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { NotificationTypeCode } from './NotificationTypeCode';\n\n// NotificationQueuePayload is the payload for notification messages sent over pub/sub\nexport class NotificationQueuePayload {\n\n\t// Account context \n\tpublic accountId: string;\n\n\t// Human-readable message \n\tpublic description: string;\n\n\t// URL path parts (e.g., [\"console\", \"devices\"]) \n\tpublic actionParts: string[];\n\n\t// Notification category \n\tpublic type: NotificationTypeCode;\n\n\t// Target users for this notification \n\tpublic userIds: string[];\n\n constructor(accountId?: string, description?: string, actionParts?: string[], type?: NotificationTypeCode, userIds?: string[]) { \n if (accountId !== undefined) { this.accountId = accountId; }\n if (description !== undefined) { this.description = description; }\n if (actionParts !== undefined) { this.actionParts = actionParts; }\n if (type !== undefined) { this.type = type; }\n if (userIds !== undefined) { this.userIds = userIds; }\n }\n\n}\n\n\n","\n\n// NetworkEndpoint represents a unique external endpoint in a network topology\nexport class NetworkEndpoint {\n\n\t// The primary DNS name \n\tpublic mainDns: string;\n\n\t// Other DNS names \n\tpublic dnsList: string[];\n\n\t// List of IPs \n\tpublic ipList: string[];\n\n\t// Port number \n\tpublic port: number;\n\n\t// IP Protocol used in layer 3 (e.g., TCP, UDP) \n\tpublic ipProtocol: string;\n\n\t// Applicative Protocol used in layer 7 (e.g., HTTP, MQTT) \n\tpublic appProtocol: string;\n\n\t// Additional information about the application \n\tpublic appName: string;\n\n\t// Number of devices communicating with this IP \n\tpublic deviceCount: number;\n\n\t// IP Geo location provided as WKT format \n\tpublic geo: string;\n\n\t// IP Owner name \n\tpublic name: string;\n\n\t// IP Owner address \n\tpublic addr: string;\n\n\t// Does this endpoint involved in malicious activity \n\tpublic malicious: boolean;\n\n\t// List of malicious activities tags \n\tpublic tags: string;\n\n constructor(mainDns?: string, dnsList?: string[], ipList?: string[], port?: number, ipProtocol?: string, appProtocol?: string, appName?: string, deviceCount?: number, geo?: string, name?: string, address?: string, malicious?: boolean, tags?: string) { \n if (mainDns !== undefined) { this.mainDns = mainDns; }\n if (dnsList !== undefined) { this.dnsList = dnsList; }\n if (ipList !== undefined) { this.ipList = ipList; }\n if (port !== undefined) { this.port = port; }\n if (ipProtocol !== undefined) { this.ipProtocol = ipProtocol; }\n if (appProtocol !== undefined) { this.appProtocol = appProtocol; }\n if (appName !== undefined) { this.appName = appName; }\n if (deviceCount !== undefined) { this.deviceCount = deviceCount; }\n if (geo !== undefined) { this.geo = geo; }\n if (name !== undefined) { this.name = name; }\n if (address !== undefined) { this.addr = address; }\n if (malicious !== undefined) { this.malicious = malicious; }\n if (tags !== undefined) { this.tags = tags; }\n }\n\n}\n\n\n","\n\n// FlowRecord represents a single flow record from the CSV data\n// generated by Suricata0-based parser\nexport class FlowRecord {\n\n\t// Unique identifier for the flow \n\tpublic flowId: number;\n\n\t// \n\tpublic streamId: string;\n\n\t// ID of the device \n\tpublic deviceId: string;\n\n\t// Start time of the flow in epoch milliseconds \n\tpublic startTime: number;\n\n\t// End time of the flow in epoch milliseconds \n\tpublic endTime: number;\n\n\t// Source IP address \n\tpublic srcIP: string;\n\n\t// Source port number \n\tpublic srcPort: number;\n\n\t// Destination IP address \n\tpublic dstIP: string;\n\n\t// Destination port number \n\tpublic dstPort: number;\n\n\t// Packets sent to the server \n\tpublic pcktToSrv: number;\n\n\t// Packets sent to the client \n\tpublic pcktToClient: number;\n\n\t// Bytes sent to the server \n\tpublic bytesToSrv: number;\n\n\t// Bytes sent to the client \n\tpublic bytesToClient: number;\n\n\t// Protocol used (e.g., TCP, UDP) \n\tpublic protocol: string;\n\n\t// Associated PCAP file name \n\tpublic pcap: string;\n\n\t// \n\tpublic alerted: boolean;\n\n constructor(flowId?: number, streamId?: string, deviceId?: string, startTime?: number, endTime?: number, srcIP?: string, srcPort?: number, dstIP?: string, dstPort?: number, pcktToSrv?: number, pcktToClient?: number, bytesToSrv?: number, bytesToClient?: number, protocol?: string, pcap?: string, alerted?: boolean) { \n if (flowId !== undefined) { this.flowId = flowId; }\n if (streamId !== undefined) { this.streamId = streamId; }\n if (deviceId !== undefined) { this.deviceId = deviceId; }\n if (startTime !== undefined) { this.startTime = startTime; }\n if (endTime !== undefined) { this.endTime = endTime; }\n if (srcIP !== undefined) { this.srcIP = srcIP; }\n if (srcPort !== undefined) { this.srcPort = srcPort; }\n if (dstIP !== undefined) { this.dstIP = dstIP; }\n if (dstPort !== undefined) { this.dstPort = dstPort; }\n if (pcktToSrv !== undefined) { this.pcktToSrv = pcktToSrv; }\n if (pcktToClient !== undefined) { this.pcktToClient = pcktToClient; }\n if (bytesToSrv !== undefined) { this.bytesToSrv = bytesToSrv; }\n if (bytesToClient !== undefined) { this.bytesToClient = bytesToClient; }\n if (protocol !== undefined) { this.protocol = protocol; }\n if (pcap !== undefined) { this.pcap = pcap; }\n if (alerted !== undefined) { this.alerted = alerted; }\n }\n\n}\n\n\n","\nimport { Tuple } from './Tuple';\nimport { EventTypeCode } from './EventTypeCode';\nimport { SeverityTypeCode } from './SeverityTypeCode';\nimport { DeviceActionCode } from './DeviceActionCode';\nimport { BaseEntity } from './BaseEntity';\nimport { IntegrationTypeCode } from './IntegrationTypeCode';\nimport { IntegrationTriggerCode } from './IntegrationTriggerCode';\nimport { HttpMethodCode } from './HttpMethodCode';\nimport { ColumnDef } from './ColumnDef';\n\n// Integration entity defines technical integration to third party\nexport class Integration extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id (leave empty to apply on all streams) \n\tpublic streamId: string;\n\n\t// Integration type (HTTP | HTTPS | SMTP | EMAIL ...) \n\tpublic type: IntegrationTypeCode;\n\n\t// Integration trigger (EVENT | ACTION ...) \n\tpublic trigger: IntegrationTriggerCode;\n\n\t// Integration name \n\tpublic name: string;\n\n\t// Is integration enabled \n\tpublic enabled: boolean;\n\n\t// Host name or ip address (applicable for all protocols) \n\tpublic host: string;\n\n\t// Port number (applicable for all protocols) \n\tpublic port: number;\n\n\t// User (applicable for all protocols) \n\tpublic user: string;\n\n\t// Password (applicable for all protocols) \n\tpublic password: string;\n\n\t// HTTP protocol URL path (applicable for http/https protocols) \n\tpublic url: string;\n\n\t// HTTP protocol method: GET | POST | PUT | PATCH | DELETE (applicable for http/https protocols) \n\tpublic method: HttpMethodCode;\n\n\t// HTTP protocol Headers (applicable for http/https protocols) \n\tpublic headers: Tuple<string, string>[];\n\n\t// Message content mime type \n\tpublic mimeType: string;\n\n\t// SMTP/EMAIL protocol List of recipients \n\tpublic recipients: string[];\n\n\t// SMTP/EMAIL protocol Message subject template \n\tpublic subject: string;\n\n\t// Message body template \n\tpublic body: string;\n\n\t// SMTP/EMAIL sender (will be: system@pulseiot.io if it si empty) \n\tpublic from: string;\n\n\t// Activate integration only if the event object type code is in the list (empty list means no filter) \n\tpublic eventTypes: EventTypeCode[];\n\n\t// Activate integration only if the event severity matching this value \n\tpublic eventSeverity: SeverityTypeCode;\n\n\t// Activate integration only for specific action (applicable for Trigger = ACTION) \n\tpublic preventiveAction: DeviceActionCode;\n\n}\n\nexport function GetIntegrationColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"IntegrationTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"trigger\", \"IntegrationTriggerCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"enabled\", \"boolean\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"host\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"port\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"user\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"password\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"url\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"method\", \"HttpMethodCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"headers\", \"Tuple<string, string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"mimeType\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"recipients\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"subject\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"body\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"from\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"eventTypes\", \"EventTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"eventSeverity\", \"SeverityTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"preventiveAction\", \"DeviceActionCode\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { DataSourceCode } from './DataSourceCode';\nimport { EventTypeCode } from './EventTypeCode';\nimport { SeverityTypeCode } from './SeverityTypeCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// RuleTemplate entity is used to define rules quickly based on pre-defined templates\nexport class RuleTemplate extends BaseEntity {\n\n\t// Rule template name \n\tpublic name: string;\n\n\t// Rule template description \n\tpublic description: string;\n\n\t// Rule context - what is the data source to evaluate the rule \n\tpublic context: DataSourceCode;\n\n\t// List of AND conditions, all of them must be true for the rule to trigger event \n\tpublic matchAll: string[];\n\n\t// List of OR conditions, at least one of them must be true for the rule to trigger event \n\tpublic matchAny: string[];\n\n\t// The time duration (in seconds) for consecutive aggregations \n\tpublic timeWindowSec: number;\n\n\t// Set the event type on events generated by this rule \n\tpublic setEventType: EventTypeCode;\n\n\t// Set the event severity on events generated by this rule \n\tpublic setEventSeverity: SeverityTypeCode;\n\n}\n\nexport function GetRuleTemplateColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"context\", \"DataSourceCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"matchAll\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"matchAny\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"timeWindowSec\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"setEventType\", \"EventTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"setEventSeverity\", \"SeverityTypeCode\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// errorStruct is the default implementation of the Error interface.\nexport class errorStruct {\n\n\t// code is the numeric error code \n\tpublic code: number;\n\n\t// text is the error message \n\tpublic text: string;\n\n constructor(code?: number, text?: string) { \n if (code !== undefined) { this.code = code; }\n if (text !== undefined) { this.text = text; }\n }\n\n}\n\n\n","\nimport { SeverityTypeCode } from './SeverityTypeCode';\nimport { RuleCountThresholdConfig } from './RuleCountThresholdConfig';\n\n// RuleBasedSeverityConditionConfig is a set of severity types code configs\nexport class RuleBasedSeverityConditionConfig {\n\n\t// Severity type code \n\tpublic severityType: SeverityTypeCode;\n\n\t// bias config \n\tpublic bias: number;\n\n\t// 0 or more RuleCountThresholdConfig \n\tpublic ruleConditionThresholdConfig: RuleCountThresholdConfig[];\n\n\t// Minimum number of different rule types \n\tpublic ruleTypesThreshold: number;\n\n constructor(severityType?: SeverityTypeCode, bias?: number, ruleConditionThresholdConfig?: RuleCountThresholdConfig[], ruleTypesThreshold?: number) { \n if (severityType !== undefined) { this.severityType = severityType; }\n if (bias !== undefined) { this.bias = bias; }\n if (ruleConditionThresholdConfig !== undefined) { this.ruleConditionThresholdConfig = ruleConditionThresholdConfig; }\n if (ruleTypesThreshold !== undefined) { this.ruleTypesThreshold = ruleTypesThreshold; }\n }\n\n}\n\n\n","\nimport { AccountRole } from './AccountRole';\nimport { User } from './User';\nimport { ColumnDef } from './ColumnDef';\n\n// UserMembership model include user data with a specific account membership\nexport class UserMembership extends User {\n\n\t// User role in the account \n\tpublic accountRole: AccountRole;\n\n}\n\nexport function GetUserMembershipColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountRole\", \"AccountRole\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { InjectionToken } from '@angular/core';\n\nexport class AppConfig {\n api: string = '';\n}\n\nexport const APP_CONFIG = new InjectionToken<AppConfig>('CLIENT_LIB_APP_CONFIG');\n\nexport function provideClientLib(config: AppConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: APP_CONFIG, useValue: config },\n ]);\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpRequest } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\n\nconst httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache, no-store',\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Headers': 'Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, X-API-KEY, X-ACCESS-TOKEN, X-TIMEZONE, accept, origin, Cache-Control, X-Requested-With, Authorization, Content-Disposition, Content-Filename',\n })\n};\n\n// Utility class for all REST services with common functions\n@Injectable({\n providedIn: 'root'\n})\nexport class RestUtils {\n\n // Constructor with injected authentication service\n constructor(private http: HttpClient) { }\n\n // Upload is HTTP POST action but the body is File object\n upload<T>(file: File, url: string, ...params: string[]) {\n\n const resourceUrl = this.buildUrl(url, ...params);\n\n const formData: FormData = new FormData();\n formData.append('fileKey', file, file.name);\n\n const req = new HttpRequest('POST', resourceUrl, formData, {\n reportProgress: false,\n responseType: 'json',\n });\n return this.http.request<T>(req);\n }\n\n // Download is HTTP GET action but the content is a blob\n download(fileName: string, url: string, ...params: string[]) {\n const resourceUrl = this.buildUrl(url, ...params);\n\n let downloadLink = fileName\n\n // extract file name\n params.forEach(p => {\n let arr = p.split('=');\n if (arr.length > 1) {\n if (arr[0].toLowerCase() === 'filename') {\n downloadLink = arr[1];\n }\n }\n });\n\n // Set content type for: json / csv / xml / pdf /xslx\n let contentType = this.getMimeType(downloadLink);\n\n return this.http.get(resourceUrl, {\n responseType: 'blob',\n reportProgress: true,\n observe: 'events',\n headers: new HttpHeaders({ 'Content-Type': contentType })\n });\n }\n\n // Download2 is an alternative option to download\n download2(fileName: string, url: string, ...params: string[]) {\n\n let downloadLink = fileName\n\n // extract file name\n params.forEach(p => {\n let arr = p.split('=');\n if (arr.length > 1) {\n if (arr[0].toLowerCase() === 'filename') {\n downloadLink = arr[1];\n }\n }\n });\n\n let contentType = this.getMimeType(fileName);\n\n const link = document.createElement('a');\n link.href = this.buildUrl(url, ...params);\n link.download = downloadLink;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n\n }\n\n // HTTP GET action\n get<T>(url: string, ...params: string[]): Observable<T> {\n const resourceUrl = this.buildUrl(url, ...params);\n return this.http.get<T>(resourceUrl, httpOptions)\n }\n\n // HTTP POST action\n post<T>(url: string, body?: string, ...params: string[]): Observable<T> {\n const resourceUrl = this.buildUrl(url, ...params);\n return this.http.post<T>(resourceUrl, body, httpOptions)\n }\n\n // HTTP PUT action\n put<T>(url: string, body?: string, ...params: string[]): Observable<T> {\n const resourceUrl = this.buildUrl(url, ...params);\n return this.http.put<T>(resourceUrl, body, httpOptions)\n }\n\n // HTTP PATCH action\n patch<T>(url: string, body?: string, ...params: string[]): Observable<T> {\n const resourceUrl = this.buildUrl(url, ...params);\n return this.http.patch<T>(resourceUrl, body, httpOptions)\n }\n\n // HTTP DELETE action\n delete<T>(url: string, ...params: string[]): Observable<T> {\n const resourceUrl = this.buildUrl(url, ...params);\n return this.http.delete<T>(resourceUrl, httpOptions)\n }\n\n // Construct URL with parameters\n private buildUrl(url: string, ...params: string[]) {\n return (params === null) ? url : (params.length === 0) ? url : `${url}${params && params.length > 0 ? '?'+params.join('&') : ''}`;\n }\n\n // Return MIME type based on file extension\n private getMimeType(fileName: string): string {\n // Set content type for: json / csv / xml / pdf /xslx\n let contentType = 'application/json';\n if (fileName.toLowerCase().endsWith('jpg') || fileName.toLowerCase().endsWith('jpeg')) {\n contentType = 'image/jpeg';\n } else if (fileName.toLowerCase().endsWith('png')) {\n contentType = 'image/png';\n } else if (fileName.toLowerCase().endsWith('tif') || fileName.toLowerCase().endsWith('tiff')) {\n contentType = 'image/tiff';\n } else if (fileName.toLowerCase().endsWith('csv')) {\n contentType = 'text/csv';\n } else if (fileName.toLowerCase().endsWith('xml')) {\n contentType = 'text/xml';\n } else if (fileName.toLowerCase().endsWith('pdf')) {\n contentType = 'application/pdf';\n } else if (fileName.toLowerCase().endsWith('xlsx')) {\n contentType = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n }\n return contentType\n }\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { DevicesMap } from '../model';\nimport { DeviceWithEvents } from '../model';\nimport { NetworkMapTypeCode } from '../model';\nimport { TimeSeriesConsumption } from '../model';\nimport { Device } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { DeviceStatusCode } from '../model';\nimport { DeviceReport } from '../model';\nimport { TimeSeries } from '../model';\nimport { Distribution } from '../model';\nimport { NetworkMap } from '../model';\nimport { Entities } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { DeviceTypeCode } from '../model';\nimport { DeviceActionCode } from '../model';\nimport { MapBounds } from '../model';\n\n// UsrDevicesEndPoint device related actions for the operator \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrDevicesService {\n\n // URL to web api\n private baseUrl = '/devices';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new device\n */\n create(body?: Device) {\n return this.rest.put<EntityResponse<Device>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Create bulk of new devices\n */\n bulkCreate(body?: Entities<Device>) {\n return this.rest.put<EntitiesResponse<Device>>(`${this.baseUrl}/bulk`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing device\n */\n update(body?: Device) {\n return this.rest.patch<EntityResponse<Device>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Create bulk of new devices\n */\n bulkUpdate(body?: Entities<Device>) {\n return this.rest.patch<EntitiesResponse<Device>>(`${this.baseUrl}/bulk`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete device\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single device by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Device>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find devices by query\n */\n find(streamId?: string, search?: string, from?: number, to?: number, type?: DeviceTypeCode[], status?: DeviceStatusCode[], risk?: number, sort?: string, page?: number, size?: number, ids?: string[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (risk != null) { params.push(`risk=${risk}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n if (ids != null) { params.push(`ids=${ids}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Device>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Export devices by query to a file as a stream of CSV | JSON | XML | XLSX\n */\n export(format?: string, streamId?: string, search?: string, from?: number, to?: number, type?: DeviceTypeCode[], status?: DeviceStatusCode[], risk?: number, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (risk != null) { params.push(`risk=${risk}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.download(`usr-devices`,`${this.baseUrl}/export/${format}`, ...params);\n }\n\n /**\n * Upload device list from csv file\n */\n upload(streamId?: string, ip?: string[], iccid?: string[], imsi?: string[], msisdn?: string[], imei?: string, name?: string, operator?: string, label?: string[], tag?: string[], country?: string, city?: string, street?: string, postal?: string, lon?: string, lat?: string) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (ip != null) { params.push(`ip=${ip}`); }\n if (iccid != null) { params.push(`iccid=${iccid}`); }\n if (imsi != null) { params.push(`imsi=${imsi}`); }\n if (msisdn != null) { params.push(`msisdn=${msisdn}`); }\n if (imei != null) { params.push(`imei=${imei}`); }\n if (name != null) { params.push(`name=${name}`); }\n if (operator != null) { params.push(`operator=${operator}`); }\n if (label != null) { params.push(`label=${label}`); }\n if (tag != null) { params.push(`tag=${tag}`); }\n if (country != null) { params.push(`country=${country}`); }\n if (city != null) { params.push(`city=${city}`); }\n if (street != null) { params.push(`street=${street}`); }\n if (postal != null) { params.push(`postal=${postal}`); }\n if (lon != null) { params.push(`lon=${lon}`); }\n if (lat != null) { params.push(`lat=${lat}`); }\n\n\t\treturn this.rest.post<ActionResponse>(`${this.baseUrl}/upload`, '', ...params);\n }\n\n /**\n * Add tag to a device\n */\n addTag(id?: string, tag?: string) {\n return this.rest.post<EntityResponse<Device>>(`${this.baseUrl}/${id}/tags/${tag}`, '');\n }\n\n /**\n * Delete tag from a device\n */\n deleteTag(id?: string, tag?: string) {\n return this.rest.delete<EntityResponse<Device>>(`${this.baseUrl}/${id}/tags/${tag}`);\n }\n\n /**\n * Apply action on a device\n */\n applyAction(id?: string, action?: DeviceActionCode) {\n return this.rest.post<ActionResponse>(`${this.baseUrl}/${id}/actions/${action}`, '');\n }\n\n /**\n * Find top 10 devices by their score and filter criteria\n */\n findTop(streamId?: string, search?: string, type?: DeviceTypeCode[], status?: DeviceStatusCode[], risk?: number, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (risk != null) { params.push(`risk=${risk}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntityResponse<DeviceWithEvents>>(`${this.baseUrl}/top`, ...params);\n }\n\n /**\n * Get device distribution by type filtered by query\n */\n countByType(streamId?: string, search?: string, from?: number, to?: number, type?: DeviceTypeCode[], status?: DeviceStatusCode[], risk?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (risk != null) { params.push(`risk=${risk}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-type`, ...params);\n }\n\n /**\n * Get device distribution by status filtered by query\n */\n countByStatus(streamId?: string, search?: string, from?: number, to?: number, type?: DeviceTypeCode[], status?: DeviceStatusCode[], risk?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (risk != null) { params.push(`risk=${risk}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-status`, ...params);\n }\n\n /**\n * Get device distribution by action filtered by query\n */\n countByAction(streamId?: string, search?: string, from?: number, to?: number, type?: DeviceTypeCode[], status?: DeviceStatusCode[], risk?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (risk != null) { params.push(`risk=${risk}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-action`, ...params);\n }\n\n /**\n * Get network map of devices\n */\n getNetworkMap(streamId?: string, from?: number, to?: number, type?: DeviceTypeCode[], tag?: string[], id?: string[], mapType?: NetworkMapTypeCode, ips?: string[], limit?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (tag != null) { params.push(`tag=${tag}`); }\n if (id != null) { params.push(`id=${id}`); }\n if (mapType != null) { params.push(`mapType=${mapType}`); }\n if (ips != null) { params.push(`ips=${ips}`); }\n if (limit != null) { params.push(`limit=${limit}`); }\n\n\t\treturn this.rest.get<EntityResponse<NetworkMap>>(`${this.baseUrl}/network-map`, ...params);\n }\n\n /**\n * Get latest device report, the Key contains latest devices at risk number (works in account level)\n */\n getLatestDeviceReport() {\n return this.rest.get<EntityResponse<DeviceReport>>(`${this.baseUrl}/report/latest`);\n }\n\n /**\n * Get devicesAtRisk histogram over the provided time period\n */\n getDeviceReportTimeline(streamId?: string, from?: number, to?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n\n\t\treturn this.rest.get<EntityResponse<TimeSeries<DeviceReport>>>(`${this.baseUrl}/report/timeline`, ...params);\n }\n\n /**\n * Get device / group of devices consumption over time\n */\n getConsumptionTimeline(streamId?: string, from?: number, to?: number, type?: DeviceTypeCode[], tag?: string[], id?: string[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (tag != null) { params.push(`tag=${tag}`); }\n if (id != null) { params.push(`id=${id}`); }\n\n\t\treturn this.rest.get<EntityResponse<TimeSeriesConsumption>>(`${this.baseUrl}/consumption/timeline`, ...params);\n }\n\n /**\n * Get device / group of devices consumption trend: 7 days consumption compared to the average of the previous weeks\n */\n getConsumptionTrend(streamId?: string, type?: DeviceTypeCode[], tag?: string[], id?: string[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (tag != null) { params.push(`tag=${tag}`); }\n if (id != null) { params.push(`id=${id}`); }\n\n\t\treturn this.rest.get<ActionResponse>(`${this.baseUrl}/consumption/trend`, ...params);\n }\n\n /**\n * Find devices by insight id query\n */\n findByInsightContext(streamId?: string, insightId?: string, from?: number, to?: number, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (insightId != null) { params.push(`insightId=${insightId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Device>>(`${this.baseUrl}/find-by-insight-context`, ...params);\n }\n\n /**\n * Find devices by query\n */\n findDevicesMap(streamId?: string, search?: string, type?: DeviceTypeCode[], status?: DeviceStatusCode[], risk?: number, sort?: string, page?: number, size?: number, mapBounds?: MapBounds) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (risk != null) { params.push(`risk=${risk}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n if (mapBounds != null) { params.push(`mapBounds=${mapBounds}`); }\n\n\t\treturn this.rest.get<EntityResponse<DevicesMap>>(`${this.baseUrl}/find-devices-map`, ...params);\n }\n\n /**\n * Get device distribution by risk filtered by query\n */\n countByRisk(streamId?: string, search?: string, from?: number, to?: number, type?: DeviceTypeCode[], status?: DeviceStatusCode[], risk?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (risk != null) { params.push(`risk=${risk}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-risk`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { GraphSeries } from '../model';\nimport { Report } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { TimeSeries } from '../model';\n\n// UsrReportsEndPoint is a list of system reports related actions \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrReportsService {\n\n // URL to web api\n private baseUrl = '/reports';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new report\n */\n create(body?: Report) {\n return this.rest.put<EntityResponse<Report>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing report\n */\n update(body?: Report) {\n return this.rest.patch<EntityResponse<Report>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete report\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single report by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Report>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find reports by query\n */\n find(accountId?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Report>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Create PDF compliance report\n */\n getComplianceReport(streamId?: string, from?: number, to?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n\n\t\treturn this.rest.download(`usr-reports`,`${this.baseUrl}/compliance`, ...params);\n }\n\n /**\n * Create PDF compliance report and send it by mail to the user's email\n */\n getComplianceReportByMail(streamId?: string, from?: number, to?: number, addressee?: string[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (addressee != null) { params.push(`addressee=${addressee}`); }\n\n\t\treturn this.rest.get<ActionResponse>(`${this.baseUrl}/compliance-by-mail`, ...params);\n }\n\n /**\n * Get network activity over time histogram over the provided time period\n */\n getNetworkActivityOverTime(streamId?: string, from?: number, to?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n\n\t\treturn this.rest.get<EntityResponse<TimeSeries<number>>>(`${this.baseUrl}/network-activity-over-time`, ...params);\n }\n\n /**\n * Get device groups by communication frequency over the provided time period\n */\n getDeviceGroupsByCommunicationFrequency(streamId?: string, from?: number, to?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n\n\t\treturn this.rest.get<EntityResponse<GraphSeries<string, number>>>(`${this.baseUrl}/device-groups-by-communication-frequency`, ...params);\n }\n\n /**\n * Get device distribution by number of destinations over the provided time period\n */\n getDeviceDistributionByNumberOfDestinations(streamId?: string, from?: number, to?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n\n\t\treturn this.rest.get<EntityResponse<GraphSeries<string, number>>>(`${this.baseUrl}/device-distribution-by-number-of-destinations`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { Image } from '../model';\nimport { UserMemberships } from '../model';\nimport { ConfigParam } from '../model';\nimport { ActionResponse } from '../model';\nimport { EntityResponse } from '../model';\nimport { AccountDTO } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { Feature } from '../model';\nimport { Stream } from '../model';\n\n// UsrUserEndPoint Services for user registration and login \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrUserService {\n\n // URL to web api\n private baseUrl = '/user';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Authorize user, verify user against account\n * The response includes access token valid for 20 minutes. The client side should renew the token before expiration using refresh-token method\n */\n authorize(body?: string) {\n return this.rest.post<ActionResponse>(`${this.baseUrl}/authorize`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Refresh token (set new expiration time) and associate with new account if required\n * The response includes the newly refreshed token both in the HTTP header and the new account details\n */\n setAccount(id?: string) {\n return this.rest.post<EntityResponse<AccountDTO>>(`${this.baseUrl}/set-account/${id}`, '');\n }\n\n /**\n * Get user's current account details\n */\n getAccount() {\n return this.rest.get<EntityResponse<AccountDTO>>(`${this.baseUrl}/get-account`);\n }\n\n /**\n * Get user's current account logo\n */\n getAccountLogo() {\n return this.rest.get<EntityResponse<Image>>(`${this.baseUrl}/get-account-logo`);\n }\n\n /**\n * Get user's current account features\n */\n getAccountFeatures() {\n return this.rest.get<EntitiesResponse<Feature>>(`${this.baseUrl}/get-account-features`);\n }\n\n /**\n * Get list of account streams accessible by the user\n */\n getAccountStreams() {\n return this.rest.get<EntitiesResponse<Stream>>(`${this.baseUrl}/get-account-streams`);\n }\n\n /**\n * Get all the user memberships (all accounts that the current user has access to)\n */\n memberships() {\n return this.rest.get<EntityResponse<UserMemberships>>(`${this.baseUrl}/memberships`);\n }\n\n /**\n * Save user's never show again guides\n */\n setNeverShowAgainGuides(guides?: string) {\n return this.rest.patch<ActionResponse>(`${this.baseUrl}/never-show-guides/${guides}`, '');\n }\n\n /**\n * Save user's avatar\n */\n saveAvatar(body?: Image) {\n return this.rest.patch<ActionResponse>(`${this.baseUrl}/avatar`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Get user's avatar\n */\n getAvatar() {\n return this.rest.get<EntityResponse<Image>>(`${this.baseUrl}/avatar`);\n }\n\n /**\n * Get arbitrary image\n */\n getImage(id?: string) {\n return this.rest.get<EntityResponse<Image>>(`${this.baseUrl}/images/${id}`);\n }\n\n /**\n * Get arbitrary image as stream\n */\n getImageStream(id?: string) {\n return this.rest.download(`export`,`${this.baseUrl}/image-bytes/${id}`);\n }\n\n /**\n * Get personal access token\n */\n getAccessToken() {\n return this.rest.get<ActionResponse>(`${this.baseUrl}/access-token`);\n }\n\n /**\n * Ask for premium request\n */\n premiumRequest(featureCode?: string) {\n return this.rest.get<ActionResponse>(`${this.baseUrl}/premium-request`);\n }\n\n /**\n * Get system configuration parameters\n */\n getSysConfig() {\n return this.rest.get<EntitiesResponse<ConfigParam>>(`${this.baseUrl}/get-sys-config`);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { Device } from '../model';\n\n// McpToolsEndPoint Services for the Agentic AI \n@Injectable({\n providedIn: 'root'\n})\nexport class McpToolsService {\n\n // URL to web api\n private baseUrl = '/mcp/tools';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Search for all devices in a stream\n */\n getStreamDevices(accountId?: string, streamId?: string, page?: number) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (page != null) { params.push(`page=${page}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Device>>(`${this.baseUrl}/stream-devices`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntityResponse } from '../model';\nimport { AccountSettings } from '../model';\nimport { ActionResponse } from '../model';\nimport { AccountStatusCode } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { Image } from '../model';\nimport { AccountReportDTO } from '../model';\nimport { AccountTypeCode } from '../model';\nimport { DeviceTypeCode } from '../model';\nimport { DeviceStatusCode } from '../model';\nimport { Account } from '../model';\n\n// SysAccountsEndPoint is a list of account related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysAccountsService {\n\n // URL to web api\n private baseUrl = '/sys/accounts';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new account\n */\n create(dontCreateStream?: boolean, body?: Account) {\n const params = [];\n if (dontCreateStream != null) { params.push(`dontCreateStream=${dontCreateStream}`); }\n\n\t\treturn this.rest.put<EntityResponse<Account>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body, ...params);\n }\n\n /**\n * Update existing account\n */\n update(body?: Account) {\n return this.rest.patch<EntityResponse<Account>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing account settings\n */\n updateSettings(id?: string, body?: AccountSettings) {\n return this.rest.patch<ActionResponse>(`${this.baseUrl}/${id}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete account and all its content\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single account by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Account>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find accounts by query\n */\n find(search?: string, type?: AccountTypeCode[], status?: AccountStatusCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Account>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Save account logo\n */\n saveLogo(body?: Image) {\n return this.rest.patch<ActionResponse>(`${this.baseUrl}/logo`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Get account logo\n */\n getLogo(id?: string) {\n return this.rest.get<EntityResponse<Image>>(`${this.baseUrl}/logo/${id}`);\n }\n\n /**\n * Find accounts by query\n */\n findAccountReports(search?: string, type?: AccountTypeCode[], status?: AccountStatusCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<AccountReportDTO>>(`${this.baseUrl}/find-account-reports`, ...params);\n }\n\n /**\n * Export accounts reports by query to a file\n */\n export(format?: string, streamId?: string, search?: string, from?: number, to?: number, type?: DeviceTypeCode[], status?: DeviceStatusCode[], risk?: number, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (risk != null) { params.push(`risk=${risk}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.download(`export`,`${this.baseUrl}/export/${format}`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { StringIntValue } from '../model';\nimport { ApiKey } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\n\n// SysKeysEndPoint is a list of API Keys related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysKeysService {\n\n // URL to web api\n private baseUrl = '/sys/keys';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new api key\n */\n create(body?: ApiKey) {\n return this.rest.put<EntityResponse<ApiKey>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing api key\n */\n update(body?: ApiKey) {\n return this.rest.patch<EntityResponse<ApiKey>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete api key\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single API key by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<ApiKey>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find keys by query\n */\n find(search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<ApiKey>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Get list of services for the ACL\n */\n listServices() {\n return this.rest.get<EntitiesResponse<StringIntValue>>(`${this.baseUrl}/services`);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { ActionResponse } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { Rule } from '../model';\nimport { RuleTemplate } from '../model';\nimport { EntityResponse } from '../model';\n\n// SysRuleTemplatesEndPoint is a list of rule templates related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysRuleTemplatesService {\n\n // URL to web api\n private baseUrl = '/sys/rule-templates';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * region Endpoint REST handlers ---------------------------------------------------------------------------------------\n * Create new rule template configuration\n */\n create(body?: RuleTemplate) {\n return this.rest.put<EntityResponse<RuleTemplate>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing rule template configuration\n */\n update(body?: RuleTemplate) {\n return this.rest.patch<EntityResponse<RuleTemplate>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete rule template configuration\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single rule template by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<RuleTemplate>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find rule templates by query\n */\n find(search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Rule>>(`${this.baseUrl}`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { Stream } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { EntitiesResponse } from '../model';\n\n// SysStreamsEndPoint is a list of streams related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysStreamsService {\n\n // URL to web api\n private baseUrl = '/sys/streams';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * region Endpoint REST handlers ---------------------------------------------------------------------------------------\n * Create new stream configuration\n */\n create(body?: Stream) {\n return this.rest.put<EntityResponse<Stream>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing stream configuration\n */\n update(body?: Stream) {\n return this.rest.patch<EntityResponse<Stream>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete stream configuration\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single stream by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Stream>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find streams by query\n */\n find(accountId?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Stream>>(`${this.baseUrl}`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { ActionResponse } from '../model';\nimport { UserTypeCode } from '../model';\nimport { UserMembership } from '../model';\nimport { UserStatusCode } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { User } from '../model';\nimport { EntityResponse } from '../model';\nimport { UserMemberships } from '../model';\n\n// SysUsersEndPoint is a list of users related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysUsersService {\n\n // URL to web api\n private baseUrl = '/sys/users';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new user\n */\n create(provisionInAuth0?: boolean, body?: User) {\n const params = [];\n if (provisionInAuth0 != null) { params.push(`provisionInAuth0=${provisionInAuth0}`); }\n\n\t\treturn this.rest.put<EntityResponse<User>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body, ...params);\n }\n\n /**\n * Create new user with all its accounts memberships\n */\n createMembership(body?: UserMembership) {\n return this.rest.post<EntityResponse<UserMemberships>>(`${this.baseUrl}/memberships`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing user\n */\n update(body?: User) {\n return this.rest.patch<EntityResponse<User>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete user and remove all its memberships\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single user by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<User>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find users by query\n */\n find(search?: string, type?: UserTypeCode[], status?: UserStatusCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<User>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Update default account\n */\n setDefaultAccount(id?: string, accountId?: string) {\n return this.rest.patch<ActionResponse>(`${this.baseUrl}/${id}/${accountId}`, '');\n }\n\n /**\n * Get access token\n */\n getAccessToken(id?: string) {\n return this.rest.get<ActionResponse>(`${this.baseUrl}/${id}/access-token`);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EventTypeCode } from '../model';\nimport { SeverityTypeCode } from '../model';\nimport { Device } from '../model';\nimport { Tuple } from '../model';\nimport { SimpleEntity } from '../model';\nimport { EntityResponse } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { EventWithDevice } from '../model';\nimport { MaliciousIPData } from '../model';\nimport { Distribution } from '../model';\nimport { ActionResponse } from '../model';\nimport { TimeSeries } from '../model';\nimport { MaliciousIpCard } from '../model';\nimport { Event } from '../model';\n\n// UsrEventsEndPoint events related actions for the operator \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrEventsService {\n\n // URL to web api\n private baseUrl = '/events';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Get a single event by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Event>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find events by query\n */\n find(streamId?: string, deviceId?: string, alertId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (alertId != null) { params.push(`alertId=${alertId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Device>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Export events by query to a file in a stream of CSV | JSON | XML | XLSX\n */\n export(format?: string, streamId?: string, deviceId?: string, alertId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (alertId != null) { params.push(`alertId=${alertId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.download(`usr-events`,`${this.baseUrl}/export/${format}`, ...params);\n }\n\n /**\n * Export event source file as a stream of source file (pcap)\n */\n exportSource(id?: string) {\n return this.rest.download(`usr-events`,`${this.baseUrl}/${id}/export_source`);\n }\n\n /**\n * Get top 10 events by their severity and time\n */\n findTop(streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntityResponse<EventWithDevice>>(`${this.baseUrl}/top`, ...params);\n }\n\n /**\n * Get top 10 events by their severity and time\n */\n findTopMaliciousIPs(streamId?: string, top?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (top != null) { params.push(`top=${top}`); }\n\n\t\treturn this.rest.get<EntityResponse<MaliciousIPData>>(`${this.baseUrl}/top-malicious-ips`, ...params);\n }\n\n /**\n * Get events distribution by type filtered by query\n */\n countByType(streamId?: string, deviceId?: string, alertId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (alertId != null) { params.push(`alertId=${alertId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-type`, ...params);\n }\n\n /**\n * Get events distribution by status filtered by query\n */\n countByStatus(streamId?: string, deviceId?: string, alertId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (alertId != null) { params.push(`alertId=${alertId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-status`, ...params);\n }\n\n /**\n * Get events distribution by severity filtered by query\n */\n countBySeverity(streamId?: string, deviceId?: string, alertId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (alertId != null) { params.push(`alertId=${alertId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-severity`, ...params);\n }\n\n /**\n * Get events distribution by rule filtered by query\n */\n countByRule(streamId?: string, deviceId?: string, alertId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (alertId != null) { params.push(`alertId=${alertId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-rule`, ...params);\n }\n\n /**\n * Get events distribution by category filtered by query\n */\n countByCategory(streamId?: string, deviceId?: string, alertId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (alertId != null) { params.push(`alertId=${alertId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-category`, ...params);\n }\n\n /**\n * Get current shield as ActionResponse, the Key contains the shield index and the data includes the trend\n */\n getShieldex() {\n return this.rest.get<ActionResponse>(`${this.baseUrl}/shieldex`);\n }\n\n /**\n * Get events histogram over the provided time period\n */\n eventsTimeline(streamId?: string, deviceId?: string, alertId?: string, dimension?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (alertId != null) { params.push(`alertId=${alertId}`); }\n if (dimension != null) { params.push(`dimension=${dimension}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<TimeSeries<Tuple<number, number>[]>>>(`${this.baseUrl}/timeline`, ...params);\n }\n\n /**\n * Get shieldex histogram over the provided time period\n */\n shieldexTimeline(streamId?: string) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n\n\t\treturn this.rest.get<EntityResponse<TimeSeries<number>>>(`${this.baseUrl}/shieldex/timeline`, ...params);\n }\n\n /**\n * Get devices at risk number for specific events criteria\n */\n getDevicesAtRisk(streamId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<ActionResponse>(`${this.baseUrl}/devices-at-risk`, ...params);\n }\n\n /**\n * Get malicious IP data card for specific malicious IP\n */\n getMaliciousIpCard(streamId?: string, targetIp?: string, from?: number, to?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (targetIp != null) { params.push(`targetIp=${targetIp}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n\n\t\treturn this.rest.get<EntityResponse<MaliciousIpCard>>(`${this.baseUrl}/malicious-ip-card`, ...params);\n }\n\n /**\n * Apply DNS lookup for each IP in the list\n */\n getIpLookup(ip?: string) {\n const params = [];\n if (ip != null) { params.push(`ip=${ip}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<SimpleEntity<Tuple<string, string>>>>(`${this.baseUrl}/ip-lookup`, ...params);\n }\n\n /**\n * Find events by query\n */\n findByInsightContext(streamId?: string, insightId?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (insightId != null) { params.push(`insightId=${insightId}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Device>>(`${this.baseUrl}/find-by-insight-context`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { Insight } from '../model';\nimport { InsightTypeCode } from '../model';\nimport { SeverityTypeCode } from '../model';\nimport { EntityResponse } from '../model';\nimport { Distribution } from '../model';\n\n// UsrInsightsEndPoint is a list of insights related actions \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrInsightsService {\n\n // URL to web api\n private baseUrl = '/insights';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Find daily insights\n */\n getDailyInsights(dayId?: number) {\n const params = [];\n if (dayId != null) { params.push(`dayId=${dayId}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Insight>>(`${this.baseUrl}/daily`, ...params);\n }\n\n /**\n * Find insights by query\n */\n find(streamId?: string, search?: string, from?: number, to?: number, sort?: string, page?: number, size?: number, type?: InsightTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Insight>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Get a single insight by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Insight>>(`${this.baseUrl}/insights/${id}`);\n }\n\n /**\n * Get alerts distribution by severity filtered by query\n */\n countAlertsBySeverity(streamId?: string, search?: string, from?: number, to?: number, type?: InsightTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/v1/insights/count-alerts/by-severity`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { TimeSeries } from '../model';\nimport { EntityResponse } from '../model';\nimport { Checkpoint } from '../model';\n\n// SysCheckpointsEndPoint is a list of checkpoint queries for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysCheckpointsService {\n\n // URL to web api\n private baseUrl = '/sys/checkpoints';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Get a single checkpoint\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Checkpoint>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find checkpoints by query\n */\n find(from?: number, to?: number, accountId?: string, streamId?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Checkpoint>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Get checkpoints count overtime\n */\n timeline(from?: number, to?: number, accountId?: string, streamId?: string, field?: string, timeField?: string) {\n const params = [];\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (field != null) { params.push(`field=${field}`); }\n if (timeField != null) { params.push(`timeField=${timeField}`); }\n\n\t\treturn this.rest.get<EntityResponse<TimeSeries<number>>>(`${this.baseUrl}/timeline`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { ConfigParam } from '../model';\nimport { EntityResponse } from '../model';\nimport { ConfigParams } from '../model';\nimport { ActionResponse } from '../model';\nimport { EntitiesResponse } from '../model';\n\n// SysConfigEndPoint is a list of groups related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysConfigService {\n\n // URL to web api\n private baseUrl = '/sys/config';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new configuration parameter\n */\n create(body?: ConfigParam) {\n return this.rest.put<EntityResponse<ConfigParam>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing configuration parameter\n */\n update(body?: ConfigParam) {\n return this.rest.patch<EntityResponse<ConfigParam>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update group of configuration parameters in a batch\n */\n updateGroup(body?: ConfigParams) {\n return this.rest.patch<EntityResponse<ConfigParam>>(`${this.baseUrl}/update-group`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete configuration parameter\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single configuration parameter\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<ConfigParam>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find configuration parameters by query\n */\n keys(search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<ConfigParam>>(`${this.baseUrl}/keys`, ...params);\n }\n\n /**\n * Find configuration parameters by query\n */\n find(search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<ConfigParam>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Test email template by configId\n */\n testEmailTemplate(configId?: string, addresses?: string[]) {\n const params = [];\n if (configId != null) { params.push(`configId=${configId}`); }\n if (addresses != null) { params.push(`addresses=${addresses}`); }\n\n\t\treturn this.rest.get<ActionResponse>(`${this.baseUrl}/test-email-template`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { Feature } from '../model';\nimport { FeaturesGroup } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\n\n// SysFeaturesEndPoint is a list of features related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysFeaturesService {\n\n // URL to web api\n private baseUrl = '/sys/features';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Find features by query\n */\n findFeature(search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Feature>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Create new features group\n */\n createGroup(body?: FeaturesGroup) {\n return this.rest.put<EntityResponse<FeaturesGroup>>(`${this.baseUrl}/groups`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing features group\n */\n updateGroup(body?: FeaturesGroup) {\n return this.rest.patch<EntityResponse<FeaturesGroup>>(`${this.baseUrl}/groups`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete features group\n */\n deleteGroup(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/groups/${id}`);\n }\n\n /**\n * Get a single features group by id\n */\n getGroup(id?: string) {\n return this.rest.get<EntityResponse<Feature>>(`${this.baseUrl}/groups/${id}`);\n }\n\n /**\n * Find features groups by query\n */\n findGroup(search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Feature>>(`${this.baseUrl}/groups`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { Rule } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { EntitiesResponse } from '../model';\n\n// SysIdsRulesEndPoint is a list of rules related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysIdsRulesService {\n\n // URL to web api\n private baseUrl = '/sys/ids-rules';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * region Endpoint REST handlers ---------------------------------------------------------------------------------------\n * Create new rule configuration\n */\n create(body?: Rule) {\n return this.rest.post<EntityResponse<Rule>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing rule configuration\n */\n update(body?: Rule) {\n return this.rest.put<EntityResponse<Rule>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete rule configuration\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single rule by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Rule>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find rules by query\n */\n find(accountId?: string, streamId?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Rule>>(`${this.baseUrl}`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { InsightQuery } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { InsightSpec } from '../model';\n\n// SysInsightsEndPoint is a list of insights related actions for system administrator \n@Injectable({\n providedIn: 'root'\n})\nexport class SysInsightsService {\n\n // URL to web api\n private baseUrl = '/sys/insights';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new Insight Query configuration\n */\n createQuery(body?: InsightQuery) {\n return this.rest.put<EntityResponse<InsightQuery>>(`${this.baseUrl}/query`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing Insight Query configuration\n */\n updateQuery(body?: InsightQuery) {\n return this.rest.patch<EntityResponse<InsightQuery>>(`${this.baseUrl}/query`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete Insight Query configuration\n */\n deleteQuery(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/query/${id}`);\n }\n\n /**\n * Get a single Insight Query by id\n */\n getQuery(id?: string) {\n return this.rest.get<EntityResponse<InsightQuery>>(`${this.baseUrl}/query/${id}`);\n }\n\n /**\n * Find Insight Queries by query\n */\n findQueries(search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<InsightQuery>>(`${this.baseUrl}/query`, ...params);\n }\n\n /**\n * Create new Insight Spec configuration\n */\n createSpec(body?: InsightSpec) {\n return this.rest.put<EntityResponse<InsightSpec>>(`${this.baseUrl}/spec`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing Insight Spec configuration\n */\n updateSpec(body?: InsightSpec) {\n return this.rest.patch<EntityResponse<InsightSpec>>(`${this.baseUrl}/spec`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete Insight Spec configuration\n */\n deleteSpec(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/spec/${id}`);\n }\n\n /**\n * Get a single Insight Spec by id\n */\n getSpec(id?: string) {\n return this.rest.get<EntityResponse<InsightSpec>>(`${this.baseUrl}/spec/${id}`);\n }\n\n /**\n * Find Insight Specs by query\n */\n findSpecs(accountId?: string, streamId?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<InsightSpec>>(`${this.baseUrl}/spec`, ...params);\n }\n\n /**\n * Find Insight Specs by query but returns list of InsightQuery\n */\n findSpecsQueries(accountId?: string, streamId?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<InsightQuery>>(`${this.baseUrl}/spec-queries`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { Integration } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { EntitiesResponse } from '../model';\n\n// UsrIntegrationsEndPoint is a list of integration related actions \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrIntegrationsService {\n\n // URL to web api\n private baseUrl = '/integrations';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * region Endpoint REST handlers ---------------------------------------------------------------------------------------\n * Create new integration configuration\n */\n create(body?: Integration) {\n return this.rest.put<EntityResponse<Integration>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing integration configuration\n */\n update(body?: Integration) {\n return this.rest.patch<EntityResponse<Integration>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete integration configuration\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single Integration by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Integration>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find integrations by query\n */\n find(accountId?: string, streamId?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Integration>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Validate format of the templates in the fields\n */\n validate(body?: Integration) {\n return this.rest.post<EntityResponse<Integration>>(`${this.baseUrl}/validate`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Test the integration with pseudo data\n */\n test(body?: Integration) {\n return this.rest.post<EntityResponse<Integration>>(`${this.baseUrl}/test`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { ReportInstance } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { ReportSourceCode } from '../model';\n\n// UsrReportsInstanceEndPoint is a list of system reports related actions \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrReportsInstanceService {\n\n // URL to web api\n private baseUrl = '/reports-instance';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Update existing report\n */\n update(body?: ReportInstance) {\n return this.rest.patch<EntityResponse<ReportInstance>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete report\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single report by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<ReportInstance>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find reports by query\n */\n find(accountId?: string, search?: string, sort?: string, page?: number, size?: number, from?: number, to?: number, reportTriggerSource?: ReportSourceCode) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (reportTriggerSource != null) { params.push(`reportTriggerSource=${reportTriggerSource}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<ReportInstance>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Download report file as stream of PDF\n */\n downloadReport(id?: string) {\n return this.rest.download(`usr-reports-instance`,`${this.baseUrl}/${id}/download-report`);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { Rule } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { TimeSeries } from '../model';\nimport { RuleWithSQL } from '../model';\n\n// SysRulesEndPoint is a list of rules related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysRulesService {\n\n // URL to web api\n private baseUrl = '/sys/rules';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * region Endpoint REST handlers ---------------------------------------------------------------------------------------\n * Create new rule configuration\n */\n create(body?: Rule) {\n return this.rest.post<EntityResponse<Rule>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing rule configuration\n */\n update(body?: Rule) {\n return this.rest.put<EntityResponse<Rule>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete rule configuration\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single rule by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Rule>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find rules by query\n */\n find(accountId?: string, streamId?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Rule>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Analyze rule configuration against historic data\n */\n analyze(from?: number, to?: number, interval?: number, size?: number, body?: Rule) {\n const params = [];\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (interval != null) { params.push(`interval=${interval}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.post<EntityResponse<TimeSeries<number>>>(`${this.baseUrl}/analyze`, typeof body === 'object' ? JSON.stringify(body) : body, ...params);\n }\n\n /**\n * Get a single rule with computed SQL statement by rule's id\n */\n getWithSQL(id?: string) {\n return this.rest.get<EntityResponse<RuleWithSQL>>(`${this.baseUrl}/sql/${id}`);\n }\n\n /**\n * Get all active rules from stream id with computed SQL statement\n */\n getWithSQLByStreamId(streamId?: string) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<RuleWithSQL>>(`${this.baseUrl}/sql`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntityResponse } from '../model';\nimport { Distribution } from '../model';\n\n// SysStatisticsEndPoint is a list of statistics for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysStatisticsService {\n\n // URL to web api\n private baseUrl = '/sys/statistics';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Get accounts statistics\n */\n getAccountsCount(field?: string) {\n return this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/accounts/${field}`);\n }\n\n /**\n * Get accounts statistics\n */\n getStreamsCount(field?: string) {\n return this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/streams/${field}`);\n }\n\n /**\n * Get accounts statistics\n */\n getDevicesCount(field?: string) {\n return this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/devices/${field}`);\n }\n\n /**\n * Get accounts statistics\n */\n getUsersCount(field?: string) {\n return this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/users/${field}`);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntityResponse } from '../model';\nimport { SeverityTypeCode } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { Distribution } from '../model';\nimport { TimeSeries } from '../model';\nimport { DeviceActionCode } from '../model';\nimport { Alert } from '../model';\nimport { EventTypeCode } from '../model';\nimport { EventStatusCode } from '../model';\nimport { AlertWithDevice } from '../model';\nimport { StringIntValue } from '../model';\nimport { Tuple } from '../model';\nimport { MaliciousIpCard } from '../model';\nimport { StringKeyValue } from '../model';\n\n// UsrAlertsEndPoint alerts related actions for the operator \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrAlertsService {\n\n // URL to web api\n private baseUrl = '/alerts';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Get a single alert by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Alert>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find alerts by query\n */\n find(streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Alert>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Export alerts by query to a file\n */\n export(format?: string, streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.download(`usr-alerts`,`${this.baseUrl}/export/${format}`, ...params);\n }\n\n /**\n * Export alerts source file as stream of source file (pcap)\n */\n exportSource(id?: string) {\n return this.rest.download(`usr-alerts`,`${this.baseUrl}/${id}/export_source`);\n }\n\n /**\n * Apply status on alert\n */\n setStatus(id?: string, status?: EventStatusCode) {\n return this.rest.post<ActionResponse>(`${this.baseUrl}/${id}/status/${status}`, '');\n }\n\n /**\n * Get top 10 alerts by their severity and time\n */\n findTop(streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntityResponse<AlertWithDevice>>(`${this.baseUrl}/top`, ...params);\n }\n\n /**\n * Get top 10 alerts by their severity and time\n */\n findTopMaliciousIPs(streamId?: string, top?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (top != null) { params.push(`top=${top}`); }\n\n\t\treturn this.rest.get<EntityResponse<StringIntValue>>(`${this.baseUrl}/top-malicious-ips`, ...params);\n }\n\n /**\n * Get alerts distribution by type filtered by query\n */\n countByType(streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-type`, ...params);\n }\n\n /**\n * Get alerts distribution by status filtered by query\n */\n countByStatus(streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-status`, ...params);\n }\n\n /**\n * Get alerts distribution by severity filtered by query\n */\n countBySeverity(streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-severity`, ...params);\n }\n\n /**\n * Get alerts distribution by rule filtered by query\n */\n countByRule(streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-rule`, ...params);\n }\n\n /**\n * Get alerts distribution by category filtered by query\n */\n countByCategory(streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-category`, ...params);\n }\n\n /**\n * Get current shield as ActionResponse, the Key contains the shield index and the data includes the trend\n */\n getShieldex() {\n return this.rest.get<ActionResponse>(`${this.baseUrl}/shieldex`);\n }\n\n /**\n * Get alerts histogram over the provided time period\n */\n alertsTimeline(streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<TimeSeries<Tuple<number, number>[]>>>(`${this.baseUrl}/timeline`, ...params);\n }\n\n /**\n * Get shieldex histogram over the provided time period\n */\n shieldexTimeline(streamId?: string) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n\n\t\treturn this.rest.get<EntityResponse<TimeSeries<number>>>(`${this.baseUrl}/shieldex/timeline`, ...params);\n }\n\n /**\n * Get devices at risk number for specific alerts criteria and return the number of devices at risk for specific alerts criteria\n */\n getDevicesAtRisk(streamId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<ActionResponse>(`${this.baseUrl}/devices-at-risk`, ...params);\n }\n\n /**\n * Get malicious IP data card for specific malicious IP\n */\n getMaliciousIpCard(streamId?: string, targetIp?: string, from?: number, to?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (targetIp != null) { params.push(`targetIp=${targetIp}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n\n\t\treturn this.rest.get<EntityResponse<MaliciousIpCard>>(`${this.baseUrl}/malicious-ip-card`, ...params);\n }\n\n /**\n * Apply DNS lookup for each IP in the list\n */\n getIpLookup(ip?: string) {\n const params = [];\n if (ip != null) { params.push(`ip=${ip}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<StringKeyValue>>(`${this.baseUrl}/ip-lookup`, ...params);\n }\n\n /**\n * Add tag to an alerts\n */\n addTag(id?: string, tag?: string) {\n return this.rest.post<EntityResponse<Alert>>(`${this.baseUrl}/${id}/tags/${tag}`, '');\n }\n\n /**\n * Delete tag from an alert\n */\n deleteTag(id?: string, tag?: string) {\n return this.rest.delete<EntityResponse<Alert>>(`${this.baseUrl}/${id}/tags/${tag}`);\n }\n\n /**\n * Apply action on alert\n */\n applyAction(id?: string, action?: DeviceActionCode) {\n return this.rest.post<ActionResponse>(`${this.baseUrl}/${id}/actions/${action}`, '');\n }\n\n /**\n * Find alerts by query\n */\n findByInsightContext(streamId?: string, insightId?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (insightId != null) { params.push(`insightId=${insightId}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Alert>>(`${this.baseUrl}/find-by-insight-context`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { Member } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { MemberRoleCode } from '../model';\n\n// UsrMembersEndPoint is a list of members related actions for account administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrMembersService {\n\n // URL to web api\n private baseUrl = '/members';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new account member\n */\n create(body?: Member) {\n return this.rest.put<EntityResponse<Member>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing member\n */\n update(body?: Member) {\n return this.rest.patch<EntityResponse<Member>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete member\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single member by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Member>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find members by query\n */\n find(userId?: string, role?: MemberRoleCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (userId != null) { params.push(`userId=${userId}`); }\n if (role != null) { params.push(`role=${role}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Member>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Find registered emails in the system (for auto complete)\n */\n findEmails(search?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Member>>(`${this.baseUrl}/emails`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { Distribution } from '../model';\nimport { FlowRecord } from '../model';\nimport { BoolTypeCode } from '../model';\nimport { NetworkTopologyRecord } from '../model';\nimport { SessionRecord } from '../model';\nimport { EntityResponse } from '../model';\nimport { NetworkTopologyReport } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { UsageRecord } from '../model';\n\n// UsrNetworkEndPoint network statistics related actions for the operator \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrNetworkService {\n\n // URL to web api\n private baseUrl = '/network';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Find usage entities by query\n */\n findUsage(streamId?: string, deviceId?: string, simId?: string, from?: number, to?: number, include?: number, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (simId != null) { params.push(`simId=${simId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (include != null) { params.push(`include=${include}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<UsageRecord>>(`${this.baseUrl}/usage`, ...params);\n }\n\n /**\n * Find session entities by query\n */\n findSession(streamId?: string, deviceId?: string, simId?: string, from?: number, to?: number, include?: number, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (simId != null) { params.push(`simId=${simId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (include != null) { params.push(`include=${include}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<SessionRecord>>(`${this.baseUrl}/session`, ...params);\n }\n\n /**\n * Find most common ports by query\n */\n getMostCommonPorts(streamId?: string, deviceId?: string, from?: number, to?: number, limit?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (limit != null) { params.push(`limit=${limit}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Distribution<number>>>(`${this.baseUrl}/most-common-ports`, ...params);\n }\n\n /**\n * Find most common IPs by query\n */\n getMostCommonIPs(streamId?: string, deviceId?: string, from?: number, to?: number, limit?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (limit != null) { params.push(`limit=${limit}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Distribution<string>>>(`${this.baseUrl}/most-common-ips`, ...params);\n }\n\n /**\n * Find flow data records\n */\n findTraffic(streamId?: string, deviceId?: string, simId?: string, from?: number, to?: number, include?: number, sort?: string, page?: number, size?: number, search?: string) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (simId != null) { params.push(`simId=${simId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (include != null) { params.push(`include=${include}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n if (search != null) { params.push(`search=${search}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<FlowRecord>>(`${this.baseUrl}/traffic`, ...params);\n }\n\n /**\n * Get network topology report with KPIs and distributions for stream (without endpoint records)\n * Use /topology-records endpoint for paginated endpoint records\n */\n getTopologyReport(streamId?: string, dstIp?: string[], dstDns?: string[], dstPort?: number[], protocol?: string[], appProtocol?: string[], name?: string[], country?: string[], malicious?: BoolTypeCode, blocked?: BoolTypeCode) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (dstIp != null) { params.push(`dstIp=${dstIp}`); }\n if (dstDns != null) { params.push(`dstDns=${dstDns}`); }\n if (dstPort != null) { params.push(`dstPort=${dstPort}`); }\n if (protocol != null) { params.push(`protocol=${protocol}`); }\n if (appProtocol != null) { params.push(`appProtocol=${appProtocol}`); }\n if (name != null) { params.push(`name=${name}`); }\n if (country != null) { params.push(`country=${country}`); }\n if (malicious != null) { params.push(`malicious=${malicious}`); }\n if (blocked != null) { params.push(`blocked=${blocked}`); }\n\n\t\treturn this.rest.get<EntityResponse<NetworkTopologyReport>>(`${this.baseUrl}/topology-report`, ...params);\n }\n\n /**\n * Get network topology records for stream\n */\n getTopologyRecords(streamId?: string, dstIp?: string[], dstDns?: string[], dstPort?: number[], protocol?: string[], appProtocol?: string[], name?: string[], country?: string[], malicious?: BoolTypeCode, blocked?: BoolTypeCode, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (dstIp != null) { params.push(`dstIp=${dstIp}`); }\n if (dstDns != null) { params.push(`dstDns=${dstDns}`); }\n if (dstPort != null) { params.push(`dstPort=${dstPort}`); }\n if (protocol != null) { params.push(`protocol=${protocol}`); }\n if (appProtocol != null) { params.push(`appProtocol=${appProtocol}`); }\n if (name != null) { params.push(`name=${name}`); }\n if (country != null) { params.push(`country=${country}`); }\n if (malicious != null) { params.push(`malicious=${malicious}`); }\n if (blocked != null) { params.push(`blocked=${blocked}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<NetworkTopologyRecord>>(`${this.baseUrl}/topology-records`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntityResponse } from '../model';\nimport { NotificationMessageDTO } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { ActionResponse } from '../model';\n\n// UsrNotificationMessagesEndPoint notification messages related actions for the user \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrNotificationMessagesService {\n\n // URL to web api\n private baseUrl = '/notification-messages';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Get a single notification message by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<NotificationMessageDTO>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find notification messages for the current user\n */\n find(isRead?: boolean, sort?: string, page?: number, size?: number) {\n const params = [];\n if (isRead != null) { params.push(`isRead=${isRead}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<NotificationMessageDTO>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Mark a specific notification as read\n */\n markAsRead(id?: string) {\n return this.rest.patch<ActionResponse>(`${this.baseUrl}/${id}/read`, '');\n }\n\n /**\n * Mark all notifications as read for the current user\n */\n markAllAsRead() {\n return this.rest.patch<ActionResponse>(`${this.baseUrl}/mark-all-read`, '');\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { SeverityTypeCode } from '../model';\nimport { RuleActivityStatusCode } from '../model';\nimport { TimeSeries } from '../model';\nimport { Distribution } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { EventTypeCode } from '../model';\nimport { Rule } from '../model';\nimport { RuleWithSQL } from '../model';\n\n// UsrRulesEndPoint is a list of rules related actions \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrRulesService {\n\n // URL to web api\n private baseUrl = '/rules';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * region Endpoint REST handlers ---------------------------------------------------------------------------------------\n * Create new rule configuration\n */\n create(body?: Rule) {\n return this.rest.put<EntityResponse<Rule>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing rule configuration\n */\n update(body?: Rule) {\n return this.rest.patch<EntityResponse<Rule>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete rule configuration\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single rule by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Rule>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single rule with computed SQL statement by rule's id\n */\n getWithSQL(id?: string) {\n return this.rest.get<EntityResponse<RuleWithSQL>>(`${this.baseUrl}/sql/${id}`);\n }\n\n /**\n * Get a all active rules fro stream id with computed SQL statement\n */\n getWithSQLByStreamId(id?: string) {\n return this.rest.get<EntitiesResponse<RuleWithSQL>>(`${this.baseUrl}/sql`);\n }\n\n /**\n * Find rules by query\n */\n find(streamId?: string, search?: string, eventSeverity?: SeverityTypeCode[], activityStatus?: RuleActivityStatusCode[], eventType?: EventTypeCode[], includeSysRules?: boolean, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (eventSeverity != null) { params.push(`eventSeverity=${eventSeverity}`); }\n if (activityStatus != null) { params.push(`activityStatus=${activityStatus}`); }\n if (eventType != null) { params.push(`eventType=${eventType}`); }\n if (includeSysRules != null) { params.push(`includeSysRules=${includeSysRules}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Rule>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Analyze rule configuration against historic data\n */\n analyze(from?: number, to?: number, interval?: number, size?: number, body?: Rule) {\n const params = [];\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (interval != null) { params.push(`interval=${interval}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.post<EntityResponse<TimeSeries<number>>>(`${this.baseUrl}/analyze`, typeof body === 'object' ? JSON.stringify(body) : body, ...params);\n }\n\n /**\n * Get rules distribution by severity filtered by query\n */\n countBySeverity(streamId?: string, search?: string, eventSeverity?: SeverityTypeCode[], activityStatus?: RuleActivityStatusCode[], eventType?: EventTypeCode[], includeSysRules?: boolean) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (eventSeverity != null) { params.push(`eventSeverity=${eventSeverity}`); }\n if (activityStatus != null) { params.push(`activityStatus=${activityStatus}`); }\n if (eventType != null) { params.push(`eventType=${eventType}`); }\n if (includeSysRules != null) { params.push(`includeSysRules=${includeSysRules}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-severity`, ...params);\n }\n\n /**\n * Get alerts count by rule filtered by query\n */\n countAlertsByRule(streamId?: string, search?: string, eventSeverity?: SeverityTypeCode[], activityStatus?: RuleActivityStatusCode[], eventType?: EventTypeCode[], includeSysRules?: boolean) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (eventSeverity != null) { params.push(`eventSeverity=${eventSeverity}`); }\n if (activityStatus != null) { params.push(`activityStatus=${activityStatus}`); }\n if (eventType != null) { params.push(`eventType=${eventType}`); }\n if (includeSysRules != null) { params.push(`includeSysRules=${includeSysRules}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count-alerts/by-rule-id`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { TimeSeries } from '../model';\nimport { EntityResponse } from '../model';\nimport { AuditLog } from '../model';\n\n// SysAuditLogEndPoint is a list of audit log queries for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysAuditLogService {\n\n // URL to web api\n private baseUrl = '/sys/audit-log';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Get a single log entry\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<AuditLog>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find log entries by query\n */\n find(from?: number, to?: number, accountId?: string, userId?: string, action?: string, itemType?: string, itemId?: string, itemName?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (userId != null) { params.push(`userId=${userId}`); }\n if (action != null) { params.push(`action=${action}`); }\n if (itemType != null) { params.push(`itemType=${itemType}`); }\n if (itemId != null) { params.push(`itemId=${itemId}`); }\n if (itemName != null) { params.push(`itemName=${itemName}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<AuditLog>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Get histogram of audit log entries over time\n */\n timeline(from?: number, to?: number, accountId?: string, userId?: string, action?: string, itemType?: string, itemId?: string, itemName?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (userId != null) { params.push(`userId=${userId}`); }\n if (action != null) { params.push(`action=${action}`); }\n if (itemType != null) { params.push(`itemType=${itemType}`); }\n if (itemId != null) { params.push(`itemId=${itemId}`); }\n if (itemName != null) { params.push(`itemName=${itemName}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntityResponse<TimeSeries<number>>>(`${this.baseUrl}/timeline`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { Group } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { User } from '../model';\n\n// SysGroupsEndPoint is a list of groups related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysGroupsService {\n\n // URL to web api\n private baseUrl = '/sys/groups';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new group\n */\n create(body?: Group) {\n return this.rest.put<EntityResponse<Group>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing group\n */\n update(body?: Group) {\n return this.rest.patch<EntityResponse<Group>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete group and remove all its memberships\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single group by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Group>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find groups by query\n */\n find(search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Group>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Get list of all users in the group\n */\n getUsers(id?: string) {\n return this.rest.get<EntitiesResponse<User>>(`${this.baseUrl}/${id}/users`);\n }\n\n /**\n * Add user to the group\n */\n addUser(id?: string, userId?: string) {\n return this.rest.put<ActionResponse>(`${this.baseUrl}/${id}/users/${userId}`, '');\n }\n\n /**\n * Remove user from the group\n */\n removeUser(id?: string, userId?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}/users/${userId}`);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { Member } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { MemberRoleCode } from '../model';\n\n// SysMembersEndPoint is a list of members related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysMembersService {\n\n // URL to web api\n private baseUrl = '/sys/members';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new account member\n */\n create(body?: Member) {\n return this.rest.put<EntityResponse<Member>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing member\n */\n update(body?: Member) {\n return this.rest.patch<EntityResponse<Member>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete member\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single member by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Member>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find members by query\n */\n find(accountId?: string, userId?: string, role?: MemberRoleCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (userId != null) { params.push(`userId=${userId}`); }\n if (role != null) { params.push(`role=${role}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Member>>(`${this.baseUrl}`, ...params);\n }\n\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { provideHttpClient } from '@angular/common/http';\nimport { APP_CONFIG, AppConfig } from './config';\n\n@NgModule({\n imports: [CommonModule]\n})\nexport class NgxPulseiotLibModule {\n static forRoot(config: AppConfig): ModuleWithProviders<NgxPulseiotLibModule> {\n return {\n ngModule: NgxPulseiotLibModule,\n providers: [\n provideHttpClient(),\n { provide: APP_CONFIG, useValue: config }\n ]\n };\n }\n}\n\n","/*\n * Public API Surface of ngx-pulseiot-lib\n */\n\nexport * from './lib/model';\nexport * from './lib/services';\nexport * from './config';\nexport * from './ngx-pulseiot-lib.module'","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.RestUtils"],"mappings":"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"}
1
+ {"version":3,"file":"shieldiot-ngx-pulseiot-lib.mjs","sources":["../../../projects/ngx-pulseiot-lib/src/lib/model/AITasksCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AccountStatusCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/CheckPointStateCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/HomePageViewCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/SeverityTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/UserTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/WSOpCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EventCategoryCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ParserTaskCompletionStatus.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DataSourceCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AccountTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/BoolTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceCreationCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/FeatureCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/IntegrationTriggerCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/IntegrationTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/MemberRoleCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/TimePeriodCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceIdentityCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/InsightSourceCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/InsightStatusCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/InsightTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NotificationTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ReportTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/TrafficDirectionCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/HttpMethodCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/RuleTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceActionCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EventStatusCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EventTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/OperatorCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/PermissionCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ReportSourceCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/UserStatusCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceStatusCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DirectionContextCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NetworkMapTypeCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/RuleActivityStatusCode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/IntegrationContext.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/IntKeyValue.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Node.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Link.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ConsumptionDataPoint.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/BaseEntity.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ColumnDef.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Feature.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/StringKeyValue.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/IntFloatValue.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ZScore.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/TimeSeriesConsumption.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/MaliciousIpCard.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ConditionDescription.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/MapBounds.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AICheckpoint.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/BaseMessage.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/BaseRestResponse.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EntitiesResponse.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NetworkTopology.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/BaseEntityEx.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Alert.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AlertWithDevice.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Event.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NetworkTopologyReportParams.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Stream.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Message.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EntityResponse.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Notification.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Indicator.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Device.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceWithEvents.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Image.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Rule.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/RuleWithSQL.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/SessionRecord.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Location.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/StringIntValue.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NetworkMap.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Action.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceReport.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/FloatInterval.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/MaliciousIPData.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EventWithDevice.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NotificationMessage.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NotificationMessageDTO.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DevicesAtRiskConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/LocalTime.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/IdsRule.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Checkpoint.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NetworkTopologyReportKPIs.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/UserNotificationMessage.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EntityAction.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/SeriesData.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/SeverityIntervalTuple.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ActionResponse.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Entities.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/TimeSeries.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/GeoData.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NetworkTopologyRecord.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ReportInstance.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/IdsList.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EntityRequest.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NotificationMessageStats.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Report.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Timestamp.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/GraphSeries.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/TokenData.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ShieldexConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Distribution.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Shieldex.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/TimeFrame.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DevicesMap.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ApiKey.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EventOccurrence.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/InsightQuery.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/UsageTransform.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Account.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AccountReportDTO.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ConfigParams.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DataIngestion.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/User.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Tuple.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/RegulatoryViolation.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/SessionTransform.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EventSeverityConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/LoginParams.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AccountSettings.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ConfigParam.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/FeaturesGroup.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/ServiceStatus.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/TimeDataPoint.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceNode.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Member.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Group.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/StreamConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AccountRole.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/MitreAttackCategory.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/InsightSpec.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NetworkTopologyReport.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Thresholds.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DNSRecord.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Radius.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeviceScoreConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/SeverityConditionConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/UsageRecord.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EntitiesRequest.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/IdsConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/RuleCountThresholdConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/JsonDoc.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/StreamAnalyticsConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/UserMemberships.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AccountDTO.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AuditLog.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/DeploymentInfo.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/SIM.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Interval.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Json.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/AccountInfo.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Insight.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/SimpleEntity.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/LlmPrompt.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/EntityMessage.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NotificationQueuePayload.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/NetworkEndpoint.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/FlowRecord.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/Integration.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/RuleTemplate.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/errorStruct.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/RuleBasedSeverityConditionConfig.ts","../../../projects/ngx-pulseiot-lib/src/lib/model/UserMembership.ts","../../../projects/ngx-pulseiot-lib/src/config.ts","../../../projects/ngx-pulseiot-lib/src/rest-utils.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrDevicesService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrReportsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrUserService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/McpToolsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysAccountsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysKeysService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysRuleTemplatesService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysStreamsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysUsersService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrEventsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrInsightsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysCheckpointsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysConfigService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysFeaturesService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysIdsRulesService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysInsightsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrIntegrationsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrReportsInstanceService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysRulesService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysStatisticsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrAlertsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrMembersService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrNetworkService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrNotificationMessagesService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/UsrRulesService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysAuditLogService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysGroupsService.ts","../../../projects/ngx-pulseiot-lib/src/lib/services/SysMembersService.ts","../../../projects/ngx-pulseiot-lib/src/ngx-pulseiot-lib.module.ts","../../../projects/ngx-pulseiot-lib/src/public-api.ts","../../../projects/ngx-pulseiot-lib/src/shieldiot-ngx-pulseiot-lib.ts"],"sourcesContent":["\nimport { Tuple } from '.';\n\n\n// AITasksCode represents AI Tasks: USAGE_INFERENCE | USAGE_AD_TRAIN | USAGE_RULE_TRAIN ...\nexport enum AITasksCode {\n\n // USAGE_INFERENCE [0] \n USAGE_INFERENCE = 0,\n\n // USAGE_AD_TRAIN [1] \n USAGE_AD_TRAIN = 1,\n\n // USAGE_RULE_TRAIN [2] \n USAGE_RULE_TRAIN = 2,\n\n}\n\n// Return list of AITasksCode values and their display names\nexport function GetAITasksCodes() : Tuple<AITasksCode, string>[] {\n\tlet result : Tuple<AITasksCode, string>[] = [];\n result.push(new Tuple<AITasksCode, string>(AITasksCode.USAGE_INFERENCE, 'AITasksCode.USAGE_INFERENCE'))\n\tresult.push(new Tuple<AITasksCode, string>(AITasksCode.USAGE_AD_TRAIN, 'AITasksCode.USAGE_AD_TRAIN'))\n\tresult.push(new Tuple<AITasksCode, string>(AITasksCode.USAGE_RULE_TRAIN, 'AITasksCode.USAGE_RULE_TRAIN'))\n\t\n return result;\n}\n\n// Return map of AITasksCode values and their display names\nexport function MapAITasksCodes() : Map<AITasksCode, string> {\n let result = new Map<AITasksCode, string>();\n result.set(AITasksCode.USAGE_INFERENCE, 'Usage Inference');\n\tresult.set(AITasksCode.USAGE_AD_TRAIN, 'Usage Ad Train');\n\tresult.set(AITasksCode.USAGE_RULE_TRAIN, 'Usage Rule Train');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// AccountStatusCode represents the account status: ACTIVE | INACTIVE | SUSPENDED ...\nexport enum AccountStatusCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Active account [1] \n ACTIVE = 1,\n\n // Suspended (non-active) account [2] \n SUSPENDED = 2,\n\n // Deleted account [3] \n DELETED = 3,\n\n}\n\n// Return list of AccountStatusCode values and their display names\nexport function GetAccountStatusCodes() : Tuple<AccountStatusCode, string>[] {\n\tlet result : Tuple<AccountStatusCode, string>[] = [];\n \n\tresult.push(new Tuple<AccountStatusCode, string>(AccountStatusCode.ACTIVE, 'AccountStatusCode.ACTIVE'))\n\tresult.push(new Tuple<AccountStatusCode, string>(AccountStatusCode.SUSPENDED, 'AccountStatusCode.SUSPENDED'))\n\tresult.push(new Tuple<AccountStatusCode, string>(AccountStatusCode.DELETED, 'AccountStatusCode.DELETED'))\n\t\n return result;\n}\n\n// Return map of AccountStatusCode values and their display names\nexport function MapAccountStatusCodes() : Map<AccountStatusCode, string> {\n let result = new Map<AccountStatusCode, string>();\n result.set(AccountStatusCode.UNDEFINED, 'Undefined');\n\tresult.set(AccountStatusCode.ACTIVE, 'Active');\n\tresult.set(AccountStatusCode.SUSPENDED, 'Suspended');\n\tresult.set(AccountStatusCode.DELETED, 'Deleted');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// CheckPointStateCode represents files checkpoint state: CREATED | INPROGRESS | COMPLETED ...\nexport enum CheckPointStateCode {\n\n // Checkpoint Created [0] \n CREATED = 0,\n\n // Checkpoint in-progress [1] \n INPROGRESS = 1,\n\n // Checkpoint Completed [2] \n COMPLETED = 2,\n\n}\n\n// Return list of CheckPointStateCode values and their display names\nexport function GetCheckPointStateCodes() : Tuple<CheckPointStateCode, string>[] {\n\tlet result : Tuple<CheckPointStateCode, string>[] = [];\n result.push(new Tuple<CheckPointStateCode, string>(CheckPointStateCode.CREATED, 'CheckPointStateCode.CREATED'))\n\tresult.push(new Tuple<CheckPointStateCode, string>(CheckPointStateCode.INPROGRESS, 'CheckPointStateCode.INPROGRESS'))\n\tresult.push(new Tuple<CheckPointStateCode, string>(CheckPointStateCode.COMPLETED, 'CheckPointStateCode.COMPLETED'))\n\t\n return result;\n}\n\n// Return map of CheckPointStateCode values and their display names\nexport function MapCheckPointStateCodes() : Map<CheckPointStateCode, string> {\n let result = new Map<CheckPointStateCode, string>();\n result.set(CheckPointStateCode.CREATED, 'Created');\n\tresult.set(CheckPointStateCode.INPROGRESS, 'Inprogress');\n\tresult.set(CheckPointStateCode.COMPLETED, 'Completed');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// HomePageViewCode represents the list of home page views: SYSTEM | DEVICES | MALICIOUS\nexport enum HomePageViewCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // System view [1] \n SYSTEM = 1,\n\n // Devices View [2] \n DEVICES = 2,\n\n // Malicious IP view [3] \n MALICIOUS = 3,\n\n}\n\n// Return list of HomePageViewCode values and their display names\nexport function GetHomePageViewCodes() : Tuple<HomePageViewCode, string>[] {\n\tlet result : Tuple<HomePageViewCode, string>[] = [];\n \n\tresult.push(new Tuple<HomePageViewCode, string>(HomePageViewCode.SYSTEM, 'HomePageViewCode.SYSTEM'))\n\tresult.push(new Tuple<HomePageViewCode, string>(HomePageViewCode.DEVICES, 'HomePageViewCode.DEVICES'))\n\tresult.push(new Tuple<HomePageViewCode, string>(HomePageViewCode.MALICIOUS, 'HomePageViewCode.MALICIOUS'))\n\t\n return result;\n}\n\n// Return map of HomePageViewCode values and their display names\nexport function MapHomePageViewCodes() : Map<HomePageViewCode, string> {\n let result = new Map<HomePageViewCode, string>();\n result.set(HomePageViewCode.UNDEFINED, 'Undefined');\n\tresult.set(HomePageViewCode.SYSTEM, 'System');\n\tresult.set(HomePageViewCode.DEVICES, 'Devices');\n\tresult.set(HomePageViewCode.MALICIOUS, 'Malicious');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// SeverityTypeCode represents the list of event severity levels: LOW | MEDIUM | HIGH | CRITICAL\nexport enum SeverityTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Low severity [1] \n LOW = 1,\n\n // Medium severity [2] \n MEDIUM = 2,\n\n // High severity [3] \n HIGH = 3,\n\n // Critical severity [4] \n CRITICAL = 4,\n\n}\n\n// Return list of SeverityTypeCode values and their display names\nexport function GetSeverityTypeCodes() : Tuple<SeverityTypeCode, string>[] {\n\tlet result : Tuple<SeverityTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<SeverityTypeCode, string>(SeverityTypeCode.LOW, 'SeverityTypeCode.LOW'))\n\tresult.push(new Tuple<SeverityTypeCode, string>(SeverityTypeCode.MEDIUM, 'SeverityTypeCode.MEDIUM'))\n\tresult.push(new Tuple<SeverityTypeCode, string>(SeverityTypeCode.HIGH, 'SeverityTypeCode.HIGH'))\n\tresult.push(new Tuple<SeverityTypeCode, string>(SeverityTypeCode.CRITICAL, 'SeverityTypeCode.CRITICAL'))\n\t\n return result;\n}\n\n// Return map of SeverityTypeCode values and their display names\nexport function MapSeverityTypeCodes() : Map<SeverityTypeCode, string> {\n let result = new Map<SeverityTypeCode, string>();\n result.set(SeverityTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(SeverityTypeCode.LOW, 'Low');\n\tresult.set(SeverityTypeCode.MEDIUM, 'Medium');\n\tresult.set(SeverityTypeCode.HIGH, 'High');\n\tresult.set(SeverityTypeCode.CRITICAL, 'Critical');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// UserTypeCode represents the list of user types: SYSADMIN | SUPPORT | USER | SERVICE ...\nexport enum UserTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // System administrator has access to all accounts and permissions to perform all actions [1] \n SYSADMIN = 1,\n\n // Support user has view permissions only for all accounts that enabled option Enable Support [2] \n SUPPORT = 2,\n\n // Account user - has access to specific accounts with role based access control [3] \n USER = 3,\n\n // Account service - to be used by other systems to perform actions using the API (can't login as a user to the portal) [4] \n SERVICE = 4,\n\n}\n\n// Return list of UserTypeCode values and their display names\nexport function GetUserTypeCodes() : Tuple<UserTypeCode, string>[] {\n\tlet result : Tuple<UserTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<UserTypeCode, string>(UserTypeCode.SYSADMIN, 'UserTypeCode.SYSADMIN'))\n\tresult.push(new Tuple<UserTypeCode, string>(UserTypeCode.SUPPORT, 'UserTypeCode.SUPPORT'))\n\tresult.push(new Tuple<UserTypeCode, string>(UserTypeCode.USER, 'UserTypeCode.USER'))\n\tresult.push(new Tuple<UserTypeCode, string>(UserTypeCode.SERVICE, 'UserTypeCode.SERVICE'))\n\t\n return result;\n}\n\n// Return map of UserTypeCode values and their display names\nexport function MapUserTypeCodes() : Map<UserTypeCode, string> {\n let result = new Map<UserTypeCode, string>();\n result.set(UserTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(UserTypeCode.SYSADMIN, 'Sysadmin');\n\tresult.set(UserTypeCode.SUPPORT, 'Support');\n\tresult.set(UserTypeCode.USER, 'User');\n\tresult.set(UserTypeCode.SERVICE, 'Service');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// WSOpCode represents WebSocket message operation codes\nexport enum WSOpCode {\n\n // Ping message for keep-alive [0] \n PING = 0,\n\n // Notification message sent from server to client [10] \n NOTIFICATION_MESSAGE = 10,\n\n // Notification acknowledgement sent from client to server [11] \n NOTIFICATION_MESSAGE_ACK = 11,\n\n}\n\n// Return list of WSOpCode values and their display names\nexport function GetWSOpCodes() : Tuple<WSOpCode, string>[] {\n\tlet result : Tuple<WSOpCode, string>[] = [];\n result.push(new Tuple<WSOpCode, string>(WSOpCode.PING, 'WSOpCode.PING'))\n\tresult.push(new Tuple<WSOpCode, string>(WSOpCode.NOTIFICATION_MESSAGE, 'WSOpCode.NOTIFICATION_MESSAGE'))\n\tresult.push(new Tuple<WSOpCode, string>(WSOpCode.NOTIFICATION_MESSAGE_ACK, 'WSOpCode.NOTIFICATION_MESSAGE_ACK'))\n\t\n return result;\n}\n\n// Return map of WSOpCode values and their display names\nexport function MapWSOpCodes() : Map<WSOpCode, string> {\n let result = new Map<WSOpCode, string>();\n result.set(WSOpCode.PING, 'Ping');\n\tresult.set(WSOpCode.NOTIFICATION_MESSAGE, 'Notification Message');\n\tresult.set(WSOpCode.NOTIFICATION_MESSAGE_ACK, 'Notification Message Ack');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// EventCategoryCode represents the list of event categories: UNDEFINED | SECURITY | OPERATIONS\nexport enum EventCategoryCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Cyber-Security event [1] \n SECURITY = 1,\n\n // Operational event [2] \n OPERATIONS = 2,\n\n}\n\n// Return list of EventCategoryCode values and their display names\nexport function GetEventCategoryCodes() : Tuple<EventCategoryCode, string>[] {\n\tlet result : Tuple<EventCategoryCode, string>[] = [];\n \n\tresult.push(new Tuple<EventCategoryCode, string>(EventCategoryCode.SECURITY, 'EventCategoryCode.SECURITY'))\n\tresult.push(new Tuple<EventCategoryCode, string>(EventCategoryCode.OPERATIONS, 'EventCategoryCode.OPERATIONS'))\n\t\n return result;\n}\n\n// Return map of EventCategoryCode values and their display names\nexport function MapEventCategoryCodes() : Map<EventCategoryCode, string> {\n let result = new Map<EventCategoryCode, string>();\n result.set(EventCategoryCode.UNDEFINED, 'Undefined');\n\tresult.set(EventCategoryCode.SECURITY, 'Security');\n\tresult.set(EventCategoryCode.OPERATIONS, 'Operations');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// ParserTaskCompletionStatus represents the parser task completion status: SUCCESS | FAILED | FAILED_WAS_ALREADY_COMPLETED | FAILED_ALREADY_INPROGRESS | FAILED_STREAM_DISABLED\nexport enum ParserTaskCompletionStatus {\n\n // Undefined [0] \n SUCCESS = 0,\n\n // Failed [1] \n FAILED = 1,\n\n // Failed, passed task was already completed [2] \n FAILED_WAS_ALREADY_COMPLETED = 2,\n\n // Failed, passed task already in progress \n FAILED_ALREADY_INPROGRESS = 3,\n\n // Failed, stream has been disabled since task published [4] \n FAILED_STREAM_DISABLED = 4,\n\n // Failed, empty files list [5] \n FAILED_EMPTY_FILES_LIST = 5,\n\n}\n\n// Return list of ParserTaskCompletionStatus values and their display names\nexport function GetParserTaskCompletionStatuss() : Tuple<ParserTaskCompletionStatus, string>[] {\n\tlet result : Tuple<ParserTaskCompletionStatus, string>[] = [];\n result.push(new Tuple<ParserTaskCompletionStatus, string>(ParserTaskCompletionStatus.SUCCESS, 'ParserTaskCompletionStatus.SUCCESS'))\n\tresult.push(new Tuple<ParserTaskCompletionStatus, string>(ParserTaskCompletionStatus.FAILED, 'ParserTaskCompletionStatus.FAILED'))\n\tresult.push(new Tuple<ParserTaskCompletionStatus, string>(ParserTaskCompletionStatus.FAILED_WAS_ALREADY_COMPLETED, 'ParserTaskCompletionStatus.FAILED_WAS_ALREADY_COMPLETED'))\n\tresult.push(new Tuple<ParserTaskCompletionStatus, string>(ParserTaskCompletionStatus.FAILED_ALREADY_INPROGRESS, 'ParserTaskCompletionStatus.FAILED_ALREADY_INPROGRESS'))\n\tresult.push(new Tuple<ParserTaskCompletionStatus, string>(ParserTaskCompletionStatus.FAILED_STREAM_DISABLED, 'ParserTaskCompletionStatus.FAILED_STREAM_DISABLED'))\n\tresult.push(new Tuple<ParserTaskCompletionStatus, string>(ParserTaskCompletionStatus.FAILED_EMPTY_FILES_LIST, 'ParserTaskCompletionStatus.FAILED_EMPTY_FILES_LIST'))\n\t\n return result;\n}\n\n// Return map of ParserTaskCompletionStatus values and their display names\nexport function MapParserTaskCompletionStatuss() : Map<ParserTaskCompletionStatus, string> {\n let result = new Map<ParserTaskCompletionStatus, string>();\n result.set(ParserTaskCompletionStatus.SUCCESS, 'Success');\n\tresult.set(ParserTaskCompletionStatus.FAILED, 'Failed');\n\tresult.set(ParserTaskCompletionStatus.FAILED_WAS_ALREADY_COMPLETED, 'Failed Was Already Completed');\n\tresult.set(ParserTaskCompletionStatus.FAILED_ALREADY_INPROGRESS, 'Failed Already Inprogress');\n\tresult.set(ParserTaskCompletionStatus.FAILED_STREAM_DISABLED, 'Failed Stream Disabled');\n\tresult.set(ParserTaskCompletionStatus.FAILED_EMPTY_FILES_LIST, 'Failed Empty Files List');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// DataSourceCode represents data source: EVENT | USAGE | SESSION ...\nexport enum DataSourceCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Data source based on Events [1] \n EVENT = 1,\n\n // Data source based on usage records [2] \n USAGE = 2,\n\n // Data source based on Session records [3] \n SESSION = 3,\n\n // Data source based on Flow records [4] \n FLOW = 4,\n\n}\n\n// Return list of DataSourceCode values and their display names\nexport function GetDataSourceCodes() : Tuple<DataSourceCode, string>[] {\n\tlet result : Tuple<DataSourceCode, string>[] = [];\n \n\tresult.push(new Tuple<DataSourceCode, string>(DataSourceCode.EVENT, 'DataSourceCode.EVENT'))\n\tresult.push(new Tuple<DataSourceCode, string>(DataSourceCode.USAGE, 'DataSourceCode.USAGE'))\n\tresult.push(new Tuple<DataSourceCode, string>(DataSourceCode.SESSION, 'DataSourceCode.SESSION'))\n\tresult.push(new Tuple<DataSourceCode, string>(DataSourceCode.FLOW, 'DataSourceCode.FLOW'))\n\t\n return result;\n}\n\n// Return map of DataSourceCode values and their display names\nexport function MapDataSourceCodes() : Map<DataSourceCode, string> {\n let result = new Map<DataSourceCode, string>();\n result.set(DataSourceCode.UNDEFINED, 'Undefined');\n\tresult.set(DataSourceCode.EVENT, 'Event');\n\tresult.set(DataSourceCode.USAGE, 'Usage');\n\tresult.set(DataSourceCode.SESSION, 'Session');\n\tresult.set(DataSourceCode.FLOW, 'Flow');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// AccountTypeCode represents the account type: DEMO | TRIAL | PARTNER ...\nexport enum AccountTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Demo account [1] \n DEMO = 1,\n\n // Trial account for pilots [2] \n TRIAL = 2,\n\n // Active account for partners [3] \n PARTNER = 3,\n\n // Active account for paying customers [4] \n CUSTOMER = 4,\n\n}\n\n// Return list of AccountTypeCode values and their display names\nexport function GetAccountTypeCodes() : Tuple<AccountTypeCode, string>[] {\n\tlet result : Tuple<AccountTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<AccountTypeCode, string>(AccountTypeCode.DEMO, 'AccountTypeCode.DEMO'))\n\tresult.push(new Tuple<AccountTypeCode, string>(AccountTypeCode.TRIAL, 'AccountTypeCode.TRIAL'))\n\tresult.push(new Tuple<AccountTypeCode, string>(AccountTypeCode.PARTNER, 'AccountTypeCode.PARTNER'))\n\tresult.push(new Tuple<AccountTypeCode, string>(AccountTypeCode.CUSTOMER, 'AccountTypeCode.CUSTOMER'))\n\t\n return result;\n}\n\n// Return map of AccountTypeCode values and their display names\nexport function MapAccountTypeCodes() : Map<AccountTypeCode, string> {\n let result = new Map<AccountTypeCode, string>();\n result.set(AccountTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(AccountTypeCode.DEMO, 'Demo');\n\tresult.set(AccountTypeCode.TRIAL, 'Trial');\n\tresult.set(AccountTypeCode.PARTNER, 'Partner');\n\tresult.set(AccountTypeCode.CUSTOMER, 'Customer');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// BoolTypeCode represents boolean values: UNDEFINED | FALSE | TRUE\nexport enum BoolTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // False [1] \n FALSE = 1,\n\n // True [2] \n TRUE = 2,\n\n}\n\n// Return list of BoolTypeCode values and their display names\nexport function GetBoolTypeCodes() : Tuple<BoolTypeCode, string>[] {\n\tlet result : Tuple<BoolTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<BoolTypeCode, string>(BoolTypeCode.FALSE, 'BoolTypeCode.FALSE'))\n\tresult.push(new Tuple<BoolTypeCode, string>(BoolTypeCode.TRUE, 'BoolTypeCode.TRUE'))\n\t\n return result;\n}\n\n// Return map of BoolTypeCode values and their display names\nexport function MapBoolTypeCodes() : Map<BoolTypeCode, string> {\n let result = new Map<BoolTypeCode, string>();\n result.set(BoolTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(BoolTypeCode.FALSE, 'False');\n\tresult.set(BoolTypeCode.TRUE, 'True');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// DeviceCreationCode represents the list of device creation policy: UNDEFINED | NONE | IP | SID | EID\nexport enum DeviceCreationCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Do not create device [1] \n NONE = 1,\n\n // Create Device based on static IP [2] \n IP = 2,\n\n // Create Device based on Subscriber ID - IMSI [3] \n SID = 3,\n\n // Create Device based on Equipment ID - IMEI [4] \n EID = 4,\n\n}\n\n// Return list of DeviceCreationCode values and their display names\nexport function GetDeviceCreationCodes() : Tuple<DeviceCreationCode, string>[] {\n\tlet result : Tuple<DeviceCreationCode, string>[] = [];\n \n\tresult.push(new Tuple<DeviceCreationCode, string>(DeviceCreationCode.NONE, 'DeviceCreationCode.NONE'))\n\tresult.push(new Tuple<DeviceCreationCode, string>(DeviceCreationCode.IP, 'DeviceCreationCode.IP'))\n\tresult.push(new Tuple<DeviceCreationCode, string>(DeviceCreationCode.SID, 'DeviceCreationCode.SID'))\n\tresult.push(new Tuple<DeviceCreationCode, string>(DeviceCreationCode.EID, 'DeviceCreationCode.EID'))\n\t\n return result;\n}\n\n// Return map of DeviceCreationCode values and their display names\nexport function MapDeviceCreationCodes() : Map<DeviceCreationCode, string> {\n let result = new Map<DeviceCreationCode, string>();\n result.set(DeviceCreationCode.UNDEFINED, 'Undefined');\n\tresult.set(DeviceCreationCode.NONE, 'None');\n\tresult.set(DeviceCreationCode.IP, 'Ip');\n\tresult.set(DeviceCreationCode.SID, 'Sid');\n\tresult.set(DeviceCreationCode.EID, 'Eid');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// FeatureCode represents the list of features: EVENTS_EXPORT\nexport enum FeatureCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Events export [1] \n EVENTS_EXPORT = 1,\n\n // Event source files [2] \n EVENT_SOURCE_FILES = 2,\n\n // Event preventive actions [3] \n EVENT_ACTION = 3,\n\n // Devices export [4] \n DEVICES_EXPORT = 4,\n\n // Device network map [5] \n DEVICE_NETWORK_MAP = 5,\n\n // Device preventive actions [6] \n DEVICE_ACTIONS = 6,\n\n // Network map [7] \n NETWORK_MAP = 7,\n\n // Compliance report [8] \n COMPLIANCE_REPORTS = 8,\n\n // User defined rules [9] \n CUSTOM_RULES = 9,\n\n // Integrations [10] \n INTEGRATIONS = 10,\n\n // General upgrade button [11] \n GENERAL_UPGRADE = 11,\n\n // Enable add/delete device actions [12] \n ADD_DELETE_DEVICE = 12,\n\n // AI based insights [13] \n ADVANCED_INSIGHTS = 13,\n\n}\n\n// Return list of FeatureCode values and their display names\nexport function GetFeatureCodes() : Tuple<FeatureCode, string>[] {\n\tlet result : Tuple<FeatureCode, string>[] = [];\n \n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.EVENTS_EXPORT, 'FeatureCode.EVENTS_EXPORT'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.EVENT_SOURCE_FILES, 'FeatureCode.EVENT_SOURCE_FILES'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.EVENT_ACTION, 'FeatureCode.EVENT_ACTION'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.DEVICES_EXPORT, 'FeatureCode.DEVICES_EXPORT'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.DEVICE_NETWORK_MAP, 'FeatureCode.DEVICE_NETWORK_MAP'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.DEVICE_ACTIONS, 'FeatureCode.DEVICE_ACTIONS'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.NETWORK_MAP, 'FeatureCode.NETWORK_MAP'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.COMPLIANCE_REPORTS, 'FeatureCode.COMPLIANCE_REPORTS'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.CUSTOM_RULES, 'FeatureCode.CUSTOM_RULES'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.INTEGRATIONS, 'FeatureCode.INTEGRATIONS'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.GENERAL_UPGRADE, 'FeatureCode.GENERAL_UPGRADE'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.ADD_DELETE_DEVICE, 'FeatureCode.ADD_DELETE_DEVICE'))\n\tresult.push(new Tuple<FeatureCode, string>(FeatureCode.ADVANCED_INSIGHTS, 'FeatureCode.ADVANCED_INSIGHTS'))\n\t\n return result;\n}\n\n// Return map of FeatureCode values and their display names\nexport function MapFeatureCodes() : Map<FeatureCode, string> {\n let result = new Map<FeatureCode, string>();\n result.set(FeatureCode.UNDEFINED, 'Undefined');\n\tresult.set(FeatureCode.EVENTS_EXPORT, 'Events Export');\n\tresult.set(FeatureCode.EVENT_SOURCE_FILES, 'Event Source Files');\n\tresult.set(FeatureCode.EVENT_ACTION, 'Event Action');\n\tresult.set(FeatureCode.DEVICES_EXPORT, 'Devices Export');\n\tresult.set(FeatureCode.DEVICE_NETWORK_MAP, 'Device Network Map');\n\tresult.set(FeatureCode.DEVICE_ACTIONS, 'Device Actions');\n\tresult.set(FeatureCode.NETWORK_MAP, 'Network Map');\n\tresult.set(FeatureCode.COMPLIANCE_REPORTS, 'Compliance Reports');\n\tresult.set(FeatureCode.CUSTOM_RULES, 'Custom Rules');\n\tresult.set(FeatureCode.INTEGRATIONS, 'Integrations');\n\tresult.set(FeatureCode.GENERAL_UPGRADE, 'General Upgrade');\n\tresult.set(FeatureCode.ADD_DELETE_DEVICE, 'Add Delete Device');\n\tresult.set(FeatureCode.ADVANCED_INSIGHTS, 'Advanced Insights');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// IntegrationTriggerCode represents integration types: EVENT | ACTION\nexport enum IntegrationTriggerCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // EVENT based integration [1] \n EVENT = 1,\n\n // ACTION based integration [2] \n ACTION = 2,\n\n}\n\n// Return list of IntegrationTriggerCode values and their display names\nexport function GetIntegrationTriggerCodes() : Tuple<IntegrationTriggerCode, string>[] {\n\tlet result : Tuple<IntegrationTriggerCode, string>[] = [];\n \n\tresult.push(new Tuple<IntegrationTriggerCode, string>(IntegrationTriggerCode.EVENT, 'IntegrationTriggerCode.EVENT'))\n\tresult.push(new Tuple<IntegrationTriggerCode, string>(IntegrationTriggerCode.ACTION, 'IntegrationTriggerCode.ACTION'))\n\t\n return result;\n}\n\n// Return map of IntegrationTriggerCode values and their display names\nexport function MapIntegrationTriggerCodes() : Map<IntegrationTriggerCode, string> {\n let result = new Map<IntegrationTriggerCode, string>();\n result.set(IntegrationTriggerCode.UNDEFINED, 'Undefined');\n\tresult.set(IntegrationTriggerCode.EVENT, 'Event');\n\tresult.set(IntegrationTriggerCode.ACTION, 'Action');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// IntegrationTypeCode represents integration types: HTTP | SMTP | EMAIL | SMS\nexport enum IntegrationTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // General HTTP(S) based integration [1] \n HTTP = 1,\n\n // General SMTP based integration [2] \n SMTP = 2,\n\n // Internal email service integration [3] \n EMAIL = 3,\n\n // Internal SMS service integration [4] \n SMS = 4,\n\n}\n\n// Return list of IntegrationTypeCode values and their display names\nexport function GetIntegrationTypeCodes() : Tuple<IntegrationTypeCode, string>[] {\n\tlet result : Tuple<IntegrationTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<IntegrationTypeCode, string>(IntegrationTypeCode.HTTP, 'IntegrationTypeCode.HTTP'))\n\tresult.push(new Tuple<IntegrationTypeCode, string>(IntegrationTypeCode.SMTP, 'IntegrationTypeCode.SMTP'))\n\tresult.push(new Tuple<IntegrationTypeCode, string>(IntegrationTypeCode.EMAIL, 'IntegrationTypeCode.EMAIL'))\n\tresult.push(new Tuple<IntegrationTypeCode, string>(IntegrationTypeCode.SMS, 'IntegrationTypeCode.SMS'))\n\t\n return result;\n}\n\n// Return map of IntegrationTypeCode values and their display names\nexport function MapIntegrationTypeCodes() : Map<IntegrationTypeCode, string> {\n let result = new Map<IntegrationTypeCode, string>();\n result.set(IntegrationTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(IntegrationTypeCode.HTTP, 'Http');\n\tresult.set(IntegrationTypeCode.SMTP, 'Smtp');\n\tresult.set(IntegrationTypeCode.EMAIL, 'Email');\n\tresult.set(IntegrationTypeCode.SMS, 'Sms');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// MemberRoleCode represents the list of roles available for a user in the account: ADMIN | SUPERVISOR | OPERATOR ...\nexport enum MemberRoleCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Account administrator can perform all operations [1] \n ADMIN = 1,\n\n // Supervisor can perform operations on events and generate reports [2] \n SUPERVISOR = 2,\n\n // Account operator can perform operations on events only [3] \n OPERATOR = 3,\n\n // Viewer has read-only permissions only [4] \n VIEWER = 4,\n\n}\n\n// Return list of MemberRoleCode values and their display names\nexport function GetMemberRoleCodes() : Tuple<MemberRoleCode, string>[] {\n\tlet result : Tuple<MemberRoleCode, string>[] = [];\n \n\tresult.push(new Tuple<MemberRoleCode, string>(MemberRoleCode.ADMIN, 'MemberRoleCode.ADMIN'))\n\tresult.push(new Tuple<MemberRoleCode, string>(MemberRoleCode.SUPERVISOR, 'MemberRoleCode.SUPERVISOR'))\n\tresult.push(new Tuple<MemberRoleCode, string>(MemberRoleCode.OPERATOR, 'MemberRoleCode.OPERATOR'))\n\tresult.push(new Tuple<MemberRoleCode, string>(MemberRoleCode.VIEWER, 'MemberRoleCode.VIEWER'))\n\t\n return result;\n}\n\n// Return map of MemberRoleCode values and their display names\nexport function MapMemberRoleCodes() : Map<MemberRoleCode, string> {\n let result = new Map<MemberRoleCode, string>();\n result.set(MemberRoleCode.UNDEFINED, 'Undefined');\n\tresult.set(MemberRoleCode.ADMIN, 'Admin');\n\tresult.set(MemberRoleCode.SUPERVISOR, 'Supervisor');\n\tresult.set(MemberRoleCode.OPERATOR, 'Operator');\n\tresult.set(MemberRoleCode.VIEWER, 'Viewer');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// TimePeriodCode represents a code for a time period (e.g., Minute, Hour, Day).\nexport enum TimePeriodCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Minute [1] \n MINUTE = 1,\n\n // Hour [2] \n HOUR = 2,\n\n // Day [3] \n DAY = 3,\n\n // Week [4] \n WEEK = 4,\n\n // Month [5] \n MONTH = 5,\n\n}\n\n// Return list of TimePeriodCode values and their display names\nexport function GetTimePeriodCodes() : Tuple<TimePeriodCode, string>[] {\n\tlet result : Tuple<TimePeriodCode, string>[] = [];\n \n\tresult.push(new Tuple<TimePeriodCode, string>(TimePeriodCode.MINUTE, 'TimePeriodCode.MINUTE'))\n\tresult.push(new Tuple<TimePeriodCode, string>(TimePeriodCode.HOUR, 'TimePeriodCode.HOUR'))\n\tresult.push(new Tuple<TimePeriodCode, string>(TimePeriodCode.DAY, 'TimePeriodCode.DAY'))\n\tresult.push(new Tuple<TimePeriodCode, string>(TimePeriodCode.WEEK, 'TimePeriodCode.WEEK'))\n\tresult.push(new Tuple<TimePeriodCode, string>(TimePeriodCode.MONTH, 'TimePeriodCode.MONTH'))\n\t\n return result;\n}\n\n// Return map of TimePeriodCode values and their display names\nexport function MapTimePeriodCodes() : Map<TimePeriodCode, string> {\n let result = new Map<TimePeriodCode, string>();\n result.set(TimePeriodCode.UNDEFINED, 'Undefined');\n\tresult.set(TimePeriodCode.MINUTE, 'Minute');\n\tresult.set(TimePeriodCode.HOUR, 'Hour');\n\tresult.set(TimePeriodCode.DAY, 'Day');\n\tresult.set(TimePeriodCode.WEEK, 'Week');\n\tresult.set(TimePeriodCode.MONTH, 'Month');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// DeviceIdentityCode represents the list of device Identity policy : AUTO | IP | IMSI | ICCID | MSISDN | IMEI | MAC\nexport enum DeviceIdentityCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Device Identity is provided by the system [1] \n AUTO = 1,\n\n // Device Identity is based on static IP [2] \n IP = 2,\n\n // Device Identity is based on Subscriber ID - IMSI [3] \n IMSI = 3,\n\n // Device Identity is based on IccId [4] \n ICCID = 4,\n\n // Device Identity is based on msisdn [5] \n MSISDN = 5,\n\n // Device Identity is based on Equipment ID - IMEI [6] \n IMEI = 6,\n\n // Device Identity is based on MAC address [7] \n MAC = 7,\n\n}\n\n// Return list of DeviceIdentityCode values and their display names\nexport function GetDeviceIdentityCodes() : Tuple<DeviceIdentityCode, string>[] {\n\tlet result : Tuple<DeviceIdentityCode, string>[] = [];\n \n\tresult.push(new Tuple<DeviceIdentityCode, string>(DeviceIdentityCode.AUTO, 'DeviceIdentityCode.AUTO'))\n\tresult.push(new Tuple<DeviceIdentityCode, string>(DeviceIdentityCode.IP, 'DeviceIdentityCode.IP'))\n\tresult.push(new Tuple<DeviceIdentityCode, string>(DeviceIdentityCode.IMSI, 'DeviceIdentityCode.IMSI'))\n\tresult.push(new Tuple<DeviceIdentityCode, string>(DeviceIdentityCode.ICCID, 'DeviceIdentityCode.ICCID'))\n\tresult.push(new Tuple<DeviceIdentityCode, string>(DeviceIdentityCode.MSISDN, 'DeviceIdentityCode.MSISDN'))\n\tresult.push(new Tuple<DeviceIdentityCode, string>(DeviceIdentityCode.IMEI, 'DeviceIdentityCode.IMEI'))\n\tresult.push(new Tuple<DeviceIdentityCode, string>(DeviceIdentityCode.MAC, 'DeviceIdentityCode.MAC'))\n\t\n return result;\n}\n\n// Return map of DeviceIdentityCode values and their display names\nexport function MapDeviceIdentityCodes() : Map<DeviceIdentityCode, string> {\n let result = new Map<DeviceIdentityCode, string>();\n result.set(DeviceIdentityCode.UNDEFINED, 'Undefined');\n\tresult.set(DeviceIdentityCode.AUTO, 'Auto');\n\tresult.set(DeviceIdentityCode.IP, 'Ip');\n\tresult.set(DeviceIdentityCode.IMSI, 'Imsi');\n\tresult.set(DeviceIdentityCode.ICCID, 'Iccid');\n\tresult.set(DeviceIdentityCode.MSISDN, 'Msisdn');\n\tresult.set(DeviceIdentityCode.IMEI, 'Imei');\n\tresult.set(DeviceIdentityCode.MAC, 'Mac');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// InsightSourceCode represents the list of insight sources: USAGE | EVENT | ALERT\nexport enum InsightSourceCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Inactive (muted) insight [1] \n USAGE = 1,\n\n // Pending insight (not visible yet - for testing only) [2] \n EVENT = 2,\n\n // Active insight [3] \n ALERT = 3,\n\n}\n\n// Return list of InsightSourceCode values and their display names\nexport function GetInsightSourceCodes() : Tuple<InsightSourceCode, string>[] {\n\tlet result : Tuple<InsightSourceCode, string>[] = [];\n \n\tresult.push(new Tuple<InsightSourceCode, string>(InsightSourceCode.USAGE, 'InsightSourceCode.USAGE'))\n\tresult.push(new Tuple<InsightSourceCode, string>(InsightSourceCode.EVENT, 'InsightSourceCode.EVENT'))\n\tresult.push(new Tuple<InsightSourceCode, string>(InsightSourceCode.ALERT, 'InsightSourceCode.ALERT'))\n\t\n return result;\n}\n\n// Return map of InsightSourceCode values and their display names\nexport function MapInsightSourceCodes() : Map<InsightSourceCode, string> {\n let result = new Map<InsightSourceCode, string>();\n result.set(InsightSourceCode.UNDEFINED, 'Undefined');\n\tresult.set(InsightSourceCode.USAGE, 'Usage');\n\tresult.set(InsightSourceCode.EVENT, 'Event');\n\tresult.set(InsightSourceCode.ALERT, 'Alert');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// InsightStatusCode represents the list of insight statuses: INACTIVE | PENDING | ACTIVE\nexport enum InsightStatusCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Inactive (muted) insight [1] \n INACTIVE = 1,\n\n // Pending insight (not visible yet - for testing only) [2] \n PENDING = 2,\n\n // Active insight [3] \n ACTIVE = 3,\n\n}\n\n// Return list of InsightStatusCode values and their display names\nexport function GetInsightStatusCodes() : Tuple<InsightStatusCode, string>[] {\n\tlet result : Tuple<InsightStatusCode, string>[] = [];\n \n\tresult.push(new Tuple<InsightStatusCode, string>(InsightStatusCode.INACTIVE, 'InsightStatusCode.INACTIVE'))\n\tresult.push(new Tuple<InsightStatusCode, string>(InsightStatusCode.PENDING, 'InsightStatusCode.PENDING'))\n\tresult.push(new Tuple<InsightStatusCode, string>(InsightStatusCode.ACTIVE, 'InsightStatusCode.ACTIVE'))\n\t\n return result;\n}\n\n// Return map of InsightStatusCode values and their display names\nexport function MapInsightStatusCodes() : Map<InsightStatusCode, string> {\n let result = new Map<InsightStatusCode, string>();\n result.set(InsightStatusCode.UNDEFINED, 'Undefined');\n\tresult.set(InsightStatusCode.INACTIVE, 'Inactive');\n\tresult.set(InsightStatusCode.PENDING, 'Pending');\n\tresult.set(InsightStatusCode.ACTIVE, 'Active');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// InsightTypeCode represents the list of insights types: EVENTS | STATISTICS | AI_BASED\nexport enum InsightTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Event Group insight [1] \n EVENTS = 2,\n\n // Statistical insight [2] \n STATISTICS = 2,\n\n // AI/ML-based insight [3] \n AI_BASED = 3,\n\n}\n\n// Return list of InsightTypeCode values and their display names\nexport function GetInsightTypeCodes() : Tuple<InsightTypeCode, string>[] {\n\tlet result : Tuple<InsightTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<InsightTypeCode, string>(InsightTypeCode.EVENTS, 'InsightTypeCode.EVENTS'))\n\tresult.push(new Tuple<InsightTypeCode, string>(InsightTypeCode.STATISTICS, 'InsightTypeCode.STATISTICS'))\n\tresult.push(new Tuple<InsightTypeCode, string>(InsightTypeCode.AI_BASED, 'InsightTypeCode.AI_BASED'))\n\t\n return result;\n}\n\n// Return map of InsightTypeCode values and their display names\nexport function MapInsightTypeCodes() : Map<InsightTypeCode, string> {\n let result = new Map<InsightTypeCode, string>();\n result.set(InsightTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(InsightTypeCode.EVENTS, 'Events');\n\tresult.set(InsightTypeCode.STATISTICS, 'Statistics');\n\tresult.set(InsightTypeCode.AI_BASED, 'Ai Based');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// NotificationTypeCode represents the list of notification types: ONBOARDING | IS_READY | REPORTS_COUNT_TO_SEND\nexport enum NotificationTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Onboarding has started [1] \n ACCOUNT_ONBOARDING = 1,\n\n // Account is ready [2] \n ACCOUNT_IS_READY = 2,\n\n // Reports count to send [3] \n REPORTS_COUNT_TO_SEND = 3,\n\n // Report [4] \n REPORT = 4,\n\n // SYSTEM [5] \n SYSTEM = 5,\n\n // DEVICE [6] \n DEVICE = 6,\n\n}\n\n// Return list of NotificationTypeCode values and their display names\nexport function GetNotificationTypeCodes() : Tuple<NotificationTypeCode, string>[] {\n\tlet result : Tuple<NotificationTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<NotificationTypeCode, string>(NotificationTypeCode.ACCOUNT_ONBOARDING, 'NotificationTypeCode.ACCOUNT_ONBOARDING'))\n\tresult.push(new Tuple<NotificationTypeCode, string>(NotificationTypeCode.ACCOUNT_IS_READY, 'NotificationTypeCode.ACCOUNT_IS_READY'))\n\tresult.push(new Tuple<NotificationTypeCode, string>(NotificationTypeCode.REPORTS_COUNT_TO_SEND, 'NotificationTypeCode.REPORTS_COUNT_TO_SEND'))\n\tresult.push(new Tuple<NotificationTypeCode, string>(NotificationTypeCode.REPORT, 'NotificationTypeCode.REPORT'))\n\tresult.push(new Tuple<NotificationTypeCode, string>(NotificationTypeCode.SYSTEM, 'NotificationTypeCode.SYSTEM'))\n\tresult.push(new Tuple<NotificationTypeCode, string>(NotificationTypeCode.DEVICE, 'NotificationTypeCode.DEVICE'))\n\t\n return result;\n}\n\n// Return map of NotificationTypeCode values and their display names\nexport function MapNotificationTypeCodes() : Map<NotificationTypeCode, string> {\n let result = new Map<NotificationTypeCode, string>();\n result.set(NotificationTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(NotificationTypeCode.ACCOUNT_ONBOARDING, 'Account Onboarding');\n\tresult.set(NotificationTypeCode.ACCOUNT_IS_READY, 'Account Is Ready');\n\tresult.set(NotificationTypeCode.REPORTS_COUNT_TO_SEND, 'Reports Count To Send');\n\tresult.set(NotificationTypeCode.REPORT, 'Report');\n\tresult.set(NotificationTypeCode.SYSTEM, 'System');\n\tresult.set(NotificationTypeCode.DEVICE, 'Device');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// ReportTypeCode represents the list of report types: COMPLIANCE | DEVICES | EVENTS ...\nexport enum ReportTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Compliance report [1] \n COMPLIANCE = 1,\n\n // Devices report [2] \n DEVICES = 2,\n\n // Events report [3] \n EVENTS = 3,\n\n}\n\n// Return list of ReportTypeCode values and their display names\nexport function GetReportTypeCodes() : Tuple<ReportTypeCode, string>[] {\n\tlet result : Tuple<ReportTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<ReportTypeCode, string>(ReportTypeCode.COMPLIANCE, 'ReportTypeCode.COMPLIANCE'))\n\tresult.push(new Tuple<ReportTypeCode, string>(ReportTypeCode.DEVICES, 'ReportTypeCode.DEVICES'))\n\tresult.push(new Tuple<ReportTypeCode, string>(ReportTypeCode.EVENTS, 'ReportTypeCode.EVENTS'))\n\t\n return result;\n}\n\n// Return map of ReportTypeCode values and their display names\nexport function MapReportTypeCodes() : Map<ReportTypeCode, string> {\n let result = new Map<ReportTypeCode, string>();\n result.set(ReportTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(ReportTypeCode.COMPLIANCE, 'Compliance');\n\tresult.set(ReportTypeCode.DEVICES, 'Devices');\n\tresult.set(ReportTypeCode.EVENTS, 'Events');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// TrafficDirectionCode represents direction of network flow: INBOUND | OUTBOUND\nexport enum TrafficDirectionCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Denotes inbound network traffic [1] \n INBOUND = 1,\n\n // Denotes outbound network traffic [2] \n OUTBOUND = 2,\n\n // Denotes bidirectional network traffic [3] \n INOUT = 3,\n\n}\n\n// Return list of TrafficDirectionCode values and their display names\nexport function GetTrafficDirectionCodes() : Tuple<TrafficDirectionCode, string>[] {\n\tlet result : Tuple<TrafficDirectionCode, string>[] = [];\n \n\tresult.push(new Tuple<TrafficDirectionCode, string>(TrafficDirectionCode.INBOUND, 'TrafficDirectionCode.INBOUND'))\n\tresult.push(new Tuple<TrafficDirectionCode, string>(TrafficDirectionCode.OUTBOUND, 'TrafficDirectionCode.OUTBOUND'))\n\tresult.push(new Tuple<TrafficDirectionCode, string>(TrafficDirectionCode.INOUT, 'TrafficDirectionCode.INOUT'))\n\t\n return result;\n}\n\n// Return map of TrafficDirectionCode values and their display names\nexport function MapTrafficDirectionCodes() : Map<TrafficDirectionCode, string> {\n let result = new Map<TrafficDirectionCode, string>();\n result.set(TrafficDirectionCode.UNDEFINED, 'Undefined');\n\tresult.set(TrafficDirectionCode.INBOUND, 'Inbound');\n\tresult.set(TrafficDirectionCode.OUTBOUND, 'Outbound');\n\tresult.set(TrafficDirectionCode.INOUT, 'Inout');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// HttpMethodCode represents the list of HTTP methods: GET | POST | PUT | PATCH | DELETED\nexport enum HttpMethodCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // GET [1] \n GET = 1,\n\n // POST [2] \n POST = 2,\n\n // PUT [3] \n PUT = 3,\n\n // PATCH [4] \n PATCH = 4,\n\n // Deleted account [5] \n DELETED = 5,\n\n}\n\n// Return list of HttpMethodCode values and their display names\nexport function GetHttpMethodCodes() : Tuple<HttpMethodCode, string>[] {\n\tlet result : Tuple<HttpMethodCode, string>[] = [];\n \n\tresult.push(new Tuple<HttpMethodCode, string>(HttpMethodCode.GET, 'HttpMethodCode.GET'))\n\tresult.push(new Tuple<HttpMethodCode, string>(HttpMethodCode.POST, 'HttpMethodCode.POST'))\n\tresult.push(new Tuple<HttpMethodCode, string>(HttpMethodCode.PUT, 'HttpMethodCode.PUT'))\n\tresult.push(new Tuple<HttpMethodCode, string>(HttpMethodCode.PATCH, 'HttpMethodCode.PATCH'))\n\tresult.push(new Tuple<HttpMethodCode, string>(HttpMethodCode.DELETED, 'HttpMethodCode.DELETED'))\n\t\n return result;\n}\n\n// Return map of HttpMethodCode values and their display names\nexport function MapHttpMethodCodes() : Map<HttpMethodCode, string> {\n let result = new Map<HttpMethodCode, string>();\n result.set(HttpMethodCode.UNDEFINED, 'Undefined');\n\tresult.set(HttpMethodCode.GET, 'Get');\n\tresult.set(HttpMethodCode.POST, 'Post');\n\tresult.set(HttpMethodCode.PUT, 'Put');\n\tresult.set(HttpMethodCode.PATCH, 'Patch');\n\tresult.set(HttpMethodCode.DELETED, 'Deleted');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// RuleTypeCode represents the sources (engines) of rules: SUSPICIOUS_IP | STATIC | ANOMALY | IDS ...\nexport enum RuleTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Suspicious IP based on IP reputation engine [1] \n SUSPICIOUS_IP = 1,\n\n // Static rule based on deterministic rule engine [2] \n STATIC = 2,\n\n // Rule based on anomaly detection and classification [3] \n ANOMALY = 3,\n\n // IDS Rule based on IDS engine [4] \n IDS = 4,\n\n}\n\n// Return list of RuleTypeCode values and their display names\nexport function GetRuleTypeCodes() : Tuple<RuleTypeCode, string>[] {\n\tlet result : Tuple<RuleTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<RuleTypeCode, string>(RuleTypeCode.SUSPICIOUS_IP, 'RuleTypeCode.SUSPICIOUS_IP'))\n\tresult.push(new Tuple<RuleTypeCode, string>(RuleTypeCode.STATIC, 'RuleTypeCode.STATIC'))\n\tresult.push(new Tuple<RuleTypeCode, string>(RuleTypeCode.ANOMALY, 'RuleTypeCode.ANOMALY'))\n\tresult.push(new Tuple<RuleTypeCode, string>(RuleTypeCode.IDS, 'RuleTypeCode.IDS'))\n\t\n return result;\n}\n\n// Return map of RuleTypeCode values and their display names\nexport function MapRuleTypeCodes() : Map<RuleTypeCode, string> {\n let result = new Map<RuleTypeCode, string>();\n result.set(RuleTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(RuleTypeCode.SUSPICIOUS_IP, 'Suspicious Ip');\n\tresult.set(RuleTypeCode.STATIC, 'Static');\n\tresult.set(RuleTypeCode.ANOMALY, 'Anomaly');\n\tresult.set(RuleTypeCode.IDS, 'Ids');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// DeviceActionCode represents device related preventive actions: REDIRECT | SUSPEND | THROTTLE ...\nexport enum DeviceActionCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Redirect device traffic [1] \n REDIRECT = 1,\n\n // Suspend device [2] \n SUSPEND = 2,\n\n // Throttle device traffic [3] \n THROTTLE = 3,\n\n // Block specific IP [4] \n BLOCK_IP = 4,\n\n // Unsuspend device [5] \n UNSUSPEND = 5,\n\n}\n\n// Return list of DeviceActionCode values and their display names\nexport function GetDeviceActionCodes() : Tuple<DeviceActionCode, string>[] {\n\tlet result : Tuple<DeviceActionCode, string>[] = [];\n \n\tresult.push(new Tuple<DeviceActionCode, string>(DeviceActionCode.REDIRECT, 'DeviceActionCode.REDIRECT'))\n\tresult.push(new Tuple<DeviceActionCode, string>(DeviceActionCode.SUSPEND, 'DeviceActionCode.SUSPEND'))\n\tresult.push(new Tuple<DeviceActionCode, string>(DeviceActionCode.THROTTLE, 'DeviceActionCode.THROTTLE'))\n\tresult.push(new Tuple<DeviceActionCode, string>(DeviceActionCode.BLOCK_IP, 'DeviceActionCode.BLOCK_IP'))\n\tresult.push(new Tuple<DeviceActionCode, string>(DeviceActionCode.UNSUSPEND, 'DeviceActionCode.UNSUSPEND'))\n\t\n return result;\n}\n\n// Return map of DeviceActionCode values and their display names\nexport function MapDeviceActionCodes() : Map<DeviceActionCode, string> {\n let result = new Map<DeviceActionCode, string>();\n result.set(DeviceActionCode.UNDEFINED, 'Undefined');\n\tresult.set(DeviceActionCode.REDIRECT, 'Redirect');\n\tresult.set(DeviceActionCode.SUSPEND, 'Suspend');\n\tresult.set(DeviceActionCode.THROTTLE, 'Throttle');\n\tresult.set(DeviceActionCode.BLOCK_IP, 'Block Ip');\n\tresult.set(DeviceActionCode.UNSUSPEND, 'Unsuspend');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// DeviceTypeCode represents device types: CONTROLLER | METER | SENSOR | CAMERA | POS ...\nexport enum DeviceTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Other (Unknown Device) [1] \n OTHER = 1,\n\n // Industrial Controller [2] \n CONTROLLER = 2,\n\n // General smart meter [3] \n METER = 3,\n\n // General sensor [4] \n SENSOR = 4,\n\n // General camera [5] \n CAMERA = 5,\n\n // Point of sale [6] \n POS = 6,\n\n // Pump [7] \n PUMP = 7,\n\n // EV charging station' [8] \n CHARGING_STATION = 8,\n\n // Smart lightning [9] \n LIGHTNING = 9,\n\n // Temperature sensor [10] \n TEMPERATURE_SENSOR = 10,\n\n // Air Quality sensor [11] \n AIR_QUALITY_SENSOR = 11,\n\n // Valve [12] \n VALVE = 12,\n\n // Gateway [13] \n GATEWAY = 13,\n\n // ATM [14] \n ATM = 14,\n\n}\n\n// Return list of DeviceTypeCode values and their display names\nexport function GetDeviceTypeCodes() : Tuple<DeviceTypeCode, string>[] {\n\tlet result : Tuple<DeviceTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.OTHER, 'DeviceTypeCode.OTHER'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.CONTROLLER, 'DeviceTypeCode.CONTROLLER'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.METER, 'DeviceTypeCode.METER'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.SENSOR, 'DeviceTypeCode.SENSOR'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.CAMERA, 'DeviceTypeCode.CAMERA'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.POS, 'DeviceTypeCode.POS'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.PUMP, 'DeviceTypeCode.PUMP'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.CHARGING_STATION, 'DeviceTypeCode.CHARGING_STATION'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.LIGHTNING, 'DeviceTypeCode.LIGHTNING'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.TEMPERATURE_SENSOR, 'DeviceTypeCode.TEMPERATURE_SENSOR'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.AIR_QUALITY_SENSOR, 'DeviceTypeCode.AIR_QUALITY_SENSOR'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.VALVE, 'DeviceTypeCode.VALVE'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.GATEWAY, 'DeviceTypeCode.GATEWAY'))\n\tresult.push(new Tuple<DeviceTypeCode, string>(DeviceTypeCode.ATM, 'DeviceTypeCode.ATM'))\n\t\n return result;\n}\n\n// Return map of DeviceTypeCode values and their display names\nexport function MapDeviceTypeCodes() : Map<DeviceTypeCode, string> {\n let result = new Map<DeviceTypeCode, string>();\n result.set(DeviceTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(DeviceTypeCode.OTHER, 'Other');\n\tresult.set(DeviceTypeCode.CONTROLLER, 'Controller');\n\tresult.set(DeviceTypeCode.METER, 'Meter');\n\tresult.set(DeviceTypeCode.SENSOR, 'Sensor');\n\tresult.set(DeviceTypeCode.CAMERA, 'Camera');\n\tresult.set(DeviceTypeCode.POS, 'Pos');\n\tresult.set(DeviceTypeCode.PUMP, 'Pump');\n\tresult.set(DeviceTypeCode.CHARGING_STATION, 'Charging Station');\n\tresult.set(DeviceTypeCode.LIGHTNING, 'Lightning');\n\tresult.set(DeviceTypeCode.TEMPERATURE_SENSOR, 'Temperature Sensor');\n\tresult.set(DeviceTypeCode.AIR_QUALITY_SENSOR, 'Air Quality Sensor');\n\tresult.set(DeviceTypeCode.VALVE, 'Valve');\n\tresult.set(DeviceTypeCode.GATEWAY, 'Gateway');\n\tresult.set(DeviceTypeCode.ATM, 'Atm');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// EventStatusCode represents the list of event types: UNDEFINED | NEW | OPEN | CLOSED_TRUE | CLOSED_FALSE\nexport enum EventStatusCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // New event [1] \n NEW = 1,\n\n // Open event, handled by the operator [2] \n OPEN = 2,\n\n // Closed event (tagged as True event) [3] \n CLOSED_TRUE = 3,\n\n // Closed event (tagged as False event) [4] \n CLOSED_FALSE = 4,\n\n}\n\n// Return list of EventStatusCode values and their display names\nexport function GetEventStatusCodes() : Tuple<EventStatusCode, string>[] {\n\tlet result : Tuple<EventStatusCode, string>[] = [];\n \n\tresult.push(new Tuple<EventStatusCode, string>(EventStatusCode.NEW, 'EventStatusCode.NEW'))\n\tresult.push(new Tuple<EventStatusCode, string>(EventStatusCode.OPEN, 'EventStatusCode.OPEN'))\n\tresult.push(new Tuple<EventStatusCode, string>(EventStatusCode.CLOSED_TRUE, 'EventStatusCode.CLOSED_TRUE'))\n\tresult.push(new Tuple<EventStatusCode, string>(EventStatusCode.CLOSED_FALSE, 'EventStatusCode.CLOSED_FALSE'))\n\t\n return result;\n}\n\n// Return map of EventStatusCode values and their display names\nexport function MapEventStatusCodes() : Map<EventStatusCode, string> {\n let result = new Map<EventStatusCode, string>();\n result.set(EventStatusCode.UNDEFINED, 'Undefined');\n\tresult.set(EventStatusCode.NEW, 'New');\n\tresult.set(EventStatusCode.OPEN, 'Open');\n\tresult.set(EventStatusCode.CLOSED_TRUE, 'Closed True');\n\tresult.set(EventStatusCode.CLOSED_FALSE, 'Closed False');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// EventTypeCode represents the list of event types: UNDEFINED | OTHER | DEVICE_TAKEOVER\nexport enum EventTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Other (Unknown Event) [1] \n OTHER = 1,\n\n // Device Takeover [2] \n DEVICE_TAKEOVER = 2,\n\n // DDoS [3] \n DDOS = 3,\n\n // Unknown Malware [4] \n UNKNOWN_MALWARE = 4,\n\n // Man-in-the-Middle [5] \n MAN_IN_THE_MIDDLE = 5,\n\n // Data Theft [6] \n DATA_THEFT = 6,\n\n // Port Scanning [7] \n PORT_SCANNING = 7,\n\n // Abnormal Download [8] \n ABNORMAL_DOWNLOAD = 8,\n\n // Abnormal Incoming Connection [9] \n ABNORMAL_INCOMING_CONNECTION = 9,\n\n // Unsuccessful Connection Attempts [10] \n UNSUCCESSFUL_CONNECTION_ATTEMPTS = 10,\n\n // High Volume Transmit [11] \n HIGH_VOLUME_TRANSIT = 11,\n\n // Device Level Attack [12] \n DEVICE_LEVEL_ATTACK = 12,\n\n // Replay Attack [13] \n REPLAY_ATTACK = 13,\n\n // Attempted Device Takeover [14] \n DEVICE_TAKEOVER_ATTEMPT = 14,\n\n // Unknown Operation' [15] \n UNKNOWN_OPERATION = 15,\n\n // Crypto Mining [16] \n CRYPTO_MINING = 16,\n\n // Suspicious IP [17] \n SUSPICIOUS_IP = 17,\n\n // Abnormal number of outbound ports [18] \n ABNORMAL_OUTBOUND_PORTS = 18,\n\n // Abnormal number of outbound endpoints (destinations) [19] \n ABNORMAL_OUTBOUND_ENDPOINTS = 19,\n\n // Sim Switch [20] \n SIM_SWITCH = 20,\n\n // SIM misusage [21] \n SIM_MISUSAGE = 21,\n\n // Device disconnect [22] \n DEVICE_DISCONNECTION = 22,\n\n // Anomaly detected [23] \n ANOMALY_DETECTED = 23,\n\n // DGA DNS Query [24] \n DGA_DNS_QUERY = 24,\n\n // CASE-MUTATED DNS Query [25] \n CASE_MUTATED_DNS_QUERY = 25,\n\n // Suspicious IP OUT [27] \n SUSPICIOUS_IP_OUT = 27,\n\n // DNS request for known IP/MAC lookup service [28] \n IP_LOOKUP_DNS_REQUEST = 28,\n\n // Excessive conn attempts non-standard DNS port [29] \n EXCESSIVE_NONSTD_DNS_ATTEMPTS = 29,\n\n // Conn attempt to non-trusted endpoint over exploited port [30] \n IOT_MALWARE_PORT_CONN = 30,\n\n // IoT outbound connection to Windows worm/exploit port [31] \n IOT_OUTBOUND_WIN_WORM_PORT = 31,\n\n // IoT outbound connection to email/spam-related port [32] \n IOT_OUTBOUND_EMAIL_SPAM_PORT = 32,\n\n // IoT outbound connection to notorious/misused service port [33] \n IOT_OUTBOUND_NOTORIOUS_PORT = 33,\n\n // IoT outbound long-lived conn to alt-SSH [34] \n IOT_OUTBOUND_LONG_CONN_ALT_SSH = 34,\n\n // Fast connect/disconnect burst (no data) from local endpoint [35] \n IOT_OUTBOUND_FAST_CONNECT_BURST = 35,\n\n // Fast connect/disconnect burst (no data) between local endpoints [36] \n IOT_LOCAL_FAST_CONNECT_BURST = 36,\n\n // DNS query to high-risk TLD [37] \n IOT_HIGH_RISK_TLD_QUERY = 37,\n\n // DNS query of type TXT from IoT device to public resolver [38] \n IOT_DNS_TXT_PUBLIC_RESOLVER = 38,\n\n // FTP credentials sent in cleartext (USER/PASS over TCP/21) [39] \n IOT_FTP_PLAINTEXT_CREDS = 39,\n\n}\n\n// Return list of EventTypeCode values and their display names\nexport function GetEventTypeCodes() : Tuple<EventTypeCode, string>[] {\n\tlet result : Tuple<EventTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.OTHER, 'EventTypeCode.OTHER'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.DEVICE_TAKEOVER, 'EventTypeCode.DEVICE_TAKEOVER'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.DDOS, 'EventTypeCode.DDOS'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.UNKNOWN_MALWARE, 'EventTypeCode.UNKNOWN_MALWARE'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.MAN_IN_THE_MIDDLE, 'EventTypeCode.MAN_IN_THE_MIDDLE'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.DATA_THEFT, 'EventTypeCode.DATA_THEFT'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.PORT_SCANNING, 'EventTypeCode.PORT_SCANNING'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.ABNORMAL_DOWNLOAD, 'EventTypeCode.ABNORMAL_DOWNLOAD'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.ABNORMAL_INCOMING_CONNECTION, 'EventTypeCode.ABNORMAL_INCOMING_CONNECTION'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.UNSUCCESSFUL_CONNECTION_ATTEMPTS, 'EventTypeCode.UNSUCCESSFUL_CONNECTION_ATTEMPTS'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.HIGH_VOLUME_TRANSIT, 'EventTypeCode.HIGH_VOLUME_TRANSIT'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.DEVICE_LEVEL_ATTACK, 'EventTypeCode.DEVICE_LEVEL_ATTACK'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.REPLAY_ATTACK, 'EventTypeCode.REPLAY_ATTACK'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.DEVICE_TAKEOVER_ATTEMPT, 'EventTypeCode.DEVICE_TAKEOVER_ATTEMPT'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.UNKNOWN_OPERATION, 'EventTypeCode.UNKNOWN_OPERATION'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.CRYPTO_MINING, 'EventTypeCode.CRYPTO_MINING'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.SUSPICIOUS_IP, 'EventTypeCode.SUSPICIOUS_IP'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.ABNORMAL_OUTBOUND_PORTS, 'EventTypeCode.ABNORMAL_OUTBOUND_PORTS'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.ABNORMAL_OUTBOUND_ENDPOINTS, 'EventTypeCode.ABNORMAL_OUTBOUND_ENDPOINTS'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.SIM_SWITCH, 'EventTypeCode.SIM_SWITCH'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.SIM_MISUSAGE, 'EventTypeCode.SIM_MISUSAGE'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.DEVICE_DISCONNECTION, 'EventTypeCode.DEVICE_DISCONNECTION'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.ANOMALY_DETECTED, 'EventTypeCode.ANOMALY_DETECTED'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.DGA_DNS_QUERY, 'EventTypeCode.DGA_DNS_QUERY'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.CASE_MUTATED_DNS_QUERY, 'EventTypeCode.CASE_MUTATED_DNS_QUERY'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.SUSPICIOUS_IP_OUT, 'EventTypeCode.SUSPICIOUS_IP_OUT'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IP_LOOKUP_DNS_REQUEST, 'EventTypeCode.IP_LOOKUP_DNS_REQUEST'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.EXCESSIVE_NONSTD_DNS_ATTEMPTS, 'EventTypeCode.EXCESSIVE_NONSTD_DNS_ATTEMPTS'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_MALWARE_PORT_CONN, 'EventTypeCode.IOT_MALWARE_PORT_CONN'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_OUTBOUND_WIN_WORM_PORT, 'EventTypeCode.IOT_OUTBOUND_WIN_WORM_PORT'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_OUTBOUND_EMAIL_SPAM_PORT, 'EventTypeCode.IOT_OUTBOUND_EMAIL_SPAM_PORT'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_OUTBOUND_NOTORIOUS_PORT, 'EventTypeCode.IOT_OUTBOUND_NOTORIOUS_PORT'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_OUTBOUND_LONG_CONN_ALT_SSH, 'EventTypeCode.IOT_OUTBOUND_LONG_CONN_ALT_SSH'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_OUTBOUND_FAST_CONNECT_BURST, 'EventTypeCode.IOT_OUTBOUND_FAST_CONNECT_BURST'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_LOCAL_FAST_CONNECT_BURST, 'EventTypeCode.IOT_LOCAL_FAST_CONNECT_BURST'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_HIGH_RISK_TLD_QUERY, 'EventTypeCode.IOT_HIGH_RISK_TLD_QUERY'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_DNS_TXT_PUBLIC_RESOLVER, 'EventTypeCode.IOT_DNS_TXT_PUBLIC_RESOLVER'))\n\tresult.push(new Tuple<EventTypeCode, string>(EventTypeCode.IOT_FTP_PLAINTEXT_CREDS, 'EventTypeCode.IOT_FTP_PLAINTEXT_CREDS'))\n\t\n return result;\n}\n\n// Return map of EventTypeCode values and their display names\nexport function MapEventTypeCodes() : Map<EventTypeCode, string> {\n let result = new Map<EventTypeCode, string>();\n result.set(EventTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(EventTypeCode.OTHER, 'Other');\n\tresult.set(EventTypeCode.DEVICE_TAKEOVER, 'Device Takeover');\n\tresult.set(EventTypeCode.DDOS, 'Ddos');\n\tresult.set(EventTypeCode.UNKNOWN_MALWARE, 'Unknown Malware');\n\tresult.set(EventTypeCode.MAN_IN_THE_MIDDLE, 'Man In The Middle');\n\tresult.set(EventTypeCode.DATA_THEFT, 'Data Theft');\n\tresult.set(EventTypeCode.PORT_SCANNING, 'Port Scanning');\n\tresult.set(EventTypeCode.ABNORMAL_DOWNLOAD, 'Abnormal Download');\n\tresult.set(EventTypeCode.ABNORMAL_INCOMING_CONNECTION, 'Abnormal Incoming Connection');\n\tresult.set(EventTypeCode.UNSUCCESSFUL_CONNECTION_ATTEMPTS, 'Unsuccessful Connection Attempts');\n\tresult.set(EventTypeCode.HIGH_VOLUME_TRANSIT, 'High Volume Transit');\n\tresult.set(EventTypeCode.DEVICE_LEVEL_ATTACK, 'Device Level Attack');\n\tresult.set(EventTypeCode.REPLAY_ATTACK, 'Replay Attack');\n\tresult.set(EventTypeCode.DEVICE_TAKEOVER_ATTEMPT, 'Device Takeover Attempt');\n\tresult.set(EventTypeCode.UNKNOWN_OPERATION, 'Unknown Operation');\n\tresult.set(EventTypeCode.CRYPTO_MINING, 'Crypto Mining');\n\tresult.set(EventTypeCode.SUSPICIOUS_IP, 'Suspicious Ip');\n\tresult.set(EventTypeCode.ABNORMAL_OUTBOUND_PORTS, 'Abnormal Outbound Ports');\n\tresult.set(EventTypeCode.ABNORMAL_OUTBOUND_ENDPOINTS, 'Abnormal Outbound Endpoints');\n\tresult.set(EventTypeCode.SIM_SWITCH, 'Sim Switch');\n\tresult.set(EventTypeCode.SIM_MISUSAGE, 'Sim Misusage');\n\tresult.set(EventTypeCode.DEVICE_DISCONNECTION, 'Device Disconnection');\n\tresult.set(EventTypeCode.ANOMALY_DETECTED, 'Anomaly Detected');\n\tresult.set(EventTypeCode.DGA_DNS_QUERY, 'Dga Dns Query');\n\tresult.set(EventTypeCode.CASE_MUTATED_DNS_QUERY, 'Case Mutated Dns Query');\n\tresult.set(EventTypeCode.SUSPICIOUS_IP_OUT, 'Suspicious Ip Out');\n\tresult.set(EventTypeCode.IP_LOOKUP_DNS_REQUEST, 'Ip Lookup Dns Request');\n\tresult.set(EventTypeCode.EXCESSIVE_NONSTD_DNS_ATTEMPTS, 'Excessive Nonstd Dns Attempts');\n\tresult.set(EventTypeCode.IOT_MALWARE_PORT_CONN, 'Iot Malware Port Conn');\n\tresult.set(EventTypeCode.IOT_OUTBOUND_WIN_WORM_PORT, 'Iot Outbound Win Worm Port');\n\tresult.set(EventTypeCode.IOT_OUTBOUND_EMAIL_SPAM_PORT, 'Iot Outbound Email Spam Port');\n\tresult.set(EventTypeCode.IOT_OUTBOUND_NOTORIOUS_PORT, 'Iot Outbound Notorious Port');\n\tresult.set(EventTypeCode.IOT_OUTBOUND_LONG_CONN_ALT_SSH, 'Iot Outbound Long Conn Alt Ssh');\n\tresult.set(EventTypeCode.IOT_OUTBOUND_FAST_CONNECT_BURST, 'Iot Outbound Fast Connect Burst');\n\tresult.set(EventTypeCode.IOT_LOCAL_FAST_CONNECT_BURST, 'Iot Local Fast Connect Burst');\n\tresult.set(EventTypeCode.IOT_HIGH_RISK_TLD_QUERY, 'Iot High Risk Tld Query');\n\tresult.set(EventTypeCode.IOT_DNS_TXT_PUBLIC_RESOLVER, 'Iot Dns Txt Public Resolver');\n\tresult.set(EventTypeCode.IOT_FTP_PLAINTEXT_CREDS, 'Iot Ftp Plaintext Creds');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// OperatorCode represents the list of query operations: EQ | NEQ | GT | GTE | LT | LTE | IN | NOTIN | RANGE | LIKE | CONTAINS | NOTCONTAINS\nexport enum OperatorCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Equal (=) [1] \n EQ = 1,\n\n // Not Equal (!=) [2] \n NEQ = 2,\n\n // Greater than (>) [3] \n GT = 3,\n\n // Greater or equal (>=) [4] \n GTE = 4,\n\n // Less than (<) [5] \n LT = 5,\n\n // Less or equal (<=) [6] \n LTE = 6,\n\n // Included in (*) [7] \n IN = 7,\n\n // Not included in (-) [8] \n NOTIN = 8,\n\n // In range (#) [9] \n RANGE = 9,\n\n // Like (~) [10] \n LIKE = 10,\n\n // Contains (@) [11] \n CONTAINS = 11,\n\n // Not contains (!@) [12] \n NOTCONTAINS = 12,\n\n}\n\n// Return list of OperatorCode values and their display names\nexport function GetOperatorCodes() : Tuple<OperatorCode, string>[] {\n\tlet result : Tuple<OperatorCode, string>[] = [];\n \n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.EQ, 'OperatorCode.EQ'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.NEQ, 'OperatorCode.NEQ'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.GT, 'OperatorCode.GT'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.GTE, 'OperatorCode.GTE'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.LT, 'OperatorCode.LT'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.LTE, 'OperatorCode.LTE'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.IN, 'OperatorCode.IN'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.NOTIN, 'OperatorCode.NOTIN'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.RANGE, 'OperatorCode.RANGE'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.LIKE, 'OperatorCode.LIKE'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.CONTAINS, 'OperatorCode.CONTAINS'))\n\tresult.push(new Tuple<OperatorCode, string>(OperatorCode.NOTCONTAINS, 'OperatorCode.NOTCONTAINS'))\n\t\n return result;\n}\n\n// Return map of OperatorCode values and their display names\nexport function MapOperatorCodes() : Map<OperatorCode, string> {\n let result = new Map<OperatorCode, string>();\n result.set(OperatorCode.UNDEFINED, 'Undefined');\n\tresult.set(OperatorCode.EQ, 'Eq');\n\tresult.set(OperatorCode.NEQ, 'Neq');\n\tresult.set(OperatorCode.GT, 'Gt');\n\tresult.set(OperatorCode.GTE, 'Gte');\n\tresult.set(OperatorCode.LT, 'Lt');\n\tresult.set(OperatorCode.LTE, 'Lte');\n\tresult.set(OperatorCode.IN, 'In');\n\tresult.set(OperatorCode.NOTIN, 'Notin');\n\tresult.set(OperatorCode.RANGE, 'Range');\n\tresult.set(OperatorCode.LIKE, 'Like');\n\tresult.set(OperatorCode.CONTAINS, 'Contains');\n\tresult.set(OperatorCode.NOTCONTAINS, 'Notcontains');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// PermissionCode represents the bitmask of the list of permissions: READ | CREATE | UPDATE | DELETE ...\nexport enum PermissionCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Read permission [1] \n READ = 1,\n\n // Create permission [2] \n CREATE = 2,\n\n // Update permission [4] \n UPDATE = 4,\n\n // Delete permission [8] \n DELETE = 8,\n\n // Action permission [16] \n ACTION = 16,\n\n}\n\n// Return list of PermissionCode values and their display names\nexport function GetPermissionCodes() : Tuple<PermissionCode, string>[] {\n\tlet result : Tuple<PermissionCode, string>[] = [];\n \n\tresult.push(new Tuple<PermissionCode, string>(PermissionCode.READ, 'PermissionCode.READ'))\n\tresult.push(new Tuple<PermissionCode, string>(PermissionCode.CREATE, 'PermissionCode.CREATE'))\n\tresult.push(new Tuple<PermissionCode, string>(PermissionCode.UPDATE, 'PermissionCode.UPDATE'))\n\tresult.push(new Tuple<PermissionCode, string>(PermissionCode.DELETE, 'PermissionCode.DELETE'))\n\tresult.push(new Tuple<PermissionCode, string>(PermissionCode.ACTION, 'PermissionCode.ACTION'))\n\t\n return result;\n}\n\n// Return map of PermissionCode values and their display names\nexport function MapPermissionCodes() : Map<PermissionCode, string> {\n let result = new Map<PermissionCode, string>();\n result.set(PermissionCode.UNDEFINED, 'Undefined');\n\tresult.set(PermissionCode.READ, 'Read');\n\tresult.set(PermissionCode.CREATE, 'Create');\n\tresult.set(PermissionCode.UPDATE, 'Update');\n\tresult.set(PermissionCode.DELETE, 'Delete');\n\tresult.set(PermissionCode.ACTION, 'Action');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// ReportSourceCode represents the sources (indices) of report data: ONDEMAND | PERIODIC\nexport enum ReportSourceCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // On demand report source - from API [1] \n ONDEMAND = 1,\n\n // Periodic task report source [2] \n PERIODIC = 2,\n\n}\n\n// Return list of ReportSourceCode values and their display names\nexport function GetReportSourceCodes() : Tuple<ReportSourceCode, string>[] {\n\tlet result : Tuple<ReportSourceCode, string>[] = [];\n \n\tresult.push(new Tuple<ReportSourceCode, string>(ReportSourceCode.ONDEMAND, 'ReportSourceCode.ONDEMAND'))\n\tresult.push(new Tuple<ReportSourceCode, string>(ReportSourceCode.PERIODIC, 'ReportSourceCode.PERIODIC'))\n\t\n return result;\n}\n\n// Return map of ReportSourceCode values and their display names\nexport function MapReportSourceCodes() : Map<ReportSourceCode, string> {\n let result = new Map<ReportSourceCode, string>();\n result.set(ReportSourceCode.UNDEFINED, 'Undefined');\n\tresult.set(ReportSourceCode.ONDEMAND, 'Ondemand');\n\tresult.set(ReportSourceCode.PERIODIC, 'Periodic');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// UserStatusCode represents the list of user status: PENDING | ACTIVE | BLOCKED ...\nexport enum UserStatusCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // User is registered and pending verification [1] \n PENDING = 1,\n\n // Active user in the system [2] \n ACTIVE = 2,\n\n // Blocked user (only account system can unblock the user) [3] \n BLOCKED = 3,\n\n // Suspended user (about to be deleted) [4] \n SUSPENDED = 4,\n\n}\n\n// Return list of UserStatusCode values and their display names\nexport function GetUserStatusCodes() : Tuple<UserStatusCode, string>[] {\n\tlet result : Tuple<UserStatusCode, string>[] = [];\n \n\tresult.push(new Tuple<UserStatusCode, string>(UserStatusCode.PENDING, 'UserStatusCode.PENDING'))\n\tresult.push(new Tuple<UserStatusCode, string>(UserStatusCode.ACTIVE, 'UserStatusCode.ACTIVE'))\n\tresult.push(new Tuple<UserStatusCode, string>(UserStatusCode.BLOCKED, 'UserStatusCode.BLOCKED'))\n\tresult.push(new Tuple<UserStatusCode, string>(UserStatusCode.SUSPENDED, 'UserStatusCode.SUSPENDED'))\n\t\n return result;\n}\n\n// Return map of UserStatusCode values and their display names\nexport function MapUserStatusCodes() : Map<UserStatusCode, string> {\n let result = new Map<UserStatusCode, string>();\n result.set(UserStatusCode.UNDEFINED, 'Undefined');\n\tresult.set(UserStatusCode.PENDING, 'Pending');\n\tresult.set(UserStatusCode.ACTIVE, 'Active');\n\tresult.set(UserStatusCode.BLOCKED, 'Blocked');\n\tresult.set(UserStatusCode.SUSPENDED, 'Suspended');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// DeviceStatusCode represents the list of device status: PENDING | ACTIVE | INACTIVE\nexport enum DeviceStatusCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Device is registered and pending verification [1] \n PENDING = 1,\n\n // Device is registered and active [2] \n ACTIVE = 2,\n\n // Device is registered and inactive [3] \n INACTIVE = 3,\n\n // Device is registered and blocked [4] \n BLOCKED = 4,\n\n}\n\n// Return list of DeviceStatusCode values and their display names\nexport function GetDeviceStatusCodes() : Tuple<DeviceStatusCode, string>[] {\n\tlet result : Tuple<DeviceStatusCode, string>[] = [];\n \n\tresult.push(new Tuple<DeviceStatusCode, string>(DeviceStatusCode.PENDING, 'DeviceStatusCode.PENDING'))\n\tresult.push(new Tuple<DeviceStatusCode, string>(DeviceStatusCode.ACTIVE, 'DeviceStatusCode.ACTIVE'))\n\tresult.push(new Tuple<DeviceStatusCode, string>(DeviceStatusCode.INACTIVE, 'DeviceStatusCode.INACTIVE'))\n\tresult.push(new Tuple<DeviceStatusCode, string>(DeviceStatusCode.BLOCKED, 'DeviceStatusCode.BLOCKED'))\n\t\n return result;\n}\n\n// Return map of DeviceStatusCode values and their display names\nexport function MapDeviceStatusCodes() : Map<DeviceStatusCode, string> {\n let result = new Map<DeviceStatusCode, string>();\n result.set(DeviceStatusCode.UNDEFINED, 'Undefined');\n\tresult.set(DeviceStatusCode.PENDING, 'Pending');\n\tresult.set(DeviceStatusCode.ACTIVE, 'Active');\n\tresult.set(DeviceStatusCode.INACTIVE, 'Inactive');\n\tresult.set(DeviceStatusCode.BLOCKED, 'Blocked');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// DirectionContextCode represents direction context: EVENT_LIST | DEVICE_LIST | EVENT_DETAILS | DEVICE_DETAILS\nexport enum DirectionContextCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Event list context [1] \n EVENT_LIST = 1,\n\n // Device list context [2] \n DEVICE_LIST = 2,\n\n // Event detailS context [3] \n EVENT_DETAILS = 3,\n\n // Device detailS context [4] \n DEVICE_DETAILS = 4,\n\n}\n\n// Return list of DirectionContextCode values and their display names\nexport function GetDirectionContextCodes() : Tuple<DirectionContextCode, string>[] {\n\tlet result : Tuple<DirectionContextCode, string>[] = [];\n \n\tresult.push(new Tuple<DirectionContextCode, string>(DirectionContextCode.EVENT_LIST, 'DirectionContextCode.EVENT_LIST'))\n\tresult.push(new Tuple<DirectionContextCode, string>(DirectionContextCode.DEVICE_LIST, 'DirectionContextCode.DEVICE_LIST'))\n\tresult.push(new Tuple<DirectionContextCode, string>(DirectionContextCode.EVENT_DETAILS, 'DirectionContextCode.EVENT_DETAILS'))\n\tresult.push(new Tuple<DirectionContextCode, string>(DirectionContextCode.DEVICE_DETAILS, 'DirectionContextCode.DEVICE_DETAILS'))\n\t\n return result;\n}\n\n// Return map of DirectionContextCode values and their display names\nexport function MapDirectionContextCodes() : Map<DirectionContextCode, string> {\n let result = new Map<DirectionContextCode, string>();\n result.set(DirectionContextCode.UNDEFINED, 'Undefined');\n\tresult.set(DirectionContextCode.EVENT_LIST, 'Event List');\n\tresult.set(DirectionContextCode.DEVICE_LIST, 'Device List');\n\tresult.set(DirectionContextCode.EVENT_DETAILS, 'Event Details');\n\tresult.set(DirectionContextCode.DEVICE_DETAILS, 'Device Details');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// NetworkMapTypeCode represents the types of network maps: TOP_DEVICES | TOP_MALICIOUS_IPS | NETWORK\nexport enum NetworkMapTypeCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Top devices network map [1] \n TOP_DEVICES = 1,\n\n // Top malicious IP network map [2] \n TOP_MALICIOUS_IPS = 2,\n\n // Network devices network map [3] \n NETWORK = 3,\n\n}\n\n// Return list of NetworkMapTypeCode values and their display names\nexport function GetNetworkMapTypeCodes() : Tuple<NetworkMapTypeCode, string>[] {\n\tlet result : Tuple<NetworkMapTypeCode, string>[] = [];\n \n\tresult.push(new Tuple<NetworkMapTypeCode, string>(NetworkMapTypeCode.TOP_DEVICES, 'NetworkMapTypeCode.TOP_DEVICES'))\n\tresult.push(new Tuple<NetworkMapTypeCode, string>(NetworkMapTypeCode.TOP_MALICIOUS_IPS, 'NetworkMapTypeCode.TOP_MALICIOUS_IPS'))\n\tresult.push(new Tuple<NetworkMapTypeCode, string>(NetworkMapTypeCode.NETWORK, 'NetworkMapTypeCode.NETWORK'))\n\t\n return result;\n}\n\n// Return map of NetworkMapTypeCode values and their display names\nexport function MapNetworkMapTypeCodes() : Map<NetworkMapTypeCode, string> {\n let result = new Map<NetworkMapTypeCode, string>();\n result.set(NetworkMapTypeCode.UNDEFINED, 'Undefined');\n\tresult.set(NetworkMapTypeCode.TOP_DEVICES, 'Top Devices');\n\tresult.set(NetworkMapTypeCode.TOP_MALICIOUS_IPS, 'Top Malicious Ips');\n\tresult.set(NetworkMapTypeCode.NETWORK, 'Network');\n\t\n return result;\n}\n","\nimport { Tuple } from '.';\n\n\n// RuleActivityStatusCode represents the list of rule activity status: ACTIVE | INACTIVE\nexport enum RuleActivityStatusCode {\n\n // Undefined [0] \n UNDEFINED = 0,\n\n // Active [1] \n ACTIVE = 1,\n\n // Inactive [2] \n INACTIVE = 2,\n\n}\n\n// Return list of RuleActivityStatusCode values and their display names\nexport function GetRuleActivityStatusCodes() : Tuple<RuleActivityStatusCode, string>[] {\n\tlet result : Tuple<RuleActivityStatusCode, string>[] = [];\n \n\tresult.push(new Tuple<RuleActivityStatusCode, string>(RuleActivityStatusCode.ACTIVE, 'RuleActivityStatusCode.ACTIVE'))\n\tresult.push(new Tuple<RuleActivityStatusCode, string>(RuleActivityStatusCode.INACTIVE, 'RuleActivityStatusCode.INACTIVE'))\n\t\n return result;\n}\n\n// Return map of RuleActivityStatusCode values and their display names\nexport function MapRuleActivityStatusCodes() : Map<RuleActivityStatusCode, string> {\n let result = new Map<RuleActivityStatusCode, string>();\n result.set(RuleActivityStatusCode.UNDEFINED, 'Undefined');\n\tresult.set(RuleActivityStatusCode.ACTIVE, 'Active');\n\tresult.set(RuleActivityStatusCode.INACTIVE, 'Inactive');\n\t\n return result;\n}\n","\n\n// IntegrationContext model represents union of several entities (user, device, event) to inject to integration template in order to resolve fields\nexport class IntegrationContext {\n\n\t// User Context \n\tpublic user: Map<string,object>;\n\n\t// Device Context \n\tpublic device: Map<string,object>;\n\n\t// Event context \n\tpublic event: Map<string,object>;\n\n constructor(user?: Map<string,object>, device?: Map<string,object>, event?: Map<string,object>) { \n if (user !== undefined) { this.user = user; }\n if (device !== undefined) { this.device = device; }\n if (event !== undefined) { this.event = event; }\n }\n\n}\n\n\n","\n\n// IntKeyValue model used as a tuple of int to int key-value pair\nexport class IntKeyValue {\n\n\t// Tuple key \n\tpublic key: number;\n\n\t// Tuple value \n\tpublic value: number;\n\n constructor(key?: number, value?: number) { \n if (key !== undefined) { this.key = key; }\n if (value !== undefined) { this.value = value; }\n }\n\n}\n\n\n","\nimport { DeviceTypeCode } from './DeviceTypeCode';\nimport { Tuple } from './Tuple';\n\n// Node represents a vertex in a network map\nexport class Node {\n\n\t// Node Id (system id for inner map calculation) \n\tpublic id: string;\n\n\t// Node graph Id (can be device id or ip based on node type \n\tpublic nodeId: string;\n\n\t// Device name \n\tpublic name: string;\n\n\t// Device IP address (IPv4 or IPv6) \n\tpublic ip: string;\n\n\t// Device type: UNDEFINED | CONTROLLER | METER | SENSOR ... \n\tpublic type: DeviceTypeCode;\n\n\t// Device current security score \n\tpublic score: number;\n\n\t// List of device tags \n\tpublic tags: string[];\n\n\t// List of attributes (key-value pairs) \n\tpublic labels: Tuple<string, string>[];\n\n\t// Number of total events for the time period (calculated field) \n\tpublic eventCount: number;\n\n\t// Is aggregated node \n\tpublic isGroup: boolean;\n\n\t// \n\tpublic deviceCount: number;\n\n constructor(id?: string, nodeId?: string, name?: string, iP?: string, type?: DeviceTypeCode, score?: number, tags?: string[], labels?: Tuple<string, string>[], eventCount?: number, isGroup?: boolean, deviceCount?: number) { \n if (id !== undefined) { this.id = id; }\n if (nodeId !== undefined) { this.nodeId = nodeId; }\n if (name !== undefined) { this.name = name; }\n if (iP !== undefined) { this.ip = iP; }\n if (type !== undefined) { this.type = type; }\n if (score !== undefined) { this.score = score; }\n if (tags !== undefined) { this.tags = tags; }\n if (labels !== undefined) { this.labels = labels; }\n if (eventCount !== undefined) { this.eventCount = eventCount; }\n if (isGroup !== undefined) { this.isGroup = isGroup; }\n if (deviceCount !== undefined) { this.deviceCount = deviceCount; }\n }\n\n}\n\n\n","\nimport { SeverityTypeCode } from './SeverityTypeCode';\n\n// Link represents a relation between two nodes\nexport class Link {\n\n\t// Unique object Id \n\tpublic id: string;\n\n\t// Source node Id \n\tpublic src: string;\n\n\t// Destination node Id \n\tpublic dst: string;\n\n\t// Textual description of this link \n\tpublic name: string;\n\n\t// Numeric value of this link \n\tpublic value: number;\n\n\t// Event severity: UNDEFINED | LOW | MEDIUM | HIGH | ... \n\tpublic severity: SeverityTypeCode;\n\n\t// Number of events related to the link for the time period (calculated field) \n\tpublic eventCount: number;\n\n constructor(id?: string, src?: string, dst?: string, name?: string, value?: number, severity?: SeverityTypeCode, eventCount?: number) { \n if (id !== undefined) { this.id = id; }\n if (src !== undefined) { this.src = src; }\n if (dst !== undefined) { this.dst = dst; }\n if (name !== undefined) { this.name = name; }\n if (value !== undefined) { this.value = value; }\n if (severity !== undefined) { this.severity = severity; }\n if (eventCount !== undefined) { this.eventCount = eventCount; }\n }\n\n}\n\n\n","\n\n// ConsumptionDataPoint represent data consumption (traffic) data point\nexport class ConsumptionDataPoint {\n\n\t// Incoming traffic in Kb \n\tpublic dataIn: number;\n\n\t// Outgoing traffic in Kb \n\tpublic dataOut: number;\n\n\t// Total traffic in Kb \n\tpublic total: number;\n\n constructor(dataIn?: number, dataOut?: number, total?: number) { \n if (dataIn !== undefined) { this.dataIn = dataIn; }\n if (dataOut !== undefined) { this.dataOut = dataOut; }\n if (total !== undefined) { this.total = total; }\n }\n\n}\n\n\n","\n\n// BaseEntity is a base structure for any concrete Entity.\n// It provides common fields like Id, CreatedOn, and UpdatedOn that are standard across most entities.\n// Embed this struct in your domain entities to inherit these standard fields and basic behavior.\nexport class BaseEntity {\n\n\t// Id is the unique object identifier \n\tpublic id: string;\n\n\t// CreatedOn is the timestamp when the object was created [Epoch milliseconds Timestamp] \n\tpublic createdOn: number;\n\n\t// UpdatedOn is the timestamp when the object was last updated [Epoch milliseconds Timestamp] \n\tpublic updatedOn: number;\n\n constructor(id?: string, createdOn?: number, updatedOn?: number) { \n if (id !== undefined) { this.id = id; }\n if (createdOn !== undefined) { this.createdOn = createdOn; }\n if (updatedOn !== undefined) { this.updatedOn = updatedOn; }\n }\n\n}\n\n\n","\n\n// ColumnDef model represents table column definition\nexport class ColumnDef {\n\n\t// Column field icon \n\tpublic icon: string;\n\n\t// Column field name \n\tpublic name: string;\n\n\t// Column field type \n\tpublic type: string;\n\n\t// Display format hint \n\tpublic format: string;\n\n\t// Sort order 0: no sort, 1: sort asc, -1 sort desc \n\tpublic sort: number;\n\n\t// Filter operand \n\tpublic filterOp: number;\n\n\t// Filter by value \n\tpublic filter: any;\n\n constructor(icon?: string, name?: string, type?: string, format?: string, sort?: number, filterOp?: number, filter?: any) { \n if (icon !== undefined) { this.icon = icon; }\n if (name !== undefined) { this.name = name; }\n if (type !== undefined) { this.type = type; }\n if (format !== undefined) { this.format = format; }\n if (sort !== undefined) { this.sort = sort; }\n if (filterOp !== undefined) { this.filterOp = filterOp; }\n if (filter !== undefined) { this.filter = filter; }\n }\n\n}\n\n\n","\nimport { FeatureCode } from './FeatureCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Feature represents a capability in the system\n// It is used for the feature toggle mechanism\nexport class Feature extends BaseEntity {\n\n\t// Feature code \n\tpublic code: FeatureCode;\n\n\t// Feature display name \n\tpublic name: string;\n\n}\n\nexport function GetFeatureColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"code\", \"FeatureCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// StringKeyValue model used as a string key-value pair\nexport class StringKeyValue {\n\n\t// Tuple key \n\tpublic key: string;\n\n\t// Tuple value \n\tpublic value: string;\n\n constructor(key?: string, value?: string) { \n if (key !== undefined) { this.key = key; }\n if (value !== undefined) { this.value = value; }\n }\n\n}\n\n\n","\n\n// IntFloatValue model used as a tuple of int to float64 key-value pair\nexport class IntFloatValue {\n\n\t// Tuple key \n\tpublic key: number;\n\n\t// Tuple value \n\tpublic value: number;\n\n constructor(key?: number, value?: number) { \n if (key !== undefined) { this.key = key; }\n if (value !== undefined) { this.value = value; }\n }\n\n}\n\n\n","\n\n// ZScore parameters\nexport class ZScore {\n\n\t// Mean value \n\tpublic mean: number;\n\n\t// Standard Deviation \n\tpublic sd: number;\n\n constructor(mean?: number, sD?: number) { \n if (mean !== undefined) { this.mean = mean; }\n if (sD !== undefined) { this.sd = sD; }\n }\n\n}\n\n\n","\nimport { TimeDataPoint } from './TimeDataPoint';\nimport { ConsumptionDataPoint } from './ConsumptionDataPoint';\nimport { TimeFrame } from './TimeFrame';\n\n// TimeSeriesConsumption model represents a set of data consumption points over time\nexport class TimeSeriesConsumption {\n\n\t// Name of the time series \n\tpublic name: string;\n\n\t// Range of the series (from ... to) \n\tpublic range: TimeFrame;\n\n\t// Series data points \n\tpublic values: TimeDataPoint<ConsumptionDataPoint>[];\n\n constructor(name?: string, range?: TimeFrame, values?: TimeDataPoint<ConsumptionDataPoint>[]) { \n if (name !== undefined) { this.name = name; }\n if (range !== undefined) { this.range = range; }\n if (values !== undefined) { this.values = values; }\n }\n\n}\n\n\n","\nimport { Distribution } from './Distribution';\n\n// MaliciousIpCard model represents a group of elements of Suspicious IP card\nexport class MaliciousIpCard {\n\n\t// Malicious IP \n\tpublic maliciousIp: string;\n\n\t// Malicious IP DNS name \n\tpublic maliciousIpDns: string;\n\n\t// Country code \n\tpublic countryCode: string;\n\n\t// Ip description \n\tpublic ipDescription: string;\n\n\t// Last event timestamp [Epoch milliseconds Timestamp] \n\tpublic lastEventTime: number;\n\n\t// List of attack categories \n\tpublic attackCategories: string[];\n\n\t// Number of devices \n\tpublic numberOfDevices: number;\n\n\t// Events BySeverityBreakdown \n\tpublic eventsBySeverityBreakdown: Distribution<number>;\n\n constructor(maliciousIp?: string, maliciousIpDns?: string, countryCode?: string, ipDescription?: string, lastEventTime?: number, attackCategories?: string[], numberOfDevices?: number, eventsBySeverityBreakdown?: Distribution<number>) { \n if (maliciousIp !== undefined) { this.maliciousIp = maliciousIp; }\n if (maliciousIpDns !== undefined) { this.maliciousIpDns = maliciousIpDns; }\n if (countryCode !== undefined) { this.countryCode = countryCode; }\n if (ipDescription !== undefined) { this.ipDescription = ipDescription; }\n if (lastEventTime !== undefined) { this.lastEventTime = lastEventTime; }\n if (attackCategories !== undefined) { this.attackCategories = attackCategories; }\n if (numberOfDevices !== undefined) { this.numberOfDevices = numberOfDevices; }\n if (eventsBySeverityBreakdown !== undefined) { this.eventsBySeverityBreakdown = eventsBySeverityBreakdown; }\n }\n\n}\n\n\n","\n\n// ConditionDescription represents a single condition within a user-defined rule (UDR).\n// This structure is designed to capture all necessary elements of a logical expression\n// that can later be translated into a SQL WHERE clause.\n// It supports comparisons, ranges, sets, and typed values with optional units (e.g., \"KB\", \"seconds\").\nexport class ConditionDescription {\n\n\t// Field specifies the name of the field (column) being filtered, e.g., \"src_ip\", \"dst_port\", \"bytes_to_srv\". \n\tpublic field: string;\n\n\t// Operator defines the comparison or logical operation to apply, such as \"equals\", \"greater\", \"between\", \"is_one_of\", etc. \n\tpublic operator: string;\n\n\t// Values holds one or more values that the condition compares against. - For \"equals\" and similar operators, it contains one item. - For \"between\", it contains two values: min and max. - For \"is_one_of\", it contains a list of options. \n\tpublic values: string[];\n\n\t// ValueType defines the type of the value(s), such as: - \"string\" for IPs or protocol names - \"int\" for numerical values like ports or byte counts - \"duration\" for time-based filters \n\tpublic value_type: string;\n\n\t// Unit is an optional field that provides a size or time unit for the value(s), e.g., \"kb\", \"mb\", \"seconds\", \"minutes\". Relevant when ValueType is \"int\" or \"duration\" and the values require normalization. \n\tpublic unit: string;\n\n constructor(field?: string, operator?: string, values?: string[], valueType?: string, unit?: string) { \n if (field !== undefined) { this.field = field; }\n if (operator !== undefined) { this.operator = operator; }\n if (values !== undefined) { this.values = values; }\n if (valueType !== undefined) { this.value_type = valueType; }\n if (unit !== undefined) { this.unit = unit; }\n }\n\n}\n\n\n","\nimport { Location } from './Location';\n\n// MapBounds model represents maps bounds using 2 points southwest and northeast\nexport class MapBounds {\n\n\t// Geo Location (WGS-84) \n\tpublic southwest: Location;\n\n\t// Geo Location (WGS-84) \n\tpublic northeast: Location;\n\n constructor(southwest?: Location, northeast?: Location) { \n if (southwest !== undefined) { this.southwest = southwest; }\n if (northeast !== undefined) { this.northeast = northeast; }\n }\n\n}\n\n\n","\nimport { AITasksCode } from './AITasksCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// AICheckpoint represents checkpoints for AI jobs\nexport class AICheckpoint extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// name of the job \n\tpublic jobName: string;\n\n\t// enum of which ai function to run. not enumerated in model since ai can change this quickly \n\tpublic taskType: AITasksCode;\n\n\t// running jobid generated at the controlled. should be unique \n\tpublic jobId: string;\n\n\t// topic through which jobs are sent out. I.E. each worker type is subscribed to it's own JobPool \n\tpublic jobPool: string;\n\n\t// Identity of the worker who processed the file. should help debug if several tasks failed on same worker \n\tpublic processedBy: string;\n\n\t// time received at the worker \n\tpublic receivedAt: number;\n\n\t// estimate by the controller of upper limit of how much time such a task should take. should be based on statistics about similar tasks \n\tpublic jobTimeEstimate: number;\n\n\t// how much time task took \n\tpublic jobTime: number;\n\n\t// time worker finished working on task. to be used in the JobTimeEstimate statistics \n\tpublic completedAt: number;\n\n\t// exit code of the task. 0 if successful \n\tpublic errorCode: number;\n\n\t// General purpose description \n\tpublic errorMessage: string;\n\n\t// AI job parameters \n\tpublic parameters: Map<string,object>;\n\n\t// AI job parameters \n\tpublic parameters2: Map<string,object>;\n\n}\n\nexport function GetAICheckpointColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"jobName\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"taskType\", \"AITasksCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"jobId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"jobPool\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"processedBy\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"receivedAt\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"jobTimeEstimate\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"jobTime\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"completedAt\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"errorCode\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"errorMessage\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"parameters\", \"Map<string,object>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"parameters2\", \"Map<string,object>\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// BaseMessage provides a basic implementation of the IMessage interface.\n// It can be embedded in other message structs to provide default behavior for the common message attributes.\nexport class BaseMessage {\n\n\t// The topic (channel or queue) of the message. \n\tpublic topic: string;\n\n\t// An operational code for the message. \n\tpublic opCode: number;\n\n\t// The version of the message. \n\tpublic version: string;\n\n\t// The final recipient of the message. \n\tpublic addressee: string;\n\n\t// A session ID for tracking related messages. \n\tpublic sessionId: string;\n\n constructor(msgTopic?: string, msgOpCode?: number, msgVersion?: string, msgAddressee?: string, msgSessionId?: string) { \n if (msgTopic !== undefined) { this.topic = msgTopic; }\n if (msgOpCode !== undefined) { this.opCode = msgOpCode; }\n if (msgVersion !== undefined) { this.version = msgVersion; }\n if (msgAddressee !== undefined) { this.addressee = msgAddressee; }\n if (msgSessionId !== undefined) { this.sessionId = msgSessionId; }\n }\n\n}\n\n\n","\n\n// BaseRestResponse is a common structure for all response types\nexport class BaseRestResponse {\n\n\t// Error code (0 for success) \n\tpublic code: number;\n\n\t// Error message \n\tpublic error: string;\n\n constructor(code?: number, error?: string) { \n if (code !== undefined) { this.code = code; }\n if (error !== undefined) { this.error = error; }\n }\n\n}\n\n\n","\nimport { BaseRestResponse } from './BaseRestResponse';\nimport { ColumnDef } from './ColumnDef';\n\n// EntitiesResponse message is returned for any action returning multiple entities\nexport class EntitiesResponse<T> extends BaseRestResponse {\n\n\t// Current page (Bulk) number \n\tpublic page: number;\n\n\t// Size of page (items in bulk) \n\tpublic size: number;\n\n\t// Total number of pages \n\tpublic pages: number;\n\n\t// Total number of items in the query \n\tpublic total: number;\n\n\t// List of objects in the current result set \n\tpublic list: T[];\n\n}\n\nexport function GetEntitiesResponseColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"page\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"size\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"pages\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"total\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"list\", \"T\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { NetworkEndpoint } from './NetworkEndpoint';\nimport { ColumnDef } from './ColumnDef';\n\n// NetworkTopology represents an account's network structure\nexport class NetworkTopology extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// List of endpoints \n\tpublic endpoints: NetworkEndpoint[];\n\n}\n\nexport function GetNetworkTopologyColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"endpoints\", \"NetworkEndpoint\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// BaseEntityEx is an extended base Entity with custom attributes.\n// It includes all fields from BaseEntity and adds support for a status Flag and a generic properties map (Props).\n// This is useful for entities that need soft-delete capabilities (via Flag) or extensible fields (via Props).\nexport class BaseEntityEx {\n\n\t// Id is the unique object identifier \n\tpublic id: string;\n\n\t// CreatedOn is the timestamp when the object was created [Epoch milliseconds Timestamp] \n\tpublic createdOn: number;\n\n\t// UpdatedOn is the timestamp when the object was last updated [Epoch milliseconds Timestamp] \n\tpublic updatedOn: number;\n\n\t// Flag represents the entity status (e.g. -1 = deleted, 0 = active) \n\tpublic flag: number;\n\n\t// Props is a map of custom properties for extensibility \n\tpublic props: Map<string,object>;\n\n constructor(id?: string, createdOn?: number, updatedOn?: number, flag?: number, props?: Map<string,object>) { \n if (id !== undefined) { this.id = id; }\n if (createdOn !== undefined) { this.createdOn = createdOn; }\n if (updatedOn !== undefined) { this.updatedOn = updatedOn; }\n if (flag !== undefined) { this.flag = flag; }\n if (props !== undefined) { this.props = props; }\n }\n\n\n}\n\n\n","\nimport { BaseEntityEx } from './BaseEntityEx';\nimport { EventTypeCode } from './EventTypeCode';\nimport { SeverityTypeCode } from './SeverityTypeCode';\nimport { RuleTypeCode } from './RuleTypeCode';\nimport { GeoData } from './GeoData';\nimport { EventCategoryCode } from './EventCategoryCode';\nimport { TrafficDirectionCode } from './TrafficDirectionCode';\nimport { EventStatusCode } from './EventStatusCode';\nimport { Tuple } from './Tuple';\nimport { ColumnDef } from './ColumnDef';\n\n// Alert entity\n// The Alert entity representing an aggregation of many Event occurrences of the same type to present to the same user\n// The purpose of this aggregation is to avoid flooding the user with many (hundreds and thousands) of events of the same type\nexport class Alert extends BaseEntityEx {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// Device id \n\tpublic deviceId: string;\n\n\t// The time of the first event in epoch time milliseconds \n\tpublic startTime: number;\n\n\t// The time of the last event in epoch time milliseconds \n\tpublic endTime: number;\n\n\t// Event type: UNDEFINED | DDOS | PORT_SCANNING | DEVICE_TAKEOVER ... \n\tpublic type: EventTypeCode;\n\n\t// Event severity: UNDEFINED | LOW | MEDIUM | HIGH | ... \n\tpublic severity: SeverityTypeCode;\n\n\t// Event current security score \n\tpublic score: number;\n\n\t// Probability score by IP reputation engine \n\tpublic probability: number;\n\n\t// Event workflow status: UNDEFINED | NEW | OPEN ... \n\tpublic status: EventStatusCode;\n\n\t// Rule engine type \n\tpublic ruleType: RuleTypeCode;\n\n\t// Static Rule id \n\tpublic ruleId: string;\n\n\t// The allocated IP for the device at the time of the event occurrence \n\tpublic sourceIp: string;\n\n\t// Target IP address for some of the events (e.g. suspicious IP) \n\tpublic targetIp: string;\n\n\t// GeoIP information based on MaxMind database \n\tpublic targetLocation: GeoData;\n\n\t// Event description \n\tpublic description: string;\n\n\t// Additional Event tags \n\tpublic tags: string[];\n\n\t// List of custom attributes (key-value pairs) \n\tpublic labels: Tuple<string, string>[];\n\n\t// Event category \n\tpublic category: EventCategoryCode;\n\n\t// Recommended action description to apply \n\tpublic recommendedAction: string;\n\n\t// Denotes network traffic direction: UNDEFINED | INBOUND | OUTBOUND \n\tpublic trafficDirection: TrafficDirectionCode;\n\n\t// Contains confidence score of malicious IP detection. Value range: 0-100 \n\tpublic confidenceScore: number;\n\n\t// Event occurrences count \n\tpublic occurrencesCount: number;\n\n}\n\nexport function GetAlertColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"startTime\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"endTime\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"EventTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"severity\", \"SeverityTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"score\", \"number\", \"decimal\"));\n\tresult.push(new ColumnDef(\"\", \"probability\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"status\", \"EventStatusCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"ruleType\", \"RuleTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"ruleId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"sourceIp\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"targetIp\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"targetLocation\", \"GeoData\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"tags\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"labels\", \"Tuple<string, string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"category\", \"EventCategoryCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"recommendedAction\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"trafficDirection\", \"TrafficDirectionCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"confidenceScore\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"occurrencesCount\", \"number\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { Device } from './Device';\nimport { Alert } from './Alert';\nimport { ColumnDef } from './ColumnDef';\n\n// AlertWithDevice entity is an alert with the device info (for display onlY)\nexport class AlertWithDevice extends Alert {\n\n\t// Device attached to the event \n\tpublic device: Device;\n\n}\n\nexport function GetAlertWithDeviceColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"device\", \"Device\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { EventTypeCode } from './EventTypeCode';\nimport { SeverityTypeCode } from './SeverityTypeCode';\nimport { GeoData } from './GeoData';\nimport { Tuple } from './Tuple';\nimport { EventCategoryCode } from './EventCategoryCode';\nimport { TrafficDirectionCode } from './TrafficDirectionCode';\nimport { Indicator } from './Indicator';\nimport { EventStatusCode } from './EventStatusCode';\nimport { RuleTypeCode } from './RuleTypeCode';\nimport { EventOccurrence } from './EventOccurrence';\nimport { BaseEntityEx } from './BaseEntityEx';\nimport { ColumnDef } from './ColumnDef';\n\n// Event entity\n// The Event entity is created by multiple services (e.g. ip reputation, static rules, anomaly detection) by analyzing network statistics (usage and session data) and related to specific IP address.\n// Multiple Events created by the same root cause in a specific timeframe should be represented in a single Alert, this is because in case of a burst, the user\n// should not see hundreds or thousands events but only few alerts pointing to the same root cause (since resolving the root cause of a single alert should resolve all the events)\n// For that reason, the event Id and Alert Id should be predictable values and identical to the same event in a time frame\n// Event ID pattern: [deviceId]:[ruleId]:[1_minute_rounded_timestamp] - to ensure all events on the same device from the same rule within a minute will share the same Id\n// Alert ID pattern: [deviceId]:[ruleId]:[1_month_rounded_timestamp] - to ensure all events on the same device from the same rule within a month will share the same Id to create a single alert\nexport class Event extends BaseEntityEx {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// Device id \n\tpublic deviceId: string;\n\n\t// Alert id \n\tpublic alertId: string;\n\n\t// If an event has been created from Suricata's alert, holds corresponding Suricata's flow_id \n\tpublic flowId: number;\n\n\t// Start window time in epoch time milliseconds \n\tpublic startTime: number;\n\n\t// End window time in epoch time milliseconds \n\tpublic endTime: number;\n\n\t// Event type: UNDEFINED | DDOS | PORT_SCANNING | DEVICE_TAKEOVER ... \n\tpublic type: EventTypeCode;\n\n\t// Event severity: UNDEFINED | LOW | MEDIUM | HIGH | ... \n\tpublic severity: SeverityTypeCode;\n\n\t// Event current security score \n\tpublic score: number;\n\n\t// Probability score by IP reputation engine \n\tpublic probability: number;\n\n\t// NOT IN USE - (moved to Alert) Will be removed in the NExt version \n\tpublic status: EventStatusCode;\n\n\t// Rule engine type \n\tpublic ruleType: RuleTypeCode;\n\n\t// Static Rule id \n\tpublic ruleId: string;\n\n\t// The allocated IP for the device at the time of the event occurrence \n\tpublic sourceIp: string;\n\n\t// Target IP address for some of the events (e.g. suspicious IP) \n\tpublic targetIp: string;\n\n\t// GeoIP information based on MaxMind database \n\tpublic targetLocation: GeoData;\n\n\t// Event description \n\tpublic description: string;\n\n\t// Additional Event tags \n\tpublic tags: string[];\n\n\t// List of custom attributes (key-value pairs) \n\tpublic labels: Tuple<string, string>[];\n\n\t// Event category \n\tpublic category: EventCategoryCode;\n\n\t// Recommended action description to apply \n\tpublic recommendedAction: string;\n\n\t// List of occurrences of the aggregated event - NOT IN USE - WILL BE REMOVED IN THE NEXT VERSION \n\tpublic occurrences: EventOccurrence[];\n\n\t// Denotes network traffic direction: UNDEFINED | INBOUND | OUTBOUND \n\tpublic trafficDirection: TrafficDirectionCode;\n\n\t// Contains confidence score of malicious IP detection. Value range: 0-100 \n\tpublic confidenceScore: number;\n\n\t// Event occurrences count \n\tpublic occurrencesCount: number;\n\n\t// List of event occurrence indicators \n\tpublic indicators: Indicator[];\n\n\t// Referenced source file \n\tpublic source: string;\n\n}\n\nexport function GetEventColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"alertId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"flowId\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"startTime\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"endTime\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"EventTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"severity\", \"SeverityTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"score\", \"number\", \"decimal\"));\n\tresult.push(new ColumnDef(\"\", \"probability\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"status\", \"EventStatusCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"ruleType\", \"RuleTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"ruleId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"sourceIp\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"targetIp\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"targetLocation\", \"GeoData\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"tags\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"labels\", \"Tuple<string, string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"category\", \"EventCategoryCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"recommendedAction\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"occurrences\", \"EventOccurrence\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"trafficDirection\", \"TrafficDirectionCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"confidenceScore\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"occurrencesCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"indicators\", \"Indicator\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"source\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { BoolTypeCode } from './BoolTypeCode';\n\n// NetworkTopologyReportParams parameters aggregator for network topology report query\nexport class NetworkTopologyReportParams {\n\n\t// Filter by StreamId \n\tpublic streamId: string;\n\n\t// Filter by Destination IP address(es) \n\tpublic dstIp: string[];\n\n\t// Filter by DNS name(s) \n\tpublic dstDns: string[];\n\n\t// Filter by port number(s) \n\tpublic dstPort: number[];\n\n\t// Filter by IP Protocol(s) used in layer 3 (e.g., TCP, UDP) \n\tpublic protocol: string[];\n\n\t// Filter by Applicative Protocol(s) used in layer 7 (e.g., HTTP, MQTT) \n\tpublic appProtocol: string[];\n\n\t// Filter by IP owner name(s) \n\tpublic name: string[];\n\n\t// Filter by Country code(s) \n\tpublic country: string[];\n\n\t// Does this endpoint involved in malicious activity \n\tpublic malicious: BoolTypeCode;\n\n\t// Does this endpoint is blocked by ACL/Firewall rules (no incoming traffic) \n\tpublic blocked: BoolTypeCode;\n\n\t// Sort descriptor (field name with suffix +/- for sort order) \n\tpublic sort: string;\n\n\t// Page number for pagination \n\tpublic page: number;\n\n\t// Page size: number of items per page \n\tpublic size: number;\n\n constructor(streamId?: string, dstIP?: string[], dstDNS?: string[], dstPort?: number[], protocol?: string[], appProtocol?: string[], name?: string[], country?: string[], malicious?: BoolTypeCode, blocked?: BoolTypeCode, sort?: string, page?: number, size?: number) { \n if (streamId !== undefined) { this.streamId = streamId; }\n if (dstIP !== undefined) { this.dstIp = dstIP; }\n if (dstDNS !== undefined) { this.dstDns = dstDNS; }\n if (dstPort !== undefined) { this.dstPort = dstPort; }\n if (protocol !== undefined) { this.protocol = protocol; }\n if (appProtocol !== undefined) { this.appProtocol = appProtocol; }\n if (name !== undefined) { this.name = name; }\n if (country !== undefined) { this.country = country; }\n if (malicious !== undefined) { this.malicious = malicious; }\n if (blocked !== undefined) { this.blocked = blocked; }\n if (sort !== undefined) { this.sort = sort; }\n if (page !== undefined) { this.page = page; }\n if (size !== undefined) { this.size = size; }\n }\n\n}\n\n\n","\nimport { Tuple } from './Tuple';\nimport { StreamConfig } from './StreamConfig';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Stream represents data stream configuration for group of identical IoT devices service the same purpose and sharing the same attributes (e.g. water meter, point-of-sale, ATM IP camera etc)\nexport class Stream extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream name \n\tpublic name: string;\n\n\t// Stream description \n\tpublic description: string;\n\n\t// The APN name in the connectivity provider's mobile code \n\tpublic providerAPN: string;\n\n\t// Flag to indicate if stream is enabled (to be processed) \n\tpublic enabled: boolean;\n\n\t// List of custom attributes (key-value pairs) for user defined data \n\tpublic labels: Tuple<string, string>[];\n\n\t// Stream configuration \n\tpublic config: StreamConfig;\n\n}\n\nexport function GetStreamColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"providerAPN\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"enabled\", \"boolean\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"labels\", \"Tuple<string, string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"config\", \"StreamConfig\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { BaseMessage } from './BaseMessage';\nimport { ColumnDef } from './ColumnDef';\n\n// Message is a generic message structure that embeds BaseMessage and adds a typed payload.\n// Type Parameters:\n// T: The type of the payload.\nexport class Message<T> extends BaseMessage {\n\n\t// The typed data payload of the message. \n\tpublic payload: T;\n\n}\n\nexport function GetMessageColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"payload\", \"T\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { BaseRestResponse } from './BaseRestResponse';\nimport { ColumnDef } from './ColumnDef';\n\n// EntityResponse message is returned for any create/update action on entity\nexport class EntityResponse<T> extends BaseRestResponse {\n\n\t// The entity \n\tpublic entity: T;\n\n}\n\nexport function GetEntityResponseColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"entity\", \"T\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { NotificationTypeCode } from './NotificationTypeCode';\nimport { BaseEntityEx } from './BaseEntityEx';\nimport { ColumnDef } from './ColumnDef';\n\n// Notification represents a notification email\nexport class Notification extends BaseEntityEx {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Notification type: UNDEFINED | ACCOUNT_ONBOARDING | ACCOUNT_IS_READY \n\tpublic notificationType: NotificationTypeCode;\n\n}\n\nexport function GetNotificationColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"notificationType\", \"NotificationTypeCode\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { ConditionDescription } from './ConditionDescription';\n\n// Indicator model represents an event indicator which is a feature and feature value within a normal range\nexport class Indicator {\n\n\t// Feature name \n\tpublic name: string;\n\n\t// Level of Significance \n\tpublic significance: number;\n\n\t// Min normal value \n\tpublic min: number;\n\n\t// Max normal value \n\tpublic max: number;\n\n\t// Actual value of the feature \n\tpublic actual: number;\n\n\t// Reflects Rule’s condition which triggered Event creation \n\tpublic condition: ConditionDescription;\n\n\t// Reflects actual value of corresponding Flow record field which is result of Rule’s condition match \n\tpublic actualVal: string;\n\n constructor(name?: string, significance?: number, min?: number, max?: number, actual?: number, condition?: ConditionDescription, actualVal?: string) { \n if (name !== undefined) { this.name = name; }\n if (significance !== undefined) { this.significance = significance; }\n if (min !== undefined) { this.min = min; }\n if (max !== undefined) { this.max = max; }\n if (actual !== undefined) { this.actual = actual; }\n if (condition !== undefined) { this.condition = condition; }\n if (actualVal !== undefined) { this.actualVal = actualVal; }\n }\n\n}\n\n\n","\nimport { GeoData } from './GeoData';\nimport { BaseEntity } from './BaseEntity';\nimport { DeviceTypeCode } from './DeviceTypeCode';\nimport { DeviceStatusCode } from './DeviceStatusCode';\nimport { Tuple } from './Tuple';\nimport { DeviceActionCode } from './DeviceActionCode';\nimport { SIM } from './SIM';\nimport { ColumnDef } from './ColumnDef';\n\n// Device entity is an IoT device representation with attributes and state\n// Device may have several external identities such as\n// * IMSI - International mobile subscriber identity (2G/3G/4G)\n// * SUPI - Subscription Permanent Identifier (IMSI equivalent for 5G)\n// * IMEI - International Mobile Equipment Identity (2G/3G/4G)\n// * SUCI - Subscription Concealed Identifier (5G)\nexport class Device extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// The device identity in the external system (used for integration) \n\tpublic externalId: string;\n\n\t// Device name \n\tpublic name: string;\n\n\t// Device description \n\tpublic description: string;\n\n\t// Country name \n\tpublic country: string;\n\n\t// Mobile network operator name \n\tpublic operator: string;\n\n\t// Device type: UNDEFINED | CONTROLLER | METER | SENSOR ... \n\tpublic type: DeviceTypeCode;\n\n\t// Device status: UNDEFINED | PENDING | ACTIVE | INACTIVE | SUSPENDED \n\tpublic status: DeviceStatusCode;\n\n\t// Device last activity timestamp [Epoch milliseconds Timestamp] \n\tpublic lastActivity: number;\n\n\t// Device MAC address \n\tpublic mac: string;\n\n\t// Device IP address (IPv4 or IPv6) \n\tpublic ip: string;\n\n\t// Device mobile subscriber id (IMSI or SUPI) \n\tpublic sid: string;\n\n\t// Device mobile equipment id (IMEI or PEI) \n\tpublic eid: string;\n\n\t// Device current security score \n\tpublic score: number;\n\n\t// List of device tags \n\tpublic tags: string[];\n\n\t// List of attributes (key-value pairs) \n\tpublic labels: Tuple<string, string>[];\n\n\t// Number of events for the time period (calculated field) \n\tpublic eventCount: number;\n\n\t// Action applied on the device \n\tpublic actionApplied: DeviceActionCode;\n\n\t// Who applied the action (user id) \n\tpublic ActionAppliedBy: string;\n\n\t// When action was applied [Epoch milliseconds Timestamp] \n\tpublic ActionAppliedOn: number;\n\n\t// List of SIM cards associated with the device \n\tpublic simCards: SIM[];\n\n\t// GeoIP information based on MaxMind database for device address \n\tpublic address: GeoData;\n\n}\n\nexport function GetDeviceColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"externalId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"country\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"operator\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"DeviceTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"status\", \"DeviceStatusCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"lastActivity\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"mac\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"ip\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"sid\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"eid\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"score\", \"number\", \"decimal\"));\n\tresult.push(new ColumnDef(\"\", \"tags\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"labels\", \"Tuple<string, string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"eventCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"actionApplied\", \"DeviceActionCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"ActionAppliedBy\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"ActionAppliedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"simCards\", \"SIM\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"address\", \"GeoData\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { Event } from './Event';\nimport { Device } from './Device';\nimport { ColumnDef } from './ColumnDef';\n\n// DeviceWithEvents entity is device info with list of attached events\n// This is for display only\nexport class DeviceWithEvents extends Device {\n\n\t// List of events \n\tpublic events: Event[];\n\n}\n\nexport function GetDeviceWithEventsColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"events\", \"Event\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Image stores a small base64 picture (such as: user avatar, account logo, etc) or URI (for large pictures) in the database\n// The id of the image is the entity id\nexport class Image extends BaseEntity {\n\n\t// Image content URL (starts with http) or embedded image (base64) \n\tpublic content: string;\n\n\t// Image content Mime Type \n\tpublic contentType: string;\n\n}\n\nexport function GetImageColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"content\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"contentType\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { RuleTypeCode } from './RuleTypeCode';\nimport { DataSourceCode } from './DataSourceCode';\nimport { ConditionDescription } from './ConditionDescription';\nimport { DeviceTypeCode } from './DeviceTypeCode';\nimport { EventTypeCode } from './EventTypeCode';\nimport { SeverityTypeCode } from './SeverityTypeCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Rule entity\nexport class Rule extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// Rule name \n\tpublic name: string;\n\n\t// Rule type \n\tpublic type: RuleTypeCode;\n\n\t// Rule description \n\tpublic description: string;\n\n\t// Flag to indicate if this is a system rule (read-only) or user-defined rule \n\tpublic isSystemRule: boolean;\n\n\t// Flag to indicate if this rule is active (true) or suspended (false), only active rules are evaluated \n\tpublic isActiveRule: boolean;\n\n\t// Rule context - what is the data source to evaluate the rule \n\tpublic context: DataSourceCode;\n\n\t// List of IDS rule lines (Suricata format) \n\tpublic idsRuleLines: string[];\n\n\t// Global threashold for IDS rules (Suricata format) \n\tpublic idsGlobalThreashold: string;\n\n\t// List of AND conditions, all of them must be true for the rule to trigger event \n\tpublic matchAll: ConditionDescription[];\n\n\t// List of OR conditions, at least one of them must be true for the rule to trigger event \n\tpublic matchAny: ConditionDescription[];\n\n\t// Exclude devices with ID included in this list \n\tpublic excludeIDs: string[];\n\n\t// Exclude devices with type included in this list \n\tpublic excludeTags: string[];\n\n\t// Exclude devices with this type \n\tpublic excludeTypes: DeviceTypeCode[];\n\n\t// Include devices with ID included in this list \n\tpublic includeIDs: string[];\n\n\t// Include devices with type included in this list \n\tpublic includeTags: string[];\n\n\t// Include devices with this type \n\tpublic includeTypes: DeviceTypeCode[];\n\n\t// The time duration (in seconds) for consecutive aggregations \n\tpublic timeWindowSec: number;\n\n\t// Set the event type on events generated by this rule \n\tpublic setEventType: EventTypeCode;\n\n\t// Set the event severity on events generated by this rule \n\tpublic setEventSeverity: SeverityTypeCode;\n\n\t// time of last alert \n\tpublic lastAlertTimestamp: number;\n\n\t// amount of alerts \n\tpublic alertsCount: number;\n\n}\n\nexport function GetRuleColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"RuleTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"isSystemRule\", \"boolean\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"isActiveRule\", \"boolean\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"context\", \"DataSourceCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"idsRuleLines\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"idsGlobalThreashold\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"matchAll\", \"ConditionDescription\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"matchAny\", \"ConditionDescription\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"excludeIDs\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"excludeTags\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"excludeTypes\", \"DeviceTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"includeIDs\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"includeTags\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"includeTypes\", \"DeviceTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"timeWindowSec\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"setEventType\", \"EventTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"setEventSeverity\", \"SeverityTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"lastAlertTimestamp\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"alertsCount\", \"number\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { Rule } from './Rule';\nimport { ColumnDef } from './ColumnDef';\n\n// RuleWithSQL is an API response wrapper that extends the base Rule definition\n// with an additional SQL field.\n// The SQL field contains the BigQuery-compatible WHERE clause generated from\n// the rule's MatchAll (AND) and MatchAny (OR) conditions, using the UDR → SQL grammar.\n// This struct is used for API responses where consumers (UI, external services, tools)\n// need to inspect or execute the SQL representation of a rule without modifying the rule itself.\n// Note: The SQL field is computed at runtime and is not persisted in the database.\nexport class RuleWithSQL extends Rule {\n\n\t// \n\tpublic sql: string;\n\n}\n\nexport function GetRuleWithSQLColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"sql\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// SessionRecord represents network statistics for a session\nexport class SessionRecord extends BaseEntity {\n\n\t// Indication to the source location of the record \n\tpublic source: string;\n\n\t// Session ID \n\tpublic sessionId: string;\n\n\t// Account ID \n\tpublic accountId: string;\n\n\t// Stream ID \n\tpublic streamId: string;\n\n\t// Device ID \n\tpublic deviceId: string;\n\n\t// Device SIM card ID (to support multiple SIMs) \n\tpublic simId: string;\n\n\t// Start window time in epoch time milliseconds \n\tpublic startTime: number;\n\n\t// End window time in epoch time milliseconds \n\tpublic endTime: number;\n\n\t// Device IP \n\tpublic deviceIp: string;\n\n\t// Device Port \n\tpublic devicePort: number;\n\n\t// Destination (remote) IP \n\tpublic dstIp: string;\n\n\t// Destination (remote) Port \n\tpublic dstPort: number;\n\n\t// Destination (remote) FQDN \n\tpublic dstDns: string;\n\n\t// Protocol \n\tpublic protocol: string;\n\n\t// Number of incoming packets (to the device) \n\tpublic packetsIn: number;\n\n\t// Number of outgoing packets (from the device) \n\tpublic packetsOut: number;\n\n\t// Total number of incoming bytes (to the device) \n\tpublic bytesIn: number;\n\n\t// Total number of outgoing bytes (from the device) \n\tpublic bytesOut: number;\n\n\t// List of labels \n\tpublic labels: string[];\n\n}\n\nexport function GetSessionRecordColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"source\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"sessionId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"simId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"startTime\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"endTime\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceIp\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"devicePort\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstIp\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstPort\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstDns\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"protocol\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"packetsIn\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"packetsOut\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"bytesIn\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"bytesOut\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"labels\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// Location model represents WGS-84 coordinates\nexport class Location {\n\n\t// \n\tpublic lon: number;\n\n\t// \n\tpublic lat: number;\n\n constructor(lon?: number, lat?: number) { \n if (lon !== undefined) { this.lon = lon; }\n if (lat !== undefined) { this.lat = lat; }\n }\n\n}\n\n\n","\n\n// StringIntValue model used as a string key-value pair\nexport class StringIntValue {\n\n\t// Tuple key \n\tpublic key: string;\n\n\t// Tuple value \n\tpublic value: number;\n\n constructor(key?: string, value?: number) { \n if (key !== undefined) { this.key = key; }\n if (value !== undefined) { this.value = value; }\n }\n\n}\n\n\n","\nimport { Link } from './Link';\nimport { Node } from './Node';\n\n// NetworkMap is a data structure representing a set of nodes and vertex representing a network\nexport class NetworkMap {\n\n\t// List of nodes \n\tpublic nodes: Node[];\n\n\t// List of links \n\tpublic links: Link[];\n\n constructor(nodes?: Node[], links?: Link[]) { \n if (nodes !== undefined) { this.nodes = nodes; }\n if (links !== undefined) { this.links = links; }\n }\n\n}\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { DeviceActionCode } from './DeviceActionCode';\nimport { ColumnDef } from './ColumnDef';\n\n// Action entity is a user action applied on an event or device\nexport class Action extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// Event id (in case action was applied on an event) \n\tpublic eventId: string;\n\n\t// Device id (in case action was applied on a device) \n\tpublic deviceId: string;\n\n\t// Action type: UNDEFINED | REDIRECT | SUSPEND | BLOCK_IP ... \n\tpublic type: DeviceActionCode;\n\n\t// User id who applied the action \n\tpublic userId: string;\n\n}\n\nexport function GetActionColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"eventId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"DeviceActionCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"userId\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { DeviceTypeCode } from './DeviceTypeCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// DeviceReport is a periodic (usually daily) snapshot on status of all devices, field createdOn indicates the snapshot time\nexport class DeviceReport extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// Total device count \n\tpublic totalDevices: number;\n\n\t// Total active device count (where their last activity was up to TBD hours) \n\tpublic activeDevices: number;\n\n\t// Total device at risk count (where their score is more than 30) \n\tpublic devicesAtRisk: number;\n\n\t// Total affected device count: (where their distinct event count is more than 0) \n\tpublic affectedDevices: number;\n\n\t// Distribution of devices at risk by type \n\tpublic devicesAtRiskByType: Map<DeviceTypeCode,number>;\n\n}\n\nexport function GetDeviceReportColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalDevices\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"activeDevices\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"devicesAtRisk\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"affectedDevices\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"devicesAtRiskByType\", \"Map<DeviceTypeCode,number>\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// FloatInterval represents an interval of min and max numbers Floats\nexport class FloatInterval {\n\n\t// From interval \n\tpublic from: number;\n\n\t// To interval \n\tpublic to: number;\n\n constructor(from?: number, to?: number) { \n if (from !== undefined) { this.from = from; }\n if (to !== undefined) { this.to = to; }\n }\n\n}\n\n\n","\n\n// MaliciousIPData is a data structure representing malicious IP and its statistics\nexport class MaliciousIPData {\n\n\t// The malicious IP \n\tpublic ip: string;\n\n\t// Total related events \n\tpublic totalEvents: number;\n\n\t// Total related devices \n\tpublic totalDevices: number;\n\n\t// Total number of malicious IPs \n\tpublic totalMaliciousIPs: number;\n\n constructor(iP?: string, totalEvents?: number, totalDevices?: number, totalMaliciousIPs?: number) { \n if (iP !== undefined) { this.ip = iP; }\n if (totalEvents !== undefined) { this.totalEvents = totalEvents; }\n if (totalDevices !== undefined) { this.totalDevices = totalDevices; }\n if (totalMaliciousIPs !== undefined) { this.totalMaliciousIPs = totalMaliciousIPs; }\n }\n\n}\n\n\n","\nimport { Device } from './Device';\nimport { Event } from './Event';\nimport { ColumnDef } from './ColumnDef';\n\n// EventWithDevice entity is an event with the device info (for display onlY)\nexport class EventWithDevice extends Event {\n\n\t// Device attached to the event \n\tpublic device: Device;\n\n}\n\nexport function GetEventWithDeviceColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"device\", \"Device\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { NotificationTypeCode } from './NotificationTypeCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// NotificationMessage represents a notification email\nexport class NotificationMessage extends BaseEntity {\n\n\t// Account ID related to the notification context \n\tpublic accountId: string;\n\n\t// Human-readable message shown to the user \n\tpublic description: string;\n\n\t// List of parts to build the action URL (e.g. [\"console\", \"reports\"]) \n\tpublic actionParts: string[];\n\n\t// Type indicates the notification category, e.g. \"report\", \"system\", \"device\" \n\tpublic type: NotificationTypeCode;\n\n}\n\nexport function GetNotificationMessageColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"actionParts\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"NotificationTypeCode\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { NotificationMessage } from './NotificationMessage';\nimport { ColumnDef } from './ColumnDef';\n\n// NotificationMessageDTO is a UI DTO that combines NotificationMessage and UserNotificationMessage fields\nexport class NotificationMessageDTO extends NotificationMessage {\n\n\t// \n\tpublic userId: string;\n\n\t// \n\tpublic isRead: boolean;\n\n\t// \n\tpublic readAt: number;\n\n}\n\nexport function GetNotificationMessageDTOColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"userId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"isRead\", \"boolean\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"readAt\", \"number\", \"datetime\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// DevicesAtRiskConfig is int of minimal score for device to be at risk\nexport class DevicesAtRiskConfig {\n\n\t// Minimal score for device to be at risk \n\tpublic minScore: number;\n\n constructor(minScore?: number) { \n if (minScore !== undefined) { this.minScore = minScore; }\n }\n\n}\n\n\n","\n\n// LocalTime represents the time (year, month, day, hour, minute, second) as number in the following format: YYYYMMDDhhmmss.\n// It is useful for storing time in a compact, human-readable integer format that preserves sorting order.\nexport class LocalTime {\n\n constructor() { \n }\n\n}\n\n\n","\nimport { Rule } from './Rule';\nimport { ColumnDef } from './ColumnDef';\n\n// IdsRule is an API response wrapper that extends the base Rule definition\n// with an additional SQL field for IDS rules.\nexport class IdsRule extends Rule {\n\n\t// \n\tpublic sql: string;\n\n}\n\nexport function GetIdsRuleColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"sql\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Checkpoint represents parsing status in time that preserves parsing cycle statistics and last checkpoint (timestamp) to avoid parsing the same files over and over again\nexport class Checkpoint extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// Checkpoint timestamp [Epoch milliseconds Timestamp] \n\tpublic checkpoint: number;\n\n\t// First packet timestamp [Epoch milliseconds Timestamp] \n\tpublic firstPacketTime: number;\n\n\t// Last packet timestamp [Epoch milliseconds Timestamp] \n\tpublic lastPacketTime: number;\n\n\t// Checkpoint label name (usually file name) \n\tpublic label: string;\n\n\t// General purpose description \n\tpublic description: string;\n\n\t// Total elapsed time (between updated and created time) \n\tpublic elapsed: number;\n\n\t// Total elapsed time spent in IDS processing \n\tpublic idsElapsed: number;\n\n\t// Total files parsed \n\tpublic totalFiles: number;\n\n\t// Total packets in the file \n\tpublic totalPackets: number;\n\n\t// Total bytes in the processed files, for use by Suricata parser \n\tpublic totalBytes: number;\n\n\t// Total alarms generated by Suricata parser when processing one files batch \n\tpublic totalAlarms: number;\n\n\t// Total usage records created \n\tpublic totalUsage: number;\n\n\t// Total session records created \n\tpublic totalSession: number;\n\n\t// Total RADIUS records created \n\tpublic totalRadius: number;\n\n\t// Total number of overlapped packets (their timestamp is earlier than the latest checkpoint) \n\tpublic overlappedPackets: number;\n\n\t// Total number of packets that failed parsing \n\tpublic failedPackets: number;\n\n\t// Total number of packets not related to the tracked devices \n\tpublic irrelevantPackets: number;\n\n\t// Total number of packets that could not be mapped to device identity \n\tpublic unmappedPackets: number;\n\n\t// Total number of successfully processed packets \n\tpublic processedPackets: number;\n\n\t// Checkpoint state: 0 - created, 1 - in progress, 2 - completed \n\tpublic state: number;\n\n\t// Identity of the worker who processed the file \n\tpublic processedBy: string;\n\n\t// Pkts is the total number of packets seen at the decoder Total packet & byte volume; used to track stream activity, load patterns, or downtime. Normalize per hour → “packets/s” or “MB/s”. \n\tpublic decoderPackets: number;\n\n\t// Bytes is the total number of bytes seen at the decoder \n\tpublic decoderBytes: number;\n\n\t// AvgPktSize is the average packet size seen at the decoder Indicates traffic type (IoT telemetry small; firmware downloads large) Changes may mark new payload types or DoS \n\tpublic decoderAvgPktSize: number;\n\n\t// MaxPktSize is the maximum packet size seen at the decoder \n\tpublic decoderMaxPktSize: number;\n\n\t// Total is the cumulative number of flows tracked during the stats window Total vs. concurrent flows → connection churn rate. Baseline for “device activity density.” \n\tpublic flowTotal: number;\n\n\t// The count of TCP flows seen (cumulative in the window) Protocol mix breakdown. Drift over time signals behavior change \n\tpublic flowTcp: number;\n\n\t// The count of UDP flows seen (cumulative in the window) \n\tpublic flowUdp: number;\n\n\t// The count of ICMP flows seen (cumulative in the window) \n\tpublic flowIcmp: number;\n\n\t// TCPReuse counts flows where 5-tuple/ports were quickly reused (possible scan/NAT churn) \n\tpublic flowTcpReuse: number;\n\n\t// Elephant counts flows flagged as large/long-lived per engine heuristics \n\tpublic flowElephant: number;\n\n\t// Memcap is the configured memory cap for the flow engine (bytes) \n\tpublic flowMemcap: number;\n\n\t// MemUse is current memory used by the flow engine (bytes) \n\tpublic flowMemuse: number;\n\n\t// Syn counts SYN packets seen (client connection attempts) TCP Behavior (handshake, teardown, quality) \n\tpublic tcpSyn: number;\n\n\t// SynAck counts SYN+ACK responses seen (server handshake replies) \n\tpublic tcpSynAck: number;\n\n\t// Rst counts TCP RST packets (aborted connections, port scans, resets) \n\tpublic tcpRst: number;\n\n\t// AckUnseenData counts ACKs referencing sequence numbers never observed \n\tpublic tcpAckUnseenData: number;\n\n\t// MidstreamPickups counts flows picked up midstream (no handshake observed) \n\tpublic tcpMidstreamPickups: number;\n\n\t// Sessions counts total TCP sessions tracked since startup \n\tpublic sessions: number;\n\n\t// \n\tpublic rulesLoaded: number;\n\n\t// \n\tpublic rulesFailed: number;\n\n\t// \n\tpublic rulesSkipped: number;\n\n\t// \n\tpublic alert: number;\n\n\t// \n\tpublic alertsSuppressed: number;\n\n\t// Total number of stream flows, excluding rejected flows Stream-related KPI fields \n\tpublic streamFlowsTotal: number;\n\n\t// Number of rejected stream flows due to unknown device \n\tpublic streamFlowRejectUnknownDevice: number;\n\n\t// Number of rejected TCP stream flows due to no data payload \n\tpublic streamFlowTcpRejectNoData: number;\n\n\t// Number of rejected stream flows due to ACL rules \n\tpublic streamFlowRejectACL: number;\n\n\t// \n\tpublic streamFlowTcpTotal: number;\n\n\t// \n\tpublic streamFlowTcpBytesIn: number;\n\n\t// \n\tpublic streamFlowTcpBytesOut: number;\n\n\t// \n\tpublic streamFlowTcpPacketsIn: number;\n\n\t// \n\tpublic streamFlowTcpPacketsOut: number;\n\n\t// \n\tpublic streamFlowUdpTotal: number;\n\n\t// \n\tpublic streamFlowUdpBytesIn: number;\n\n\t// \n\tpublic streamFlowUdpBytesOut: number;\n\n\t// \n\tpublic streamFlowUdpPacketsIn: number;\n\n\t// \n\tpublic streamFlowUdpPacketsOut: number;\n\n}\n\nexport function GetCheckpointColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"checkpoint\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"firstPacketTime\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"lastPacketTime\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"label\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"elapsed\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"idsElapsed\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalFiles\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalPackets\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalBytes\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalAlarms\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalUsage\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalSession\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalRadius\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"overlappedPackets\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"failedPackets\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"irrelevantPackets\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"unmappedPackets\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"processedPackets\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"state\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"processedBy\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"decoderPackets\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"decoderBytes\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"decoderAvgPktSize\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"decoderMaxPktSize\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"flowTotal\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"flowTcp\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"flowUdp\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"flowIcmp\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"flowTcpReuse\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"flowElephant\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"flowMemcap\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"flowMemuse\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"tcpSyn\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"tcpSynAck\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"tcpRst\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"tcpAckUnseenData\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"tcpMidstreamPickups\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"sessions\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"rulesLoaded\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"rulesFailed\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"rulesSkipped\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"alert\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"alertsSuppressed\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowsTotal\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowRejectUnknownDevice\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowTcpRejectNoData\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowRejectACL\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowTcpTotal\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowTcpBytesIn\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowTcpBytesOut\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowTcpPacketsIn\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowTcpPacketsOut\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowUdpTotal\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowUdpBytesIn\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowUdpBytesOut\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowUdpPacketsIn\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamFlowUdpPacketsOut\", \"number\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// NetworkTopologyReportKPIs represents list of global KPIs for topology\nexport class NetworkTopologyReportKPIs {\n\n\t// number of distinct Public IPs \n\tpublic publicIPCount: number;\n\n\t// number of distinct Public DNS \n\tpublic publicDNSCount: number;\n\n\t// number of distinct countries \n\tpublic countriesCount: number;\n\n\t// number of distinct locations \n\tpublic locationsCount: number;\n\n\t// number of distinct ports \n\tpublic portsCount: number;\n\n\t// number of distinct IP protocols (TCP, UDP, ICMP) \n\tpublic protocolsCount: number;\n\n\t// number of distinct applications \n\tpublic applicationsCount: number;\n\n\t// number of distinct suspicious endpoints \n\tpublic suspiciousCount: number;\n\n constructor(publicIPCount?: number, publicDNSCount?: number, countriesCount?: number, locationsCount?: number, portsCount?: number, protocolsCount?: number, applicationsCount?: number, suspiciousCount?: number) { \n if (publicIPCount !== undefined) { this.publicIPCount = publicIPCount; }\n if (publicDNSCount !== undefined) { this.publicDNSCount = publicDNSCount; }\n if (countriesCount !== undefined) { this.countriesCount = countriesCount; }\n if (locationsCount !== undefined) { this.locationsCount = locationsCount; }\n if (portsCount !== undefined) { this.portsCount = portsCount; }\n if (protocolsCount !== undefined) { this.protocolsCount = protocolsCount; }\n if (applicationsCount !== undefined) { this.applicationsCount = applicationsCount; }\n if (suspiciousCount !== undefined) { this.suspiciousCount = suspiciousCount; }\n }\n\n}\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// UserNotificationMessage represents a notification assigned to a user\nexport class UserNotificationMessage extends BaseEntity {\n\n\t// FK to notification_message.id \n\tpublic notificationId: string;\n\n\t// FK to users.id \n\tpublic userId: string;\n\n\t// default false \n\tpublic isRead: boolean;\n\n\t// When the user acknowledged it \n\tpublic readAt: number;\n\n}\n\nexport function GetUserNotificationMessageColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"notificationId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"userId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"isRead\", \"boolean\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"readAt\", \"number\", \"datetime\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// EntityAction represents the type of action performed on an entity.\nexport class EntityAction {\n\n constructor() { \n }\n\n}\n\n\n","\nimport { Interval } from './Interval';\nimport { Tuple } from './Tuple';\n\n// SeriesData model represents a set of data structure for graphs\nexport class SeriesData<T,V> {\n\n\t// Range of the series (from ... to) \n\tpublic interval: Interval;\n\n\t// Map of int element to its value \n\tpublic values: Tuple<T, V>[];\n\n constructor(interval?: Interval, values?: Tuple<T, V>[]) { \n if (interval !== undefined) { this.interval = interval; }\n if (values !== undefined) { this.values = values; }\n }\n\n}\n\n\n","\nimport { Interval } from './Interval';\nimport { SeverityTypeCode } from './SeverityTypeCode';\n\n// SeverityIntervalTuple is tuple of SeverityTypeCode and Interval\nexport class SeverityIntervalTuple {\n\n\t// ALPHA_WEIGHT_FACTOR for shieldex calculation \n\tpublic severity: SeverityTypeCode;\n\n\t// ALPHA_WEIGHT_FACTOR for shieldex calculation \n\tpublic interval: Interval;\n\n constructor(severity?: SeverityTypeCode, interval?: Interval) { \n if (severity !== undefined) { this.severity = severity; }\n if (interval !== undefined) { this.interval = interval; }\n }\n\n}\n\n\n","\nimport { BaseRestResponse } from './BaseRestResponse';\nimport { ColumnDef } from './ColumnDef';\n\n// ActionResponse message is returned for any action on entity with no return data (e.d. delete)\nexport class ActionResponse extends BaseRestResponse {\n\n\t// The entity key (Id) \n\tpublic key: string;\n\n\t// Additional data \n\tpublic data: string;\n\n}\n\nexport function GetActionResponseColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"key\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"data\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// Entities is a generic wrapper to express a list of primitive or complex types as an Entity.\n// It allows a collection of items to be treated as a single Entity unit.\nexport class Entities<T> {\n\n\t// Values is the list of wrapped entities or values \n\tpublic values: T[];\n\n constructor(values?: T[]) { \n if (values !== undefined) { this.values = values; }\n }\n\n}\n\n\n","\nimport { TimeFrame } from './TimeFrame';\nimport { TimeDataPoint } from './TimeDataPoint';\n\n// TimeSeries represents a named collection of data points over a specific time range.\nexport class TimeSeries<T> {\n\n\t// Name of the time series \n\tpublic name: string;\n\n\t// Range covers the start and end time of the series \n\tpublic range: TimeFrame;\n\n\t// Values contains the data points \n\tpublic values: TimeDataPoint<T>[];\n\n constructor(name?: string, range?: TimeFrame, values?: TimeDataPoint<T>[]) { \n if (name !== undefined) { this.name = name; }\n if (range !== undefined) { this.range = range; }\n if (values !== undefined) { this.values = values; }\n }\n\n}\n\n\n","\nimport { Location } from './Location';\n\n// GeoData model represents Geographic data associated with IP\n// This structure is based on the Elasticsearch GeoIP pipeline fetching data from MaxMind database\nexport class GeoData {\n\n\t// Country ISO code \n\tpublic country_iso_code: string;\n\n\t// Country name \n\tpublic country_name: string;\n\n\t// Region ISO code \n\tpublic region_iso_code: string;\n\n\t// Region name \n\tpublic region_name: string;\n\n\t// City name \n\tpublic city_name: string;\n\n\t// Geo Location (WGS-84) \n\tpublic location: Location;\n\n\t// Street name \n\tpublic street: string;\n\n\t// Postal code \n\tpublic postal: number;\n\n constructor(countryIsoCode?: string, countryName?: string, regionIsoCode?: string, regionName?: string, cityName?: string, location?: Location, street?: string, postal?: number) { \n if (countryIsoCode !== undefined) { this.country_iso_code = countryIsoCode; }\n if (countryName !== undefined) { this.country_name = countryName; }\n if (regionIsoCode !== undefined) { this.region_iso_code = regionIsoCode; }\n if (regionName !== undefined) { this.region_name = regionName; }\n if (cityName !== undefined) { this.city_name = cityName; }\n if (location !== undefined) { this.location = location; }\n if (street !== undefined) { this.street = street; }\n if (postal !== undefined) { this.postal = postal; }\n }\n\n}\n\n\n","\n\n// NetworkTopologyRecord represents raw data structure of BigQuery table\nexport class NetworkTopologyRecord {\n\n\t// Stream ID - not persisted \n\tpublic streamId: string;\n\n\t// Destination IP address \n\tpublic dstIP: string;\n\n\t// Comma-separated list of DNS names \n\tpublic dstDNS: string;\n\n\t// Destination port number \n\tpublic dstPort: number;\n\n\t// IP Protocol used in layer 3 (e.g., TCP, UDP) \n\tpublic protocol: string;\n\n\t// Applicative Protocol used in layer 7 (e.g., HTTP, MQTT) \n\tpublic appProtocol: string;\n\n\t// Additional information about the application \n\tpublic appName: string;\n\n\t// Number of devices communicating with this IP \n\tpublic devices: number;\n\n\t// IP Geo location provided as WKT format \n\tpublic geo: string;\n\n\t// IP Owner name \n\tpublic name: string;\n\n\t// IP Owner address \n\tpublic address: string;\n\n\t// Does this endpoint involved in malicious activity \n\tpublic malicious: boolean;\n\n\t// List of malicious activities tags \n\tpublic tags: string[];\n\n\t// Country code \n\tpublic country: string;\n\n\t// Does this endpoint is blocked by ACL/Firewall rules (no incoming traffic) \n\tpublic blocked: boolean;\n\n constructor(streamId?: string, dstIP?: string, dstDNS?: string, dstPort?: number, protocol?: string, appProtocol?: string, appName?: string, devices?: number, geo?: string, name?: string, address?: string, malicious?: boolean, tags?: string[], country?: string, blocked?: boolean) { \n if (streamId !== undefined) { this.streamId = streamId; }\n if (dstIP !== undefined) { this.dstIP = dstIP; }\n if (dstDNS !== undefined) { this.dstDNS = dstDNS; }\n if (dstPort !== undefined) { this.dstPort = dstPort; }\n if (protocol !== undefined) { this.protocol = protocol; }\n if (appProtocol !== undefined) { this.appProtocol = appProtocol; }\n if (appName !== undefined) { this.appName = appName; }\n if (devices !== undefined) { this.devices = devices; }\n if (geo !== undefined) { this.geo = geo; }\n if (name !== undefined) { this.name = name; }\n if (address !== undefined) { this.address = address; }\n if (malicious !== undefined) { this.malicious = malicious; }\n if (tags !== undefined) { this.tags = tags; }\n if (country !== undefined) { this.country = country; }\n if (blocked !== undefined) { this.blocked = blocked; }\n }\n\n}\n\n\n","\nimport { Distribution } from './Distribution';\nimport { DeviceReport } from './DeviceReport';\nimport { ReportSourceCode } from './ReportSourceCode';\nimport { BaseEntityEx } from './BaseEntityEx';\nimport { ColumnDef } from './ColumnDef';\n\n// ReportInstance represents generated report\nexport class ReportInstance extends BaseEntityEx {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// From period of generated report \n\tpublic from: number;\n\n\t// To period of generated report \n\tpublic to: number;\n\n\t// Shield index score (1-100) \n\tpublic shieldexScore: number;\n\n\t// Devices distribution by status per report \n\tpublic devicesDistributionByStatus: Distribution<number>;\n\n\t// Device report \n\tpublic deviceReport: DeviceReport;\n\n\t// Alerts distribution by severity \n\tpublic alertsDistributionBySeverity: Distribution<number>;\n\n\t// link to download report \n\tpublic downloadLink: string;\n\n\t// report trigger source: Undefined, Ondemand or Periodic \n\tpublic reportTriggerSource: ReportSourceCode;\n\n\t// Username triggered the report or empty if system triggered \n\tpublic triggeredByUser: string;\n\n\t// will be populated with value of triggering Report’s id. \n\tpublic triggeredByScheduler: string;\n\n}\n\nexport function GetReportInstanceColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"from\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"to\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"shieldexScore\", \"number\", \"decimal\"));\n\tresult.push(new ColumnDef(\"\", \"devicesDistributionByStatus\", \"Distribution<number>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceReport\", \"DeviceReport\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"alertsDistributionBySeverity\", \"Distribution<number>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"downloadLink\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"reportTriggerSource\", \"ReportSourceCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"triggeredByUser\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"triggeredByScheduler\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\nexport class IdsList {\n\n\t// IDS rule code name \n\tpublic codeName: string;\n\n\t// \n\tpublic description: string;\n\n\t// list of operand string values \n\tpublic values: string[];\n\n constructor(codeName?: string, description?: string, values?: string[]) { \n if (codeName !== undefined) { this.codeName = codeName; }\n if (description !== undefined) { this.description = description; }\n if (values !== undefined) { this.values = values; }\n }\n\n}\n\n\n","\n\n// EntityRequest message is returned for any create/update action on entity\nexport class EntityRequest<T> {\n\n\t// The entity \n\tpublic entity: T;\n\n constructor(entity?: T) { \n if (entity !== undefined) { this.entity = entity; }\n }\n\n}\n\n\n","\n\n// NotificationMessageStats returns statistics about notifications for a user\nexport class NotificationMessageStats {\n\n\t// \n\tpublic unreadCount: number;\n\n\t// \n\tpublic totalCount: number;\n\n constructor(unreadCount?: number, totalCount?: number) { \n if (unreadCount !== undefined) { this.unreadCount = unreadCount; }\n if (totalCount !== undefined) { this.totalCount = totalCount; }\n }\n\n}\n\n\n","\nimport { ReportTypeCode } from './ReportTypeCode';\nimport { TimeFrame } from './TimeFrame';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Report represents a system generated and scheduled report\nexport class Report extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// User id who owns the report \n\tpublic userId: string;\n\n\t// Schedule report name \n\tpublic name: string;\n\n\t// Crontab (6 space-separated fields: sec, min, hour, day, month, dayOfWeek) syntax (https://en.wikipedia.org/wiki/Cron) \n\tpublic cron: string;\n\n\t// EMAIL recipients list \n\tpublic recipients: string[];\n\n\t// Report type (COMPLIANCE | DEVICES | EVENTS ...) \n\tpublic reportType: ReportTypeCode;\n\n\t// Absolute or relative time (epoch time milliseconds) to define start time and end time \n\tpublic period: TimeFrame;\n\n\t// Toggle to define whether report scheduler is enabled/disable \n\tpublic status: boolean;\n\n\t// Toggle to define whether created report instance should be sent by email to recipients \n\tpublic receiveViaMail: boolean;\n\n}\n\nexport function GetReportColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"userId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"cron\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"recipients\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"reportType\", \"ReportTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"period\", \"TimeFrame\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"status\", \"boolean\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"receiveViaMail\", \"boolean\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { DevicesAtRiskConfig } from './DevicesAtRiskConfig';\nimport { DeviceScoreConfig } from './DeviceScoreConfig';\n\n// DeviceConfig is a set of device related configurations\nexport class DeviceConfig {\n\n\t// devices at risk configuration \n\tpublic devicesAtRiskConfig: DevicesAtRiskConfig;\n\n\t// device score configurations \n\tpublic deviceScoreConfig: DeviceScoreConfig;\n\n constructor(devicesAtRiskConfig?: DevicesAtRiskConfig, deviceScoreConfig?: DeviceScoreConfig) { \n if (devicesAtRiskConfig !== undefined) { this.devicesAtRiskConfig = devicesAtRiskConfig; }\n if (deviceScoreConfig !== undefined) { this.deviceScoreConfig = deviceScoreConfig; }\n }\n\n}\n\n\n","\n\n// Timestamp represents Epoch milliseconds timestamp.\n// It is the primary time representation in the system, allowing for easy serialization and arithmetic.\nexport class Timestamp {\n\n constructor() { \n }\n\n}\n\n\n","\nimport { Tuple } from './Tuple';\nimport { SeriesData } from './SeriesData';\n\n// GraphSeries model represents a set of data points over min,max group of points. T used as a type for key in SeriesData, V used as a value in SeriesData\nexport class GraphSeries<T,V> {\n\n\t// Name of the time series \n\tpublic name: string;\n\n\t// Map of int element to its internal object: range, internalValues \n\tpublic values: Tuple<number, SeriesData<T,V>>[];\n\n constructor(name?: string, values?: Tuple<number, SeriesData<T,V>>[]) { \n if (name !== undefined) { this.name = name; }\n if (values !== undefined) { this.values = values; }\n }\n\n}\n\n\n","\n\n// TokenData model represents user info encrypted with the JWT token\nexport class TokenData {\n\n\t// Account ID \n\tpublic accountId: string;\n\n\t// Authenticated subject ID (can be user, or service account) \n\tpublic subjectId: string;\n\n\t// Subject type enum \n\tpublic subjectType: number;\n\n\t// Role of user in the account (Role should be specified as Flags (Bitmask) \n\tpublic subjectRole: number;\n\n\t// User status enum \n\tpublic status: number;\n\n\t// Token expiration [Epoch milliseconds Timestamp] \n\tpublic expiresIn: number;\n\n constructor(accountId?: string, subjectId?: string, subjectType?: number, subjectRole?: number, status?: number, expiresIn?: number) { \n if (accountId !== undefined) { this.accountId = accountId; }\n if (subjectId !== undefined) { this.subjectId = subjectId; }\n if (subjectType !== undefined) { this.subjectType = subjectType; }\n if (subjectRole !== undefined) { this.subjectRole = subjectRole; }\n if (status !== undefined) { this.status = status; }\n if (expiresIn !== undefined) { this.expiresIn = expiresIn; }\n }\n\n}\n\n\n","\n\n// ShieldexConfig is a list of weights used for shieldex calculation based on the following formula:\n// shieldex = 100 * max(1 - (weighted_risk / total_devices), 0) where weighted_risk is calculated as:\n// weighted_risk =\n// (lowRiskWeight * low_risk_devices) +\n// (mediumRiskWeight * medium_risk_devices) +\n// (highRiskWeight * high_risk_devices) +\n// (criticalRiskWeight * critical_risk_devices)\nexport class ShieldexConfig {\n\n\t// Deprecated: ALPHA_WEIGHT_FACTOR for shieldex calculation \n\tpublic alphaWeightFactor: number;\n\n\t// Deprecated: PERCENT_FACTOR for shieldex calculation \n\tpublic percentFactor: number;\n\n\t// Low risk devices weight \n\tpublic lowRiskWeight: number;\n\n\t// Medium risk devices weight \n\tpublic mediumRiskWeight: number;\n\n\t// High risk devices weight \n\tpublic highRiskWeight: number;\n\n\t// Critical risk devices weight \n\tpublic criticalRiskWeight: number;\n\n constructor(alphaWeightFactor?: number, percentFactor?: number, lowRiskWeight?: number, mediumRiskWeight?: number, highRiskWeight?: number, criticalRiskWeight?: number) { \n if (alphaWeightFactor !== undefined) { this.alphaWeightFactor = alphaWeightFactor; }\n if (percentFactor !== undefined) { this.percentFactor = percentFactor; }\n if (lowRiskWeight !== undefined) { this.lowRiskWeight = lowRiskWeight; }\n if (mediumRiskWeight !== undefined) { this.mediumRiskWeight = mediumRiskWeight; }\n if (highRiskWeight !== undefined) { this.highRiskWeight = highRiskWeight; }\n if (criticalRiskWeight !== undefined) { this.criticalRiskWeight = criticalRiskWeight; }\n }\n\n}\n\n\n","\nimport { Tuple } from './Tuple';\n\n// Distribution model represents a grouped counts of elements of generic type int (usually enum)\nexport class Distribution<V> {\n\n\t// Distribution name \n\tpublic name: string;\n\n\t// Total count (of all elements) \n\tpublic total: number;\n\n\t// Map of int element to its count \n\tpublic values: Tuple<V, number>[];\n\n constructor(name?: string, total?: number, values?: Tuple<V, number>[]) { \n if (name !== undefined) { this.name = name; }\n if (total !== undefined) { this.total = total; }\n if (values !== undefined) { this.values = values; }\n }\n\n}\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Shieldex is a security score per account level calculated periodically\nexport class Shieldex extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// Total number of events per account per stream \n\tpublic eventCount: number;\n\n\t// Shield index score (1-100) \n\tpublic score: number;\n\n}\n\nexport function GetShieldexColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"eventCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"score\", \"number\", \"decimal\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// TimeFrame represents a time interval with a start and end timestamp.\nexport class TimeFrame {\n\n\t// From is the start timestamp \n\tpublic from: number;\n\n\t// To is the end timestamp \n\tpublic to: number;\n\n constructor(from?: number, to?: number) { \n if (from !== undefined) { this.from = from; }\n if (to !== undefined) { this.to = to; }\n }\n\n}\n\n\n","\nimport { DeviceNode } from './DeviceNode';\nimport { MapBounds } from './MapBounds';\n\n// DevicesMap is a data structure representing a list of device nodes and map bounds\nexport class DevicesMap {\n\n\t// List of device nodes \n\tpublic deviceNodes: DeviceNode[];\n\n\t// map bounds \n\tpublic mapBounds: MapBounds;\n\n constructor(deviceNodes?: DeviceNode[], mapBounds?: MapBounds) { \n if (deviceNodes !== undefined) { this.deviceNodes = deviceNodes; }\n if (mapBounds !== undefined) { this.mapBounds = mapBounds; }\n }\n\n}\n\n\n","\nimport { Tuple } from './Tuple';\nimport { PermissionCode } from './PermissionCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// ApiKey entity is a structure representing the source data fields encapsulated in the API key\nexport class ApiKey extends BaseEntity {\n\n\t// API Key name \n\tpublic name: string;\n\n\t// Default session token TTL (in minutes), 0 means no TTL \n\tpublic ttl: number;\n\n\t// Access Control List - list of accessible resources with permissions flags (1:Read, 2:Create, 4:Update, 8:Delete, 16:Action) \n\tpublic acl: Tuple<string, PermissionCode>[];\n\n\t// Key version (for key rotation) \n\tpublic version: number;\n\n\t// Flag to indicate if this a system key or user defined key \n\tpublic systemKey: boolean;\n\n\t// Flag to indicate if the key is enabled \n\tpublic enabled: boolean;\n\n\t// The API Key (this value is auto generated and not stored in the DB) \n\tpublic key: string;\n\n}\n\nexport function GetApiKeyColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"ttl\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"acl\", \"Tuple<string, PermissionCode>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"version\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"systemKey\", \"boolean\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"enabled\", \"boolean\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"key\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { TrafficDirectionCode } from './TrafficDirectionCode';\nimport { Indicator } from './Indicator';\n\n// EventOccurrence is a single instance of event generated for the same deviceId based on the same rule on the same month\nexport class EventOccurrence {\n\n\t// Event occurrence time in epoch time milliseconds \n\tpublic timestamp: number;\n\n\t// Referenced source file \n\tpublic source: string;\n\n\t// The allocated IP for the device at the time of the event occurrence \n\tpublic sourceIp: string;\n\n\t// List of event occurrence indicators \n\tpublic indicators: Indicator[];\n\n\t// Denotes network traffic direction: UNDEFINED | INBOUND | OUTBOUND \n\tpublic trafficDirection: TrafficDirectionCode;\n\n constructor(timestamp?: number, source?: string, sourceIp?: string, indicators?: Indicator[], trafficDirection?: TrafficDirectionCode) { \n if (timestamp !== undefined) { this.timestamp = timestamp; }\n if (source !== undefined) { this.source = source; }\n if (sourceIp !== undefined) { this.sourceIp = sourceIp; }\n if (indicators !== undefined) { this.indicators = indicators; }\n if (trafficDirection !== undefined) { this.trafficDirection = trafficDirection; }\n }\n\n}\n\n\n","\nimport { DirectionContextCode } from './DirectionContextCode';\nimport { BaseEntity } from './BaseEntity';\nimport { InsightSourceCode } from './InsightSourceCode';\nimport { InsightTypeCode } from './InsightTypeCode';\nimport { ColumnDef } from './ColumnDef';\n\n// InsightQuery (insight query) entity\n// The InsightQuery entity is a definition of insight query to execute periodically in order to generate \"insights\" for the users.\nexport class InsightQuery extends BaseEntity {\n\n\t// Insight source: DEFAULT | USAGE | EVENT | ALERT \n\tpublic source: InsightSourceCode;\n\n\t// Insight type: UNDEFINED | EVENTS | STATISTICS \n\tpublic type: InsightTypeCode;\n\n\t// Templated string to show the description in the UI \n\tpublic description: string;\n\n\t// Insight query definition (KQL) \n\tpublic query: string;\n\n\t// InsightDirectionContext: UNDEFINED | EVENT_LIST | DEVICE_LIST | EVENT_DETAILS | DEVICE_DETAILS \n\tpublic insightDirectionContext: DirectionContextCode;\n\n\t// Insight UI query definition . query to use from API as response to UI on clickable insight \n\tpublic uiquery: string;\n\n\t// Is default query to use for new accounts \n\tpublic isDefault: boolean;\n\n}\n\nexport function GetInsightQueryColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"source\", \"InsightSourceCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"InsightTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"query\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"insightDirectionContext\", \"DirectionContextCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"uiquery\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"isDefault\", \"boolean\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { ZScore } from './ZScore';\n\n// UsageTransform is a list of z-score parameters for usage fields\nexport class UsageTransform {\n\n\t// ZScore parameters for incoming packets (to the device) \n\tpublic packetsIn: ZScore;\n\n\t// ZScore parameters for outgoing packets (from the device) \n\tpublic packetsOut: ZScore;\n\n\t// ZScore parameters for total number of incoming bytes (to the device) \n\tpublic bytesIn: ZScore;\n\n\t// ZScore parameters for total number of outgoing bytes (from the device) \n\tpublic bytesOut: ZScore;\n\n\t// ZScore parameters for number of destination endpoints \n\tpublic endpointsCount: ZScore;\n\n\t// ZScore parameters for number of destination ports \n\tpublic portsCount: ZScore;\n\n constructor(packetsIn?: ZScore, packetsOut?: ZScore, bytesIn?: ZScore, bytesOut?: ZScore, endpointsCount?: ZScore, portsCount?: ZScore) { \n if (packetsIn !== undefined) { this.packetsIn = packetsIn; }\n if (packetsOut !== undefined) { this.packetsOut = packetsOut; }\n if (bytesIn !== undefined) { this.bytesIn = bytesIn; }\n if (bytesOut !== undefined) { this.bytesOut = bytesOut; }\n if (endpointsCount !== undefined) { this.endpointsCount = endpointsCount; }\n if (portsCount !== undefined) { this.portsCount = portsCount; }\n }\n\n}\n\n\n","\nimport { AccountTypeCode } from './AccountTypeCode';\nimport { AccountStatusCode } from './AccountStatusCode';\nimport { Tuple } from './Tuple';\nimport { AccountSettings } from './AccountSettings';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Account is a tenant in the system (customer)\nexport class Account extends BaseEntity {\n\n\t// Account name \n\tpublic name: string;\n\n\t// The account identity in the external system (e.g. Billing, CRM etc) \n\tpublic externalId: string;\n\n\t// The tenant APN name in the connectivity provider's mobile code \n\tpublic providerAPN: string;\n\n\t// Account description \n\tpublic description: string;\n\n\t// Account Type: UNDEFINED | DEMO | TRIAL | PARTNER | CUSTOMER \n\tpublic type: AccountTypeCode;\n\n\t// Account status: UNDEFINED | ACTIVE | SUSPENDED \n\tpublic status: AccountStatusCode;\n\n\t// List of associated FeaturesGroup ids (for feature toggle) \n\tpublic groups: string[];\n\n\t// When the account will be expired [Epoch milliseconds Timestamp] (0 means no expiration time \n\tpublic expiredOn: number;\n\n\t// Additional user defined tags \n\tpublic tags: string[];\n\n\t// List of custom attributes (key-value pairs) for user defined data \n\tpublic labels: Tuple<string, string>[];\n\n\t// Account specific attributes \n\tpublic settings: AccountSettings;\n\n}\n\nexport function GetAccountColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"externalId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"providerAPN\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"AccountTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"status\", \"AccountStatusCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"groups\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"expiredOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"tags\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"labels\", \"Tuple<string, string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"settings\", \"AccountSettings\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { Account } from './Account';\nimport { DeviceReport } from './DeviceReport';\nimport { Distribution } from './Distribution';\nimport { ColumnDef } from './ColumnDef';\n\n// AccountReportDTO includes additional data related to Account for display\nexport class AccountReportDTO extends Account {\n\n\t// last Shieldex (health score ) \n\tpublic healthScore: number;\n\n\t// total number of members for account \n\tpublic membersCount: number;\n\n\t// latest device report for account \n\tpublic latestDeviceReport: DeviceReport;\n\n\t// device distribution per status for account \n\tpublic deviceDistributionByStatus: Distribution<number>;\n\n}\n\nexport function GetAccountReportDTOColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"healthScore\", \"number\", \"decimal\"));\n\tresult.push(new ColumnDef(\"\", \"membersCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"latestDeviceReport\", \"DeviceReport\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceDistributionByStatus\", \"Distribution<number>\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { ConfigParam } from './ConfigParam';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// ConfigParams stores a list of configuration parameters\nexport class ConfigParams extends BaseEntity {\n\n\t// Configuration parameters \n\tpublic params: ConfigParam[];\n\n}\n\nexport function GetConfigParamsColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"params\", \"ConfigParam\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { DeviceCreationCode } from './DeviceCreationCode';\nimport { DeviceIdentityCode } from './DeviceIdentityCode';\nimport { DeviceTypeCode } from './DeviceTypeCode';\n\n// DataIngestion is the ingestion pipeline configuration\nexport class DataIngestion {\n\n\t// Input files location \n\tpublic inputURI: string;\n\n\t// File format: pcap / pcapng (default) \n\tpublic format: string;\n\n\t// Where to archive processed files \n\tpublic archiveURI: string;\n\n\t// Input files extensions (filter by extensions) - ignore if empty \n\tpublic inputFilesExt: string[];\n\n\t// List of IoT devices subnets \n\tpublic subNets: string[];\n\n\t// List of subnets or IPs to exclude \n\tpublic exclude: string[];\n\n\t// List of allowed IPs/Subnets (ACL) \n\tpublic allowedAcl: string[];\n\n\t// Usage time window for aggregation (in seconds) \n\tpublic usageTimeWindowSec: number;\n\n\t// Session time window for aggregation (in seconds) \n\tpublic sessionTimeWindowSec: number;\n\n\t// Cron schedule template in 6 segment format (see: https://en.wikipedia.org/wiki/Cron) - leave empty for immediate processing \n\tpublic schedule: string;\n\n\t// Default device type code \n\tpublic defaultDeviceType: DeviceTypeCode;\n\n\t// How to create devices during the PCAP parsing (NONE | IP | SID | EID) \n\tpublic deviceCreationPolicy: DeviceCreationCode;\n\n\t// How to identify devices during the PCAP parsing (NONE | IP | SID | EID) \n\tpublic deviceIdentityPolicy: DeviceIdentityCode;\n\n\t// Flag to indicate if RADIUS protocol support ( to infer device identity ) is enabled \n\tpublic radiusSupport: boolean;\n\n constructor(inputURI?: string, format?: string, archiveURI?: string, inputFilesExt?: string[], subNets?: string[], exclude?: string[], allowedAcl?: string[], usageTimeWindowSec?: number, sessionTimeWindowSec?: number, schedule?: string, defaultDeviceType?: DeviceTypeCode, deviceCreationPolicy?: DeviceCreationCode, deviceIdentityPolicy?: DeviceIdentityCode, radiusSupport?: boolean) { \n if (inputURI !== undefined) { this.inputURI = inputURI; }\n if (format !== undefined) { this.format = format; }\n if (archiveURI !== undefined) { this.archiveURI = archiveURI; }\n if (inputFilesExt !== undefined) { this.inputFilesExt = inputFilesExt; }\n if (subNets !== undefined) { this.subNets = subNets; }\n if (exclude !== undefined) { this.exclude = exclude; }\n if (allowedAcl !== undefined) { this.allowedAcl = allowedAcl; }\n if (usageTimeWindowSec !== undefined) { this.usageTimeWindowSec = usageTimeWindowSec; }\n if (sessionTimeWindowSec !== undefined) { this.sessionTimeWindowSec = sessionTimeWindowSec; }\n if (schedule !== undefined) { this.schedule = schedule; }\n if (defaultDeviceType !== undefined) { this.defaultDeviceType = defaultDeviceType; }\n if (deviceCreationPolicy !== undefined) { this.deviceCreationPolicy = deviceCreationPolicy; }\n if (deviceIdentityPolicy !== undefined) { this.deviceIdentityPolicy = deviceIdentityPolicy; }\n if (radiusSupport !== undefined) { this.radiusSupport = radiusSupport; }\n }\n\n}\n\n\n","\nimport { UserTypeCode } from './UserTypeCode';\nimport { UserStatusCode } from './UserStatusCode';\nimport { Tuple } from './Tuple';\nimport { BaseEntityEx } from './BaseEntityEx';\nimport { ColumnDef } from './ColumnDef';\n\n// User represents a human / system operator that has access to the system, and can perform operations\n// User authentication is done by an external identity provider\nexport class User extends BaseEntityEx {\n\n\t// User name \n\tpublic name: string;\n\n\t// The user identity in the external system (e.g. Billing, CRM etc) \n\tpublic externalId: string;\n\n\t// User email \n\tpublic email: string;\n\n\t// User mobile phone number (for notification and validation) \n\tpublic mobile: string;\n\n\t// User type: UNDEFINED | SYSADMIN | SUPPORT | USER \n\tpublic type: UserTypeCode;\n\n\t// User status: UNDEFINED | PENDING | ACTIVE | BLOCKED | SUSPENDED \n\tpublic status: UserStatusCode;\n\n\t// Default account ID \n\tpublic defaultAccount: string;\n\n\t// When the user signed in for the last time [Epoch milliseconds Timestamp] \n\tpublic lastSignIn: number;\n\n\t// List of custom attributes (key-value pairs) for user defined data \n\tpublic labels: Tuple<string, string>[];\n\n\t// List of groups that the user belongs to \n\tpublic groups: string[];\n\n\t// Set to true for user need to be monitored in the audit log \n\tpublic isTracked: boolean;\n\n}\n\nexport function GetUserColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"externalId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"email\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"mobile\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"UserTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"status\", \"UserStatusCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"defaultAccount\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"lastSignIn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"labels\", \"Tuple<string, string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"groups\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"isTracked\", \"boolean\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// Tuple represents a generic key-value pair.\n// It is useful for storing associated data where a full map is not needed or order matters.\n// Type Parameters:\n// - K: The type of the key.\n// - V: The type of the value.\nexport class Tuple<K,V> {\n\n\t// Key is the first element of the tuple \n\tpublic key: K;\n\n\t// Value is the second element of the tuple \n\tpublic value: V;\n\n constructor(key?: K, value?: V) { \n if (key !== undefined) { this.key = key; }\n if (value !== undefined) { this.value = value; }\n }\n\n}\n\n\n","\n\n// RegulatoryViolation captures a specific regulation clause related to the Insight.\nexport class RegulatoryViolation {\n\n\t// Name/title of the regulation document (e.g., \"GDPR\", \"HIPAA\", \"NIST 800-53\") \n\tpublic title: string;\n\n\t// Clause/section identifier \n\tpublic clause: string;\n\n\t// Summary of the clause’s relevance to this Insight \n\tpublic description: string;\n\n\t// Canonical URL to the source document/section \n\tpublic sourceLink: string;\n\n constructor(title?: string, clause?: string, description?: string, sourceLink?: string) { \n if (title !== undefined) { this.title = title; }\n if (clause !== undefined) { this.clause = clause; }\n if (description !== undefined) { this.description = description; }\n if (sourceLink !== undefined) { this.sourceLink = sourceLink; }\n }\n\n}\n\n\n","\nimport { ZScore } from './ZScore';\n\n// SessionTransform is a list of z-score parameters for session fields\nexport class SessionTransform {\n\n\t// ZScore parameters for incoming packets (to the device) \n\tpublic packetsIn: ZScore;\n\n\t// ZScore parameters for outgoing packets (from the device) \n\tpublic packetsOut: ZScore;\n\n\t// ZScore parameters for total number of incoming bytes (to the device) \n\tpublic bytesIn: ZScore;\n\n\t// ZScore parameters for total number of outgoing bytes (from the device) \n\tpublic bytesOut: ZScore;\n\n constructor(packetsIn?: ZScore, packetsOut?: ZScore, bytesIn?: ZScore, bytesOut?: ZScore) { \n if (packetsIn !== undefined) { this.packetsIn = packetsIn; }\n if (packetsOut !== undefined) { this.packetsOut = packetsOut; }\n if (bytesIn !== undefined) { this.bytesIn = bytesIn; }\n if (bytesOut !== undefined) { this.bytesOut = bytesOut; }\n }\n\n}\n\n\n","\nimport { SeverityIntervalTuple } from './SeverityIntervalTuple';\n\n// EventSeverityConfig is a list of event severity configuration\nexport class EventSeverityConfig {\n\n\t// List of severity configurations key-value. Value of type Interval \n\tpublic severityConfigs: SeverityIntervalTuple[];\n\n constructor(severityConfigs?: SeverityIntervalTuple[]) { \n if (severityConfigs !== undefined) { this.severityConfigs = severityConfigs; }\n }\n\n}\n\n\n","\n\n// LoginParams model used for authorize user by email\nexport class LoginParams {\n\n\t// User email \n\tpublic email: string;\n\n constructor(email?: string) { \n if (email !== undefined) { this.email = email; }\n }\n\n}\n\n\n","\nimport { HomePageViewCode } from './HomePageViewCode';\n\n// AccountSettings is a set of account attributes\nexport class AccountSettings {\n\n\t// Default home page view \n\tpublic defaultHomePageView: HomePageViewCode;\n\n\t// Account logo URL for dark backgrounds \n\tpublic logo: string;\n\n\t// Account logo URL for light backgrounds \n\tpublic logoDark: string;\n\n constructor(defaultHomePageView?: HomePageViewCode, logo?: string, logoDark?: string) { \n if (defaultHomePageView !== undefined) { this.defaultHomePageView = defaultHomePageView; }\n if (logo !== undefined) { this.logo = logo; }\n if (logoDark !== undefined) { this.logoDark = logoDark; }\n }\n\n}\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// ConfigParam stores a key-value pair as a system configuration parameter\nexport class ConfigParam extends BaseEntity {\n\n\t// Configuration parameter type \n\tpublic inputType: string;\n\n\t// Configuration group \n\tpublic group: string;\n\n\t// Configuration parameter value \n\tpublic value: string;\n\n}\n\nexport function GetConfigParamColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"inputType\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"group\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"value\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { FeatureCode } from './FeatureCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// FeaturesGroup group represents a group of capabilities in the system\n// It is used for the feature toggle mechanism\nexport class FeaturesGroup extends BaseEntity {\n\n\t// Features group display name \n\tpublic name: string;\n\n\t// List of features \n\tpublic features: FeatureCode[];\n\n}\n\nexport function GetFeaturesGroupColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"features\", \"FeatureCode\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// ServiceStatus represents applicative status of a pulse service with a set of metrics\nexport class ServiceStatus extends BaseEntity {\n\n\t// Service name \n\tpublic serviceName: string;\n\n\t// Host (machine) name \n\tpublic hostName: string;\n\n\t// The starting time of the service \n\tpublic startTime: number;\n\n\t// Account id (if applicable) \n\tpublic accountId: string;\n\n\t// List of application metrics \n\tpublic metrics: Map<string,object>;\n\n}\n\nexport function GetServiceStatusColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"serviceName\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"hostName\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"startTime\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"metrics\", \"Map<string,object>\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// TimeDataPoint represents a generic data point associated with a timestamp.\nexport class TimeDataPoint<V> {\n\n\t// Timestamp of the data point \n\tpublic timestamp: number;\n\n\t// Value of the data point \n\tpublic value: V;\n\n constructor(timestamp?: number, value?: V) { \n if (timestamp !== undefined) { this.timestamp = timestamp; }\n if (value !== undefined) { this.value = value; }\n }\n\n}\n\n\n","\nimport { DeviceTypeCode } from './DeviceTypeCode';\nimport { Location } from './Location';\n\n// DeviceNode model represents partial device's data for map\nexport class DeviceNode {\n\n\t// Device id \n\tpublic deviceId: string;\n\n\t// Device name \n\tpublic deviceName: string;\n\n\t// Device current security score \n\tpublic score: number;\n\n\t// Device type: UNDEFINED | CONTROLLER | METER | SENSOR ... \n\tpublic type: DeviceTypeCode;\n\n\t// Geo Location (WGS-84) \n\tpublic location: Location;\n\n constructor(deviceId?: string, deviceName?: string, score?: number, type?: DeviceTypeCode, location?: Location) { \n if (deviceId !== undefined) { this.deviceId = deviceId; }\n if (deviceName !== undefined) { this.deviceName = deviceName; }\n if (score !== undefined) { this.score = score; }\n if (type !== undefined) { this.type = type; }\n if (location !== undefined) { this.location = location; }\n }\n\n}\n\n\n","\nimport { MemberRoleCode } from './MemberRoleCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Member represents a user in the account and the role he has in this account\n// User may have several memberships for several accounts, each with a different role\nexport class Member extends BaseEntity {\n\n\t// User id \n\tpublic userId: string;\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// User role in the account: UNDEFINED | ADMIN | OPERATOR | VIEWER \n\tpublic role: MemberRoleCode;\n\n}\n\nexport function GetMemberColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"userId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"role\", \"MemberRoleCode\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { AccountRole } from './AccountRole';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Group represents a set of memberships to various accounts.\nexport class Group extends BaseEntity {\n\n\t// Group name \n\tpublic name: string;\n\n\t// The group identity in the external system (e.g. Billing, CRM etc) \n\tpublic externalId: string;\n\n\t// Group email \n\tpublic email: string;\n\n\t// List of group roles in accounts \n\tpublic accountRoles: AccountRole[];\n\n}\n\nexport function GetGroupColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"externalId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"email\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"accountRoles\", \"AccountRole\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { SessionTransform } from './SessionTransform';\nimport { Thresholds } from './Thresholds';\nimport { UsageTransform } from './UsageTransform';\nimport { ShieldexConfig } from './ShieldexConfig';\nimport { EventSeverityConfig } from './EventSeverityConfig';\nimport { DeviceActionCode } from './DeviceActionCode';\nimport { DeviceConfig } from './DeviceConfig';\nimport { IdsConfig } from './IdsConfig';\nimport { DataIngestion } from './DataIngestion';\n\n// StreamConfig is a stream configuration description\nexport class StreamConfig {\n\n\t// Stream data ingestion pipeline \n\tpublic ingest: DataIngestion;\n\n\t// Session data transform parameters (normalize values) \n\tpublic sessionTransform: SessionTransform;\n\n\t// Usage data transform parameters (normalize values) \n\tpublic usageTransform: UsageTransform;\n\n\t// Set of stream configuration thresholds \n\tpublic thresholds: Thresholds;\n\n\t// Set of stream shieldex configuration \n\tpublic shieldexConfig: ShieldexConfig;\n\n\t// Set of event severity configuration \n\tpublic eventSeverityConfig: EventSeverityConfig;\n\n\t// Set of available preventive actions to apply \n\tpublic preventiveActions: DeviceActionCode[];\n\n\t// Set of device related configurations \n\tpublic deviceConfig: DeviceConfig;\n\n\t// \n\tpublic parserRules: string[];\n\n\t// Set of IDS rule configurations \n\tpublic idsConfig: IdsConfig;\n\n constructor(ingest?: DataIngestion, sessionTransform?: SessionTransform, usageTransform?: UsageTransform, thresholds?: Thresholds, shieldexConfig?: ShieldexConfig, eventSeverityConfig?: EventSeverityConfig, preventiveActions?: DeviceActionCode[], deviceConfig?: DeviceConfig, parserRules?: string[], idsConfig?: IdsConfig) { \n if (ingest !== undefined) { this.ingest = ingest; }\n if (sessionTransform !== undefined) { this.sessionTransform = sessionTransform; }\n if (usageTransform !== undefined) { this.usageTransform = usageTransform; }\n if (thresholds !== undefined) { this.thresholds = thresholds; }\n if (shieldexConfig !== undefined) { this.shieldexConfig = shieldexConfig; }\n if (eventSeverityConfig !== undefined) { this.eventSeverityConfig = eventSeverityConfig; }\n if (preventiveActions !== undefined) { this.preventiveActions = preventiveActions; }\n if (deviceConfig !== undefined) { this.deviceConfig = deviceConfig; }\n if (parserRules !== undefined) { this.parserRules = parserRules; }\n if (idsConfig !== undefined) { this.idsConfig = idsConfig; }\n }\n\n}\n\n\n","\nimport { MemberRoleCode } from './MemberRoleCode';\n\n// AccountRole model represents specific role in an account\nexport class AccountRole {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Account Name (for display only) \n\tpublic accountName: string;\n\n\t// User role in the account: UNDEFINED | ADMIN | OPERATOR | VIEWER \n\tpublic role: MemberRoleCode;\n\n constructor(accountId?: string, accountName?: string, role?: MemberRoleCode) { \n if (accountId !== undefined) { this.accountId = accountId; }\n if (accountName !== undefined) { this.accountName = accountName; }\n if (role !== undefined) { this.role = role; }\n }\n\n}\n\n\n","\n\n// MitreAttackCategory references a MITRE ATT&CK technique or category.\nexport class MitreAttackCategory {\n\n\t// Technique or sub-technique ID (e.g., \"T1110.001\") \n\tpublic id: string;\n\n\t// Technique name (e.g., \"Password Guessing\") \n\tpublic name: string;\n\n\t// URL to MITRE ATT&CK technique page \n\tpublic sourceLink: string;\n\n constructor(iD?: string, name?: string, sourceLink?: string) { \n if (iD !== undefined) { this.id = iD; }\n if (name !== undefined) { this.name = name; }\n if (sourceLink !== undefined) { this.sourceLink = sourceLink; }\n }\n\n}\n\n\n","\nimport { InsightStatusCode } from './InsightStatusCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// InsightSpec (insight specifications) entity\n// The InsightSpec entity is a link between account and stream Id to insight query.\nexport class InsightSpec extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id (leave empty to run insights on all streams) \n\tpublic streamId: string;\n\n\t// Insight status: UNDEFINED | INACTIVE | PENDING | ACTIVE \n\tpublic status: InsightStatusCode;\n\n\t// Insight query Id \n\tpublic queryId: string;\n\n\t// Is Insight enabled (if disabled, it will not be calculated) \n\tpublic enabled: boolean;\n\n}\n\nexport function GetInsightSpecColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"status\", \"InsightStatusCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"queryId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"enabled\", \"boolean\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { Distribution } from './Distribution';\nimport { NetworkTopologyReportParams } from './NetworkTopologyReportParams';\nimport { BaseEntity } from './BaseEntity';\nimport { NetworkTopologyReportKPIs } from './NetworkTopologyReportKPIs';\nimport { ColumnDef } from './ColumnDef';\n\n// NetworkTopologyReport represents topology structure for the report\nexport class NetworkTopologyReport extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// Global KPIs \n\tpublic KPIs: NetworkTopologyReportKPIs;\n\n\t// endpoints Distribution by app_protocol \n\tpublic byAppProtocol: Distribution<string>;\n\n\t// endpoints Distribution by country \n\tpublic byCountry: Distribution<string>;\n\n\t// endpoints Distribution by owner's name \n\tpublic byName: Distribution<string>;\n\n\t// endpoints Distribution by risk (undefined/safe/malicious 0/1/2) \n\tpublic byRisk: Distribution<number>;\n\n\t// the filter used to generate this report \n\tpublic filter: NetworkTopologyReportParams;\n\n}\n\nexport function GetNetworkTopologyReportColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"KPIs\", \"NetworkTopologyReportKPIs\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"byAppProtocol\", \"Distribution<string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"byCountry\", \"Distribution<string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"byName\", \"Distribution<string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"byRisk\", \"Distribution<number>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"filter\", \"NetworkTopologyReportParams\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// Thresholds is a list of stream configuration thresholds\nexport class Thresholds {\n\n\t// Total time (in minutes) from the last device activity to change the device status to INACTIVE \n\tpublic inactiveDeviceWindowMin: number;\n\n constructor(inactiveDeviceWindowMin?: number) { \n if (inactiveDeviceWindowMin !== undefined) { this.inactiveDeviceWindowMin = inactiveDeviceWindowMin; }\n }\n\n}\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// DNSRecord represents network statistics of DNS requests\nexport class DNSRecord extends BaseEntity {\n\n\t// Indication to the source location of the record \n\tpublic source: string;\n\n\t// Account ID \n\tpublic accountId: string;\n\n\t// Stream ID \n\tpublic streamId: string;\n\n\t// Device ID \n\tpublic deviceId: string;\n\n\t// Device SIM card ID (to support multiple SIMs) \n\tpublic simId: string;\n\n\t// Start window time in epoch time milliseconds \n\tpublic startTime: number;\n\n\t// End window time in epoch time milliseconds \n\tpublic endTime: number;\n\n\t// Fully Qualified Domain Name \n\tpublic fqdn: string;\n\n\t// List of A records \n\tpublic records: string[];\n\n}\n\nexport function GetDNSRecordColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"source\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"simId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"startTime\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"endTime\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"fqdn\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"records\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { Tuple } from './Tuple';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// Radius entity is an IP allocation to device IMSI entry\nexport class Radius extends BaseEntity {\n\n\t// Indication to the source location of the record \n\tpublic source: string;\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// When the IP was assigned to the subscriber [Epoch milliseconds Timestamp] \n\tpublic assignedOn: number;\n\n\t// Device MAC address \n\tpublic mac: string;\n\n\t// Device IP address (IPv4 or IPv6) \n\tpublic ip: string;\n\n\t// Device mobile subscriber id (IMSI or SUPI) \n\tpublic sid: string;\n\n\t// Device mobile equipment id (IMEI or PEI) \n\tpublic eid: string;\n\n\t// Country name \n\tpublic country: string;\n\n\t// Mobile network operator name \n\tpublic operator: string;\n\n\t// List of attributes \n\tpublic attributes: Tuple<string, string>[];\n\n}\n\nexport function GetRadiusColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"source\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"assignedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"mac\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"ip\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"sid\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"eid\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"country\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"operator\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"attributes\", \"Tuple<string, string>\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { RuleBasedSeverityConditionConfig } from './RuleBasedSeverityConditionConfig';\nimport { FloatInterval } from './FloatInterval';\nimport { SeverityTypeCode } from './SeverityTypeCode';\nimport { Interval } from './Interval';\nimport { SeverityConditionConfig } from './SeverityConditionConfig';\nimport { RuleCountThresholdConfig } from './RuleCountThresholdConfig';\n\n// DeviceScoreConfig is a set of parameters for device score config\nexport class DeviceScoreConfig {\n\n\t// device score alpha factor \n\tpublic deviceScoreAlphaFactor: number;\n\n\t// occurrence threshold \n\tpublic occurrenceThreshold: number;\n\n\t// ruleCount threshold \n\tpublic ruleCountThreshold: number;\n\n\t// low weight alpha factor to use in device risk score calculation \n\tpublic lowWeightAlphaFactor: number;\n\n\t// medium weight alpha factor to use in device risk score calculation \n\tpublic mediumWeightAlphaFactor: number;\n\n\t// high weight alpha factor to use in device risk score calculation \n\tpublic highWeightAlphaFactor: number;\n\n\t// critical weight alpha factor to use in device risk score calculation \n\tpublic criticalWeightAlphaFactor: number;\n\n\t// high volume weight alpha factor to use in device risk score calculation \n\tpublic highVolumeWeightAlphaFactor: number;\n\n\t// abnormal out ports alpha factor to use in device risk score calculation \n\tpublic abnormalOutPortsAlphaFactor: number;\n\n\t// abnormal out endpoints alpha factor to use in device risk score calculation \n\tpublic abnormalOutEndpointsAlphaFactor: number;\n\n\t// suspicious Ip alpha factor to use in device risk score calculation \n\tpublic suspiciousIpAlphaFactor: number;\n\n\t// default range of the score for low severity \n\tpublic defaultSeverityRange: Interval;\n\n\t// default severity factor \n\tpublic defaultSeverityFactor: number;\n\n\t// 0 or more SeverityConditionConfig per severity \n\tpublic severityConditionConfigs: SeverityConditionConfig[];\n\n\t// 0 or more RuleCountThresholdConfig \n\tpublic ruleCountThresholdConfigs: RuleCountThresholdConfig[];\n\n\t// 0 or more RuleBasedSeverityConditionConfig \n\tpublic ruleBasedSeverityConditionConfigs: RuleBasedSeverityConditionConfig[];\n\n\t// true if severity based , false if rule based \n\tpublic isSeverityBased: boolean;\n\n\t// true if alert based , false if event based \n\tpublic isAlertBased: boolean;\n\n\t// Half-life H in minutes \n\tpublic decayHalfLifeMinutes: number;\n\n\t// Exponent beta for rarity weight \n\tpublic rarityBeta: number;\n\n\t// median|fixed \n\tpublic raritySmoothingKMode: string;\n\n\t// fixed K for smoothing \n\tpublic raritySmoothingKFixed: number;\n\n\t// (min,max) clip for rarity weights \n\tpublic rarityClip: FloatInterval;\n\n\t// byType|byTypeSeverity (reserved) \n\tpublic rarityMode: string;\n\n\t// Weight for Low events Severity weights \n\tpublic alphaLow: number;\n\n\t// Weight for Medium events \n\tpublic alphaMedium: number;\n\n\t// Weight for High events \n\tpublic alphaHigh: number;\n\n\t// Weight for Critical events \n\tpublic alphaCritical: number;\n\n\t// Threshold to stay within Med band Band thresholds (presence and overflow) \n\tpublic thMedEvents: number;\n\n\t// Threshold to stay within High band \n\tpublic thHighEvents: number;\n\n\t// Threshold to stay within Critical band \n\tpublic thCritEvents: number;\n\n\t// Threshold # of events to jump to Med band \n\tpublic thLowToMedEvents: number;\n\n\t// Threshold # of types to jump to Med band \n\tpublic thLowToMedTypes: number;\n\n\t// Threshold # of events to jump to High band \n\tpublic thMedToHighEvents: number;\n\n\t// Threshold # of types to jump to High band \n\tpublic thMedToHighTypes: number;\n\n\t// Threshold # of events to jump to Crit band \n\tpublic thHighToCritEvents: number;\n\n\t// Threshold # of types to jump to Crit band \n\tpublic thHighToCritTypes: number;\n\n\t// doesn't affect anything currently Calibration \n\tpublic calibrationMode: string;\n\n\t// objectives of calibration within bands (low,med,high,crit) \n\tpublic calibrationTargets: Map<SeverityTypeCode,number>;\n\n\t// calibration regularization (Not affecting anything currently) \n\tpublic calibrationRegularization: number;\n\n\t// maximum score per severity, Safety and caps \n\tpublic maxContributionPerTypeSeverity: number;\n\n\t// map of event types to rarity Learned parameters \n\tpublic rarityWeights: Map<number,number>;\n\n\t// calibration results per band \n\tpublic calibrationParams: Map<SeverityTypeCode,any>;\n\n\t// how many days to train on Admin \n\tpublic trainingDays: number;\n\n\t// how many days to use when calculating score. \n\tpublic scoringDays: number;\n\n constructor(deviceScoreAlphaFactor?: number, occurrenceThreshold?: number, ruleCountThreshold?: number, lowWeightAlphaFactor?: number, mediumWeightAlphaFactor?: number, highWeightAlphaFactor?: number, criticalWeightAlphaFactor?: number, highVolumeWeightAlphaFactor?: number, abnormalOutPortsAlphaFactor?: number, abnormalOutEndpointsAlphaFactor?: number, suspiciousIpAlphaFactor?: number, defaultSeverityRange?: Interval, defaultSeverityFactor?: number, severityConditionConfigs?: SeverityConditionConfig[], ruleCountThresholdConfigs?: RuleCountThresholdConfig[], ruleBasedSeverityConditionConfigs?: RuleBasedSeverityConditionConfig[], isSeverityBased?: boolean, isAlertBased?: boolean, decayHalfLifeMinutes?: number, rarityBeta?: number, raritySmoothingKMode?: string, raritySmoothingKFixed?: number, rarityClip?: FloatInterval, rarityMode?: string, alphaLow?: number, alphaMedium?: number, alphaHigh?: number, alphaCritical?: number, tHMedEvents?: number, tHHighEvents?: number, tHCritEvents?: number, tHLowToMedEvents?: number, tHLowToMedTypes?: number, tHMedToHighEvents?: number, tHMedToHighTypes?: number, tHHighToCritEvents?: number, tHHighToCritTypes?: number, calibrationMode?: string, calibrationTargets?: Map<SeverityTypeCode,number>, calibrationRegularization?: number, maxContributionPerTypeSeverity?: number, rarityWeights?: Map<number,number>, calibrationParams?: Map<SeverityTypeCode,any>, trainingDays?: number, scoringDays?: number) { \n if (deviceScoreAlphaFactor !== undefined) { this.deviceScoreAlphaFactor = deviceScoreAlphaFactor; }\n if (occurrenceThreshold !== undefined) { this.occurrenceThreshold = occurrenceThreshold; }\n if (ruleCountThreshold !== undefined) { this.ruleCountThreshold = ruleCountThreshold; }\n if (lowWeightAlphaFactor !== undefined) { this.lowWeightAlphaFactor = lowWeightAlphaFactor; }\n if (mediumWeightAlphaFactor !== undefined) { this.mediumWeightAlphaFactor = mediumWeightAlphaFactor; }\n if (highWeightAlphaFactor !== undefined) { this.highWeightAlphaFactor = highWeightAlphaFactor; }\n if (criticalWeightAlphaFactor !== undefined) { this.criticalWeightAlphaFactor = criticalWeightAlphaFactor; }\n if (highVolumeWeightAlphaFactor !== undefined) { this.highVolumeWeightAlphaFactor = highVolumeWeightAlphaFactor; }\n if (abnormalOutPortsAlphaFactor !== undefined) { this.abnormalOutPortsAlphaFactor = abnormalOutPortsAlphaFactor; }\n if (abnormalOutEndpointsAlphaFactor !== undefined) { this.abnormalOutEndpointsAlphaFactor = abnormalOutEndpointsAlphaFactor; }\n if (suspiciousIpAlphaFactor !== undefined) { this.suspiciousIpAlphaFactor = suspiciousIpAlphaFactor; }\n if (defaultSeverityRange !== undefined) { this.defaultSeverityRange = defaultSeverityRange; }\n if (defaultSeverityFactor !== undefined) { this.defaultSeverityFactor = defaultSeverityFactor; }\n if (severityConditionConfigs !== undefined) { this.severityConditionConfigs = severityConditionConfigs; }\n if (ruleCountThresholdConfigs !== undefined) { this.ruleCountThresholdConfigs = ruleCountThresholdConfigs; }\n if (ruleBasedSeverityConditionConfigs !== undefined) { this.ruleBasedSeverityConditionConfigs = ruleBasedSeverityConditionConfigs; }\n if (isSeverityBased !== undefined) { this.isSeverityBased = isSeverityBased; }\n if (isAlertBased !== undefined) { this.isAlertBased = isAlertBased; }\n if (decayHalfLifeMinutes !== undefined) { this.decayHalfLifeMinutes = decayHalfLifeMinutes; }\n if (rarityBeta !== undefined) { this.rarityBeta = rarityBeta; }\n if (raritySmoothingKMode !== undefined) { this.raritySmoothingKMode = raritySmoothingKMode; }\n if (raritySmoothingKFixed !== undefined) { this.raritySmoothingKFixed = raritySmoothingKFixed; }\n if (rarityClip !== undefined) { this.rarityClip = rarityClip; }\n if (rarityMode !== undefined) { this.rarityMode = rarityMode; }\n if (alphaLow !== undefined) { this.alphaLow = alphaLow; }\n if (alphaMedium !== undefined) { this.alphaMedium = alphaMedium; }\n if (alphaHigh !== undefined) { this.alphaHigh = alphaHigh; }\n if (alphaCritical !== undefined) { this.alphaCritical = alphaCritical; }\n if (tHMedEvents !== undefined) { this.thMedEvents = tHMedEvents; }\n if (tHHighEvents !== undefined) { this.thHighEvents = tHHighEvents; }\n if (tHCritEvents !== undefined) { this.thCritEvents = tHCritEvents; }\n if (tHLowToMedEvents !== undefined) { this.thLowToMedEvents = tHLowToMedEvents; }\n if (tHLowToMedTypes !== undefined) { this.thLowToMedTypes = tHLowToMedTypes; }\n if (tHMedToHighEvents !== undefined) { this.thMedToHighEvents = tHMedToHighEvents; }\n if (tHMedToHighTypes !== undefined) { this.thMedToHighTypes = tHMedToHighTypes; }\n if (tHHighToCritEvents !== undefined) { this.thHighToCritEvents = tHHighToCritEvents; }\n if (tHHighToCritTypes !== undefined) { this.thHighToCritTypes = tHHighToCritTypes; }\n if (calibrationMode !== undefined) { this.calibrationMode = calibrationMode; }\n if (calibrationTargets !== undefined) { this.calibrationTargets = calibrationTargets; }\n if (calibrationRegularization !== undefined) { this.calibrationRegularization = calibrationRegularization; }\n if (maxContributionPerTypeSeverity !== undefined) { this.maxContributionPerTypeSeverity = maxContributionPerTypeSeverity; }\n if (rarityWeights !== undefined) { this.rarityWeights = rarityWeights; }\n if (calibrationParams !== undefined) { this.calibrationParams = calibrationParams; }\n if (trainingDays !== undefined) { this.trainingDays = trainingDays; }\n if (scoringDays !== undefined) { this.scoringDays = scoringDays; }\n }\n\n}\n\n\n","\nimport { SeverityTypeCode } from './SeverityTypeCode';\nimport { Interval } from './Interval';\n\n// SeverityConditionConfig is a set of severity configuration configs\nexport class SeverityConditionConfig {\n\n\t// Condition severity such as High, Medium, Low... \n\tpublic conditionSeverity: SeverityTypeCode;\n\n\t// List of severities type codes \n\tpublic sevs: SeverityTypeCode[];\n\n\t// Count of occurrences \n\tpublic countTH: number;\n\n\t// Severity factor \n\tpublic severityFactor: number;\n\n\t// range of the score per severity \n\tpublic severityRange: Interval;\n\n constructor(conditionSeverity?: SeverityTypeCode, sevs?: SeverityTypeCode[], countTH?: number, severityFactor?: number, severityRange?: Interval) { \n if (conditionSeverity !== undefined) { this.conditionSeverity = conditionSeverity; }\n if (sevs !== undefined) { this.sevs = sevs; }\n if (countTH !== undefined) { this.countTH = countTH; }\n if (severityFactor !== undefined) { this.severityFactor = severityFactor; }\n if (severityRange !== undefined) { this.severityRange = severityRange; }\n }\n\n}\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// UsageRecord represents network statistics\nexport class UsageRecord extends BaseEntity {\n\n\t// Indication to the source location of the record, can be a comma-separated list since one usage record can be a result of multiple pcap files \n\tpublic source: string;\n\n\t// Account ID \n\tpublic accountId: string;\n\n\t// Stream ID \n\tpublic streamId: string;\n\n\t// Device ID \n\tpublic deviceId: string;\n\n\t// Device SIM card ID (to support multiple SIMs) \n\tpublic simId: string;\n\n\t// Device IP \n\tpublic deviceIp: string;\n\n\t// Start window time in epoch time milliseconds \n\tpublic startTime: number;\n\n\t// End window time in epoch time milliseconds \n\tpublic endTime: number;\n\n\t// List of source ports \n\tpublic srcPortsList: number[];\n\n\t// Number of source ports \n\tpublic srcPortsCount: number;\n\n\t// List of destination ports \n\tpublic dstPortsList: number[];\n\n\t// Number of destination ports \n\tpublic dstPortsCount: number;\n\n\t// List of outbound endpoints \n\tpublic endpointsList: string[];\n\n\t// Number of outbound endpoints (IPs) \n\tpublic endpointsCount: number;\n\n\t// List of outbound endpoints that sent data to the device \n\tpublic srcEndpoints: string[];\n\n\t// Number of outbound endpoints that sent data to the device \n\tpublic srcEndpointsCount: number;\n\n\t// List of outbound endpoints that received data from the device \n\tpublic dstEndpoints: string[];\n\n\t// Number of outbound endpoints that received data from the device \n\tpublic dstEndpointsCount: number;\n\n\t// Number of incoming packets (to the device) \n\tpublic packetsIn: number;\n\n\t// Number of outgoing packets (from the device) \n\tpublic packetsOut: number;\n\n\t// Total number of incoming bytes (to the device) \n\tpublic bytesIn: number;\n\n\t// Total number of outgoing bytes (from the device) \n\tpublic bytesOut: number;\n\n\t// Number of outgoing Ack flags (applicable only for TCP based protocols) \n\tpublic srcAckFlags: number;\n\n\t// Number of incoming Ack flags (applicable only for TCP based protocols) \n\tpublic dstAckFlags: number;\n\n\t// Number of outgoing Syn flags (applicable only for TCP based protocols) \n\tpublic srcSynFlags: number;\n\n\t// Number of incoming Syn flags (applicable only for TCP based protocols) \n\tpublic dstSynFlags: number;\n\n\t// Number of outgoing Rst flags (applicable only for TCP based protocols) \n\tpublic srcRstFlags: number;\n\n\t// Number of incoming Rst flags (applicable only for TCP based protocols) \n\tpublic dstRstFlags: number;\n\n\t// List of labels \n\tpublic labels: string[];\n\n\t// Internal helper field: Map of source ports (mapped to counter) \n\tpublic srcPortsMap: Map<number,number>;\n\n\t// Internal helper field: Map of destination ports (mapped to counter) \n\tpublic dstPortsMap: Map<number,number>;\n\n\t// Internal helper field: Map of endpoints (mapped to direction) \n\tpublic endpointsMap: Map<string,number>;\n\n}\n\nexport function GetUsageRecordColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"source\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"simId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceIp\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"startTime\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"endTime\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"srcPortsList\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"srcPortsCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstPortsList\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstPortsCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"endpointsList\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"endpointsCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"srcEndpoints\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"srcEndpointsCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstEndpoints\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstEndpointsCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"packetsIn\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"packetsOut\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"bytesIn\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"bytesOut\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"srcAckFlags\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstAckFlags\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"srcSynFlags\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstSynFlags\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"srcRstFlags\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstRstFlags\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"labels\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"srcPortsMap\", \"Map<number,number>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dstPortsMap\", \"Map<number,number>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"endpointsMap\", \"Map<string,number>\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// EntitiesRequest message is returned for any action returning multiple entities\nexport class EntitiesRequest<T> {\n\n\t// List of objects in the current result set \n\tpublic list: T[];\n\n constructor(list?: T[]) { \n if (list !== undefined) { this.list = list; }\n }\n\n}\n\n\n","\nimport { IdsList } from './IdsList';\n\n// IdsConfig is the IDS configuration\nexport class IdsConfig {\n\n\t// List of IDS rules SIDs to exclude from processing for a stream \n\tpublic excludeIdsRulesSids: string[];\n\n\t// List of IDS rules lists to apply for a stream \n\tpublic idsLists: IdsList[];\n\n\t// will contain list of well-known DNS servers ( IPs) that in use by a stream's end-points \n\tpublic authorizedDnsServers: string[];\n\n\t// will contain list of well-known FTP servers ( IPs) that in use by a stream's end-points \n\tpublic authorizedFtpServers: string[];\n\n\t// will contain list of well-known Modbus pollers ( masters ) servers ( IPs) that in use by a stream's end-points \n\tpublic modbusMasters: string[];\n\n\t// list of Modbus ports ( 502,503,504...) \n\tpublic modbusPorts: number[];\n\n\t// list of ports, on external end-points, that internal end-points maintain long-lasted (>3600 secs) or persisted connections with. \n\tpublic longSessionsPorts: number[];\n\n constructor(excludeIdsRulesSids?: string[], idsLists?: IdsList[], authorizedDnsServers?: string[], authorizedFtpServers?: string[], modbusMasters?: string[], modbusPorts?: number[], longSessionsPorts?: number[]) { \n if (excludeIdsRulesSids !== undefined) { this.excludeIdsRulesSids = excludeIdsRulesSids; }\n if (idsLists !== undefined) { this.idsLists = idsLists; }\n if (authorizedDnsServers !== undefined) { this.authorizedDnsServers = authorizedDnsServers; }\n if (authorizedFtpServers !== undefined) { this.authorizedFtpServers = authorizedFtpServers; }\n if (modbusMasters !== undefined) { this.modbusMasters = modbusMasters; }\n if (modbusPorts !== undefined) { this.modbusPorts = modbusPorts; }\n if (longSessionsPorts !== undefined) { this.longSessionsPorts = longSessionsPorts; }\n }\n\n}\n\n\n","\nimport { EventTypeCode } from './EventTypeCode';\n\n// RuleCountThresholdConfig is a set of event type to threshold\nexport class RuleCountThresholdConfig {\n\n\t// event type code \n\tpublic eventType: EventTypeCode;\n\n\t// occurrences threshold \n\tpublic threshold: number;\n\n constructor(eventType?: EventTypeCode, threshold?: number) { \n if (eventType !== undefined) { this.eventType = eventType; }\n if (threshold !== undefined) { this.threshold = threshold; }\n }\n\n}\n\n\n","\n\n// JsonDoc is a Json document to store in Document object store (Postgres, ElasticSearch, Couchbase ...)\n// It serves as a generic container for JSON data with a unique identifier.\nexport class JsonDoc {\n\n\t// Id is the unique identifier of the document \n\tpublic id: string;\n\n\t// Data is the raw JSON string content \n\tpublic data: string;\n\n constructor(id?: string, data?: string) { \n if (id !== undefined) { this.id = id; }\n if (data !== undefined) { this.data = data; }\n }\n\n}\n\n\n","\nimport { Thresholds } from './Thresholds';\nimport { ShieldexConfig } from './ShieldexConfig';\nimport { EventSeverityConfig } from './EventSeverityConfig';\nimport { DeviceConfig } from './DeviceConfig';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// StreamAnalyticsConfig (temporary name - should be changed to StreamConfig) keeps the AI and rules related parameters and thresholds\n// It was separated from Stream since we should not provide him access to this data structure\nexport class StreamAnalyticsConfig extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Set of stream configuration thresholds \n\tpublic thresholds: Thresholds;\n\n\t// Set of stream shieldex configuration \n\tpublic shieldexConfig: ShieldexConfig;\n\n\t// Set of event severity configuration \n\tpublic eventSeverityConfig: EventSeverityConfig;\n\n\t// Set of device related configurations \n\tpublic deviceConfig: DeviceConfig;\n\n}\n\nexport function GetStreamAnalyticsConfigColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"thresholds\", \"Thresholds\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"shieldexConfig\", \"ShieldexConfig\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"eventSeverityConfig\", \"EventSeverityConfig\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"deviceConfig\", \"DeviceConfig\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { AccountRole } from './AccountRole';\nimport { User } from './User';\nimport { ColumnDef } from './ColumnDef';\n\n// UserMemberships model include user data and all its accounts memberships\nexport class UserMemberships extends User {\n\n\t// List of user roles in accounts \n\tpublic accountRoles: AccountRole[];\n\n}\n\nexport function GetUserMembershipsColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountRoles\", \"AccountRole\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { FeatureCode } from './FeatureCode';\nimport { Account } from './Account';\nimport { ColumnDef } from './ColumnDef';\n\n// AccountDTO includes additional data for display\nexport class AccountDTO extends Account {\n\n\t// List of all features from all the groups \n\tpublic features: FeatureCode[];\n\n}\n\nexport function GetAccountDTOColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"features\", \"FeatureCode\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { UserTypeCode } from './UserTypeCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// AuditLog entity is a log entry in the audit log to track users / service account actions\nexport class AuditLog extends BaseEntity {\n\n\t// Account ID (empty if it is non-account entity) \n\tpublic accountId: string;\n\n\t// User Id \n\tpublic userId: string;\n\n\t// User type: UNDEFINED | SYSADMIN | USER | SERVICE_ACCOUNT \n\tpublic userType: UserTypeCode;\n\n\t// Action that was performed \n\tpublic action: string;\n\n\t// Item type \n\tpublic itemType: string;\n\n\t// Item Id \n\tpublic itemId: string;\n\n\t// Item Name \n\tpublic itemName: string;\n\n\t// Item value before change [Json] \n\tpublic beforeChange: string;\n\n\t// Item delta after change [Json] \n\tpublic afterChange: string;\n\n}\n\nexport function GetAuditLogColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"userId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"userType\", \"UserTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"action\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"itemType\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"itemId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"itemName\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"beforeChange\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"afterChange\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { AccountInfo } from './AccountInfo';\nimport { BaseEntityEx } from './BaseEntityEx';\nimport { ColumnDef } from './ColumnDef';\n\n// DeploymentInfo is a general statistics for a specific deployment\n// This data is used by the pulse-api to send statistics to the global dashboard\nexport class DeploymentInfo extends BaseEntityEx {\n\n\t// Account name \n\tpublic name: string;\n\n\t// Deployment accounts information \n\tpublic accounts: AccountInfo[];\n\n\t// Temporary access token to access deployment endpoint for inquiry \n\tpublic accessToken: string;\n\n\t// Cloud project id \n\tpublic cloudProjectId: string;\n\n\t// Cloud region \n\tpublic cloudRegion: string;\n\n}\n\nexport function GetDeploymentInfoColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"accounts\", \"AccountInfo\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"accessToken\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"cloudProjectId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"cloudRegion\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// SIM entity represents a physical SIM (Subscriber Identity Module) card used in an IoT device to access the internet via a cellular provider\nexport class SIM {\n\n\t// Unique SIM Identity (ICCID or IMSI or MSISDN or IP in this order) \n\tpublic id: string;\n\n\t// The ip \n\tpublic ip: string;\n\n\t// The unique serial number, integrated circuit card identification \n\tpublic iccid: string;\n\n\t// The international mobile subscriber identity number \n\tpublic imsi: string;\n\n\t// Mobile Subscriber ISDN Number (the actual phone number with the country prefix) \n\tpublic msisdn: string;\n\n constructor(id?: string, iP?: string, iCCID?: string, iMSI?: string, mSISDN?: string) { \n if (id !== undefined) { this.id = id; }\n if (iP !== undefined) { this.ip = iP; }\n if (iCCID !== undefined) { this.iccid = iCCID; }\n if (iMSI !== undefined) { this.imsi = iMSI; }\n if (mSISDN !== undefined) { this.msisdn = mSISDN; }\n }\n\n}\n\n\n","\n\n// Interval represents an interval of min and max numbers\nexport class Interval {\n\n\t// From interval \n\tpublic from: number;\n\n\t// To interval \n\tpublic to: number;\n\n constructor(from?: number, to?: number) { \n if (from !== undefined) { this.from = from; }\n if (to !== undefined) { this.to = to; }\n }\n\n}\n\n\n","\n\n// Json Represent arbitrary JSON fields collection\n// It is a map of string to any, used for flexible data structures.\nexport class Json {\n\n constructor() { \n }\n\n}\n\n\n","\nimport { AccountTypeCode } from './AccountTypeCode';\nimport { AccountStatusCode } from './AccountStatusCode';\nimport { BaseEntityEx } from './BaseEntityEx';\nimport { ColumnDef } from './ColumnDef';\n\n// AccountInfo is a summarized information about the account which is part of the deployment info\nexport class AccountInfo extends BaseEntityEx {\n\n\t// Deployment ID \n\tpublic deploymentId: string;\n\n\t// Account name \n\tpublic name: string;\n\n\t// Account Type: UNDEFINED | DEMO | TRIAL | PARTNER | CUSTOMER \n\tpublic type: AccountTypeCode;\n\n\t// Account status: UNDEFINED | ACTIVE | SUSPENDED \n\tpublic status: AccountStatusCode;\n\n\t// List of associated FeaturesGroup ids (for feature toggle) \n\tpublic groups: string[];\n\n\t// The total number of devices per stream in the account \n\tpublic totalDevices: Map<string,number>;\n\n\t// The total number of active devices per stream in the account \n\tpublic activeDevices: Map<string,number>;\n\n\t// The total number of alerts per stream in the last 24 hours \n\tpublic dailyAlerts: Map<string,number>;\n\n\t// The total number of rules per stream in this account \n\tpublic totalRules: Map<string,number>;\n\n\t// The total number of members in the account \n\tpublic totalMembers: number;\n\n\t// Shield index events count \n\tpublic shieldexEventCount: number;\n\n\t// Shield index score (1-100) \n\tpublic sheildexScore: number;\n\n\t// Shield index trend (Up / Down) \n\tpublic sheildexTrend: string;\n\n}\n\nexport function GetAccountInfoColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"deploymentId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"AccountTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"status\", \"AccountStatusCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"groups\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalDevices\", \"Map<string,number>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"activeDevices\", \"Map<string,number>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dailyAlerts\", \"Map<string,number>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalRules\", \"Map<string,number>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"totalMembers\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"shieldexEventCount\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"sheildexScore\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"sheildexTrend\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { MitreAttackCategory } from './MitreAttackCategory';\nimport { BaseEntity } from './BaseEntity';\nimport { InsightTypeCode } from './InsightTypeCode';\nimport { InsightStatusCode } from './InsightStatusCode';\nimport { SeverityTypeCode } from './SeverityTypeCode';\nimport { DirectionContextCode } from './DirectionContextCode';\nimport { RegulatoryViolation } from './RegulatoryViolation';\nimport { ColumnDef } from './ColumnDef';\n\n// Insight entity\n// The Insight entity is a specific instance of Insight specification which is the result of a single run\n// Insight is operational data (generated during the standard operation of the system) hence, it is saved in the Operational database (Elasticsearch) and has a life-cycle-policy\nexport class Insight extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id (leave empty to run insights on all streams) \n\tpublic streamId: string;\n\n\t// Insight specification Id (from insight_spec table) \n\tpublic specId: string;\n\n\t// Insight day (number representing a day in the format of: yyyymmdd) \n\tpublic dayId: number;\n\n\t// Insight type: UNDEFINED | EVENTS | STATISTICS \n\tpublic type: InsightTypeCode;\n\n\t// Insight status: UNDEFINED | INACTIVE | PENDING | ACTIVE \n\tpublic status: InsightStatusCode;\n\n\t// The string representing the insight description in the UI \n\tpublic description: string;\n\n\t// Linked objects for this insight \n\tpublic links: string[];\n\n\t// Event severity: UNDEFINED | LOW | MEDIUM | HIGH | ... \n\tpublic severity: SeverityTypeCode;\n\n\t// Title : short description of insight \n\tpublic title: string;\n\n\t// InsightDirectionContext: UNDEFINED | EVENT_LIST | DEVICE_LIST | EVENT_DETAILS | DEVICE_DETAILS \n\tpublic insightDirectionContext: DirectionContextCode;\n\n\t// Richer, longer text for insight details view NEW FIELDS \n\tpublic detailedDescription: string;\n\n\t// \n\tpublic affectedDeviceIds: string[];\n\n\t// \n\tpublic affectedAlertIds: string[];\n\n\t// \n\tpublic recommendedActions: string[];\n\n\t// \n\tpublic regulatoryViolations: RegulatoryViolation[];\n\n\t// \n\tpublic mitreAttackCategories: MitreAttackCategory[];\n\n\t// \n\tpublic affectedDeviceCount: number;\n\n}\n\nexport function GetInsightColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"specId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"dayId\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"InsightTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"status\", \"InsightStatusCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"links\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"severity\", \"SeverityTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"title\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"insightDirectionContext\", \"DirectionContextCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"detailedDescription\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"affectedDeviceIds\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"affectedAlertIds\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"recommendedActions\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"regulatoryViolations\", \"RegulatoryViolation\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"mitreAttackCategories\", \"MitreAttackCategory\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"affectedDeviceCount\", \"number\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// SimpleEntity is a generic wrapper to express a primitive type as an Entity.\n// It is useful when you need to treat a simple value (like a string or int) as a full-fledged Entity\n// in the system, for example when passing it to functions that expect an Entity interface.\nexport class SimpleEntity<T> {\n\n\t// Value is the wrapped entity value \n\tpublic value: T;\n\n constructor(value?: T) { \n if (value !== undefined) { this.value = value; }\n }\n\n}\n\n\n","\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// LlmPrompt entity is a structure representing insight LLM prompt\nexport class LlmPrompt extends BaseEntity {\n\n\t// Stream id \n\tpublic streamId: string;\n\n\t// \n\tpublic prompt: string;\n\n}\n\nexport function GetLlmPromptColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"prompt\", \"string\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { BaseMessage } from './BaseMessage';\nimport { ColumnDef } from './ColumnDef';\n\n// EntityMessage is a message structure for carrying generic entity data.\n// It embeds BaseMessage and uses an `any` type for the payload.\nexport class EntityMessage extends BaseMessage {\n\n\t// The payload of the message, typically an entity. \n\tpublic payload: any;\n\n}\n\nexport function GetEntityMessageColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"payload\", \"any\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { NotificationTypeCode } from './NotificationTypeCode';\n\n// NotificationQueuePayload is the payload for notification messages sent over pub/sub\nexport class NotificationQueuePayload {\n\n\t// Account context \n\tpublic accountId: string;\n\n\t// Human-readable message \n\tpublic description: string;\n\n\t// URL path parts (e.g., [\"console\", \"devices\"]) \n\tpublic actionParts: string[];\n\n\t// Notification category \n\tpublic type: NotificationTypeCode;\n\n\t// Target users for this notification \n\tpublic userIds: string[];\n\n constructor(accountId?: string, description?: string, actionParts?: string[], type?: NotificationTypeCode, userIds?: string[]) { \n if (accountId !== undefined) { this.accountId = accountId; }\n if (description !== undefined) { this.description = description; }\n if (actionParts !== undefined) { this.actionParts = actionParts; }\n if (type !== undefined) { this.type = type; }\n if (userIds !== undefined) { this.userIds = userIds; }\n }\n\n}\n\n\n","\n\n// NetworkEndpoint represents a unique external endpoint in a network topology\nexport class NetworkEndpoint {\n\n\t// The primary DNS name \n\tpublic mainDns: string;\n\n\t// Other DNS names \n\tpublic dnsList: string[];\n\n\t// List of IPs \n\tpublic ipList: string[];\n\n\t// Port number \n\tpublic port: number;\n\n\t// IP Protocol used in layer 3 (e.g., TCP, UDP) \n\tpublic ipProtocol: string;\n\n\t// Applicative Protocol used in layer 7 (e.g., HTTP, MQTT) \n\tpublic appProtocol: string;\n\n\t// Additional information about the application \n\tpublic appName: string;\n\n\t// Number of devices communicating with this IP \n\tpublic deviceCount: number;\n\n\t// IP Geo location provided as WKT format \n\tpublic geo: string;\n\n\t// IP Owner name \n\tpublic name: string;\n\n\t// IP Owner address \n\tpublic addr: string;\n\n\t// Does this endpoint involved in malicious activity \n\tpublic malicious: boolean;\n\n\t// List of malicious activities tags \n\tpublic tags: string;\n\n constructor(mainDns?: string, dnsList?: string[], ipList?: string[], port?: number, ipProtocol?: string, appProtocol?: string, appName?: string, deviceCount?: number, geo?: string, name?: string, address?: string, malicious?: boolean, tags?: string) { \n if (mainDns !== undefined) { this.mainDns = mainDns; }\n if (dnsList !== undefined) { this.dnsList = dnsList; }\n if (ipList !== undefined) { this.ipList = ipList; }\n if (port !== undefined) { this.port = port; }\n if (ipProtocol !== undefined) { this.ipProtocol = ipProtocol; }\n if (appProtocol !== undefined) { this.appProtocol = appProtocol; }\n if (appName !== undefined) { this.appName = appName; }\n if (deviceCount !== undefined) { this.deviceCount = deviceCount; }\n if (geo !== undefined) { this.geo = geo; }\n if (name !== undefined) { this.name = name; }\n if (address !== undefined) { this.addr = address; }\n if (malicious !== undefined) { this.malicious = malicious; }\n if (tags !== undefined) { this.tags = tags; }\n }\n\n}\n\n\n","\n\n// FlowRecord represents a single flow record from the CSV data\n// generated by Suricata0-based parser\nexport class FlowRecord {\n\n\t// Unique identifier for the flow \n\tpublic flowId: number;\n\n\t// \n\tpublic streamId: string;\n\n\t// ID of the device \n\tpublic deviceId: string;\n\n\t// Start time of the flow in epoch milliseconds \n\tpublic startTime: number;\n\n\t// End time of the flow in epoch milliseconds \n\tpublic endTime: number;\n\n\t// Source IP address \n\tpublic srcIP: string;\n\n\t// Source port number \n\tpublic srcPort: number;\n\n\t// Destination IP address \n\tpublic dstIP: string;\n\n\t// Destination port number \n\tpublic dstPort: number;\n\n\t// Packets sent to the server \n\tpublic pcktToSrv: number;\n\n\t// Packets sent to the client \n\tpublic pcktToClient: number;\n\n\t// Bytes sent to the server \n\tpublic bytesToSrv: number;\n\n\t// Bytes sent to the client \n\tpublic bytesToClient: number;\n\n\t// Protocol used (e.g., TCP, UDP) \n\tpublic protocol: string;\n\n\t// Associated PCAP file name \n\tpublic pcap: string;\n\n\t// \n\tpublic alerted: boolean;\n\n constructor(flowId?: number, streamId?: string, deviceId?: string, startTime?: number, endTime?: number, srcIP?: string, srcPort?: number, dstIP?: string, dstPort?: number, pcktToSrv?: number, pcktToClient?: number, bytesToSrv?: number, bytesToClient?: number, protocol?: string, pcap?: string, alerted?: boolean) { \n if (flowId !== undefined) { this.flowId = flowId; }\n if (streamId !== undefined) { this.streamId = streamId; }\n if (deviceId !== undefined) { this.deviceId = deviceId; }\n if (startTime !== undefined) { this.startTime = startTime; }\n if (endTime !== undefined) { this.endTime = endTime; }\n if (srcIP !== undefined) { this.srcIP = srcIP; }\n if (srcPort !== undefined) { this.srcPort = srcPort; }\n if (dstIP !== undefined) { this.dstIP = dstIP; }\n if (dstPort !== undefined) { this.dstPort = dstPort; }\n if (pcktToSrv !== undefined) { this.pcktToSrv = pcktToSrv; }\n if (pcktToClient !== undefined) { this.pcktToClient = pcktToClient; }\n if (bytesToSrv !== undefined) { this.bytesToSrv = bytesToSrv; }\n if (bytesToClient !== undefined) { this.bytesToClient = bytesToClient; }\n if (protocol !== undefined) { this.protocol = protocol; }\n if (pcap !== undefined) { this.pcap = pcap; }\n if (alerted !== undefined) { this.alerted = alerted; }\n }\n\n}\n\n\n","\nimport { Tuple } from './Tuple';\nimport { EventTypeCode } from './EventTypeCode';\nimport { SeverityTypeCode } from './SeverityTypeCode';\nimport { DeviceActionCode } from './DeviceActionCode';\nimport { BaseEntity } from './BaseEntity';\nimport { IntegrationTypeCode } from './IntegrationTypeCode';\nimport { IntegrationTriggerCode } from './IntegrationTriggerCode';\nimport { HttpMethodCode } from './HttpMethodCode';\nimport { ColumnDef } from './ColumnDef';\n\n// Integration entity defines technical integration to third party\nexport class Integration extends BaseEntity {\n\n\t// Account id \n\tpublic accountId: string;\n\n\t// Stream id (leave empty to apply on all streams) \n\tpublic streamId: string;\n\n\t// Integration type (HTTP | HTTPS | SMTP | EMAIL ...) \n\tpublic type: IntegrationTypeCode;\n\n\t// Integration trigger (EVENT | ACTION ...) \n\tpublic trigger: IntegrationTriggerCode;\n\n\t// Integration name \n\tpublic name: string;\n\n\t// Is integration enabled \n\tpublic enabled: boolean;\n\n\t// Host name or ip address (applicable for all protocols) \n\tpublic host: string;\n\n\t// Port number (applicable for all protocols) \n\tpublic port: number;\n\n\t// User (applicable for all protocols) \n\tpublic user: string;\n\n\t// Password (applicable for all protocols) \n\tpublic password: string;\n\n\t// HTTP protocol URL path (applicable for http/https protocols) \n\tpublic url: string;\n\n\t// HTTP protocol method: GET | POST | PUT | PATCH | DELETE (applicable for http/https protocols) \n\tpublic method: HttpMethodCode;\n\n\t// HTTP protocol Headers (applicable for http/https protocols) \n\tpublic headers: Tuple<string, string>[];\n\n\t// Message content mime type \n\tpublic mimeType: string;\n\n\t// SMTP/EMAIL protocol List of recipients \n\tpublic recipients: string[];\n\n\t// SMTP/EMAIL protocol Message subject template \n\tpublic subject: string;\n\n\t// Message body template \n\tpublic body: string;\n\n\t// SMTP/EMAIL sender (will be: system@pulseiot.io if it si empty) \n\tpublic from: string;\n\n\t// Activate integration only if the event object type code is in the list (empty list means no filter) \n\tpublic eventTypes: EventTypeCode[];\n\n\t// Activate integration only if the event severity matching this value \n\tpublic eventSeverity: SeverityTypeCode;\n\n\t// Activate integration only for specific action (applicable for Trigger = ACTION) \n\tpublic preventiveAction: DeviceActionCode;\n\n}\n\nexport function GetIntegrationColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"streamId\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"type\", \"IntegrationTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"trigger\", \"IntegrationTriggerCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"enabled\", \"boolean\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"host\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"port\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"user\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"password\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"url\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"method\", \"HttpMethodCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"headers\", \"Tuple<string, string>\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"mimeType\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"recipients\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"subject\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"body\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"from\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"eventTypes\", \"EventTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"eventSeverity\", \"SeverityTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"preventiveAction\", \"DeviceActionCode\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\nimport { DataSourceCode } from './DataSourceCode';\nimport { EventTypeCode } from './EventTypeCode';\nimport { SeverityTypeCode } from './SeverityTypeCode';\nimport { BaseEntity } from './BaseEntity';\nimport { ColumnDef } from './ColumnDef';\n\n// RuleTemplate entity is used to define rules quickly based on pre-defined templates\nexport class RuleTemplate extends BaseEntity {\n\n\t// Rule template name \n\tpublic name: string;\n\n\t// Rule template description \n\tpublic description: string;\n\n\t// Rule context - what is the data source to evaluate the rule \n\tpublic context: DataSourceCode;\n\n\t// List of AND conditions, all of them must be true for the rule to trigger event \n\tpublic matchAll: string[];\n\n\t// List of OR conditions, at least one of them must be true for the rule to trigger event \n\tpublic matchAny: string[];\n\n\t// The time duration (in seconds) for consecutive aggregations \n\tpublic timeWindowSec: number;\n\n\t// Set the event type on events generated by this rule \n\tpublic setEventType: EventTypeCode;\n\n\t// Set the event severity on events generated by this rule \n\tpublic setEventSeverity: SeverityTypeCode;\n\n}\n\nexport function GetRuleTemplateColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"name\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"description\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"context\", \"DataSourceCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"matchAll\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"matchAny\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"timeWindowSec\", \"number\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"setEventType\", \"EventTypeCode\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"setEventSeverity\", \"SeverityTypeCode\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","\n\n// errorStruct is the default implementation of the Error interface.\nexport class errorStruct {\n\n\t// code is the numeric error code \n\tpublic code: number;\n\n\t// text is the error message \n\tpublic text: string;\n\n constructor(code?: number, text?: string) { \n if (code !== undefined) { this.code = code; }\n if (text !== undefined) { this.text = text; }\n }\n\n}\n\n\n","\nimport { SeverityTypeCode } from './SeverityTypeCode';\nimport { RuleCountThresholdConfig } from './RuleCountThresholdConfig';\n\n// RuleBasedSeverityConditionConfig is a set of severity types code configs\nexport class RuleBasedSeverityConditionConfig {\n\n\t// Severity type code \n\tpublic severityType: SeverityTypeCode;\n\n\t// bias config \n\tpublic bias: number;\n\n\t// 0 or more RuleCountThresholdConfig \n\tpublic ruleConditionThresholdConfig: RuleCountThresholdConfig[];\n\n\t// Minimum number of different rule types \n\tpublic ruleTypesThreshold: number;\n\n constructor(severityType?: SeverityTypeCode, bias?: number, ruleConditionThresholdConfig?: RuleCountThresholdConfig[], ruleTypesThreshold?: number) { \n if (severityType !== undefined) { this.severityType = severityType; }\n if (bias !== undefined) { this.bias = bias; }\n if (ruleConditionThresholdConfig !== undefined) { this.ruleConditionThresholdConfig = ruleConditionThresholdConfig; }\n if (ruleTypesThreshold !== undefined) { this.ruleTypesThreshold = ruleTypesThreshold; }\n }\n\n}\n\n\n","\nimport { AccountRole } from './AccountRole';\nimport { User } from './User';\nimport { ColumnDef } from './ColumnDef';\n\n// UserMembership model include user data with a specific account membership\nexport class UserMembership extends User {\n\n\t// User role in the account \n\tpublic accountRole: AccountRole;\n\n}\n\nexport function GetUserMembershipColumnsDef() : ColumnDef[] {\n let result : ColumnDef[] = [];\n\tresult.push(new ColumnDef(\"\", \"id\", \"string\", \"\"));\n\tresult.push(new ColumnDef(\"\", \"createdOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"updatedOn\", \"number\", \"datetime\"));\n\tresult.push(new ColumnDef(\"\", \"accountRole\", \"AccountRole\", \"\"));\n\t\n\n\treturn result;\n}\n\n\n\n","import { EnvironmentProviders, makeEnvironmentProviders } from '@angular/core';\nimport { InjectionToken } from '@angular/core';\n\nexport class AppConfig {\n api: string = '';\n}\n\nexport const APP_CONFIG = new InjectionToken<AppConfig>('CLIENT_LIB_APP_CONFIG');\n\nexport function provideClientLib(config: AppConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n { provide: APP_CONFIG, useValue: config },\n ]);\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpRequest } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\n\nconst httpOptions = {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json',\n 'Cache-Control': 'no-cache, no-store',\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Headers': 'Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, X-API-KEY, X-ACCESS-TOKEN, X-TIMEZONE, accept, origin, Cache-Control, X-Requested-With, Authorization, Content-Disposition, Content-Filename',\n })\n};\n\n// Utility class for all REST services with common functions\n@Injectable({\n providedIn: 'root'\n})\nexport class RestUtils {\n\n // Constructor with injected authentication service\n constructor(private http: HttpClient) { }\n\n // Upload is HTTP POST action but the body is File object\n upload<T>(file: File, url: string, ...params: string[]) {\n\n const resourceUrl = this.buildUrl(url, ...params);\n\n const formData: FormData = new FormData();\n formData.append('fileKey', file, file.name);\n\n const req = new HttpRequest('POST', resourceUrl, formData, {\n reportProgress: false,\n responseType: 'json',\n });\n return this.http.request<T>(req);\n }\n\n // Download is HTTP GET action but the content is a blob\n download(fileName: string, url: string, ...params: string[]) {\n const resourceUrl = this.buildUrl(url, ...params);\n\n let downloadLink = fileName\n\n // extract file name\n params.forEach(p => {\n let arr = p.split('=');\n if (arr.length > 1) {\n if (arr[0].toLowerCase() === 'filename') {\n downloadLink = arr[1];\n }\n }\n });\n\n // Set content type for: json / csv / xml / pdf /xslx\n let contentType = this.getMimeType(downloadLink);\n\n return this.http.get(resourceUrl, {\n responseType: 'blob',\n reportProgress: true,\n observe: 'events',\n headers: new HttpHeaders({ 'Content-Type': contentType })\n });\n }\n\n // Download2 is an alternative option to download\n download2(fileName: string, url: string, ...params: string[]) {\n\n let downloadLink = fileName\n\n // extract file name\n params.forEach(p => {\n let arr = p.split('=');\n if (arr.length > 1) {\n if (arr[0].toLowerCase() === 'filename') {\n downloadLink = arr[1];\n }\n }\n });\n\n let contentType = this.getMimeType(fileName);\n\n const link = document.createElement('a');\n link.href = this.buildUrl(url, ...params);\n link.download = downloadLink;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n\n }\n\n // HTTP GET action\n get<T>(url: string, ...params: string[]): Observable<T> {\n const resourceUrl = this.buildUrl(url, ...params);\n return this.http.get<T>(resourceUrl, httpOptions)\n }\n\n // HTTP POST action\n post<T>(url: string, body?: string, ...params: string[]): Observable<T> {\n const resourceUrl = this.buildUrl(url, ...params);\n return this.http.post<T>(resourceUrl, body, httpOptions)\n }\n\n // HTTP PUT action\n put<T>(url: string, body?: string, ...params: string[]): Observable<T> {\n const resourceUrl = this.buildUrl(url, ...params);\n return this.http.put<T>(resourceUrl, body, httpOptions)\n }\n\n // HTTP PATCH action\n patch<T>(url: string, body?: string, ...params: string[]): Observable<T> {\n const resourceUrl = this.buildUrl(url, ...params);\n return this.http.patch<T>(resourceUrl, body, httpOptions)\n }\n\n // HTTP DELETE action\n delete<T>(url: string, ...params: string[]): Observable<T> {\n const resourceUrl = this.buildUrl(url, ...params);\n return this.http.delete<T>(resourceUrl, httpOptions)\n }\n\n // Construct URL with parameters\n private buildUrl(url: string, ...params: string[]) {\n return (params === null) ? url : (params.length === 0) ? url : `${url}${params && params.length > 0 ? '?'+params.join('&') : ''}`;\n }\n\n // Return MIME type based on file extension\n private getMimeType(fileName: string): string {\n // Set content type for: json / csv / xml / pdf /xslx\n let contentType = 'application/json';\n if (fileName.toLowerCase().endsWith('jpg') || fileName.toLowerCase().endsWith('jpeg')) {\n contentType = 'image/jpeg';\n } else if (fileName.toLowerCase().endsWith('png')) {\n contentType = 'image/png';\n } else if (fileName.toLowerCase().endsWith('tif') || fileName.toLowerCase().endsWith('tiff')) {\n contentType = 'image/tiff';\n } else if (fileName.toLowerCase().endsWith('csv')) {\n contentType = 'text/csv';\n } else if (fileName.toLowerCase().endsWith('xml')) {\n contentType = 'text/xml';\n } else if (fileName.toLowerCase().endsWith('pdf')) {\n contentType = 'application/pdf';\n } else if (fileName.toLowerCase().endsWith('xlsx')) {\n contentType = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\"\n }\n return contentType\n }\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { DevicesMap } from '../model';\nimport { DeviceWithEvents } from '../model';\nimport { NetworkMapTypeCode } from '../model';\nimport { TimeSeriesConsumption } from '../model';\nimport { Device } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { DeviceStatusCode } from '../model';\nimport { DeviceReport } from '../model';\nimport { TimeSeries } from '../model';\nimport { Distribution } from '../model';\nimport { NetworkMap } from '../model';\nimport { Entities } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { DeviceTypeCode } from '../model';\nimport { DeviceActionCode } from '../model';\nimport { MapBounds } from '../model';\n\n// UsrDevicesEndPoint device related actions for the operator \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrDevicesService {\n\n // URL to web api\n private baseUrl = '/devices';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new device\n */\n create(body?: Device) {\n return this.rest.put<EntityResponse<Device>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Create bulk of new devices\n */\n bulkCreate(body?: Entities<Device>) {\n return this.rest.put<EntitiesResponse<Device>>(`${this.baseUrl}/bulk`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing device\n */\n update(body?: Device) {\n return this.rest.patch<EntityResponse<Device>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Create bulk of new devices\n */\n bulkUpdate(body?: Entities<Device>) {\n return this.rest.patch<EntitiesResponse<Device>>(`${this.baseUrl}/bulk`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete device\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single device by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Device>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find devices by query\n */\n find(streamId?: string, search?: string, from?: number, to?: number, type?: DeviceTypeCode[], status?: DeviceStatusCode[], risk?: number, sort?: string, page?: number, size?: number, ids?: string[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (risk != null) { params.push(`risk=${risk}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n if (ids != null) { params.push(`ids=${ids}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Device>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Export devices by query to a file as a stream of CSV | JSON | XML | XLSX\n */\n export(format?: string, streamId?: string, search?: string, from?: number, to?: number, type?: DeviceTypeCode[], status?: DeviceStatusCode[], risk?: number, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (risk != null) { params.push(`risk=${risk}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.download(`usr-devices`,`${this.baseUrl}/export/${format}`, ...params);\n }\n\n /**\n * Upload device list from csv file\n */\n upload(streamId?: string, ip?: string[], iccid?: string[], imsi?: string[], msisdn?: string[], imei?: string, name?: string, operator?: string, label?: string[], tag?: string[], country?: string, city?: string, street?: string, postal?: string, lon?: string, lat?: string) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (ip != null) { params.push(`ip=${ip}`); }\n if (iccid != null) { params.push(`iccid=${iccid}`); }\n if (imsi != null) { params.push(`imsi=${imsi}`); }\n if (msisdn != null) { params.push(`msisdn=${msisdn}`); }\n if (imei != null) { params.push(`imei=${imei}`); }\n if (name != null) { params.push(`name=${name}`); }\n if (operator != null) { params.push(`operator=${operator}`); }\n if (label != null) { params.push(`label=${label}`); }\n if (tag != null) { params.push(`tag=${tag}`); }\n if (country != null) { params.push(`country=${country}`); }\n if (city != null) { params.push(`city=${city}`); }\n if (street != null) { params.push(`street=${street}`); }\n if (postal != null) { params.push(`postal=${postal}`); }\n if (lon != null) { params.push(`lon=${lon}`); }\n if (lat != null) { params.push(`lat=${lat}`); }\n\n\t\treturn this.rest.post<ActionResponse>(`${this.baseUrl}/upload`, '', ...params);\n }\n\n /**\n * Add tag to a device\n */\n addTag(id?: string, tag?: string) {\n return this.rest.post<EntityResponse<Device>>(`${this.baseUrl}/${id}/tags/${tag}`, '');\n }\n\n /**\n * Delete tag from a device\n */\n deleteTag(id?: string, tag?: string) {\n return this.rest.delete<EntityResponse<Device>>(`${this.baseUrl}/${id}/tags/${tag}`);\n }\n\n /**\n * Apply action on a device\n */\n applyAction(id?: string, action?: DeviceActionCode) {\n return this.rest.post<ActionResponse>(`${this.baseUrl}/${id}/actions/${action}`, '');\n }\n\n /**\n * Find top 10 devices by their score and filter criteria\n */\n findTop(streamId?: string, search?: string, type?: DeviceTypeCode[], status?: DeviceStatusCode[], risk?: number, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (risk != null) { params.push(`risk=${risk}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntityResponse<DeviceWithEvents>>(`${this.baseUrl}/top`, ...params);\n }\n\n /**\n * Get device distribution by type filtered by query\n */\n countByType(streamId?: string, search?: string, from?: number, to?: number, type?: DeviceTypeCode[], status?: DeviceStatusCode[], risk?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (risk != null) { params.push(`risk=${risk}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-type`, ...params);\n }\n\n /**\n * Get device distribution by status filtered by query\n */\n countByStatus(streamId?: string, search?: string, from?: number, to?: number, type?: DeviceTypeCode[], status?: DeviceStatusCode[], risk?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (risk != null) { params.push(`risk=${risk}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-status`, ...params);\n }\n\n /**\n * Get device distribution by action filtered by query\n */\n countByAction(streamId?: string, search?: string, from?: number, to?: number, type?: DeviceTypeCode[], status?: DeviceStatusCode[], risk?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (risk != null) { params.push(`risk=${risk}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-action`, ...params);\n }\n\n /**\n * Get network map of devices\n */\n getNetworkMap(streamId?: string, from?: number, to?: number, type?: DeviceTypeCode[], tag?: string[], id?: string[], mapType?: NetworkMapTypeCode, ips?: string[], limit?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (tag != null) { params.push(`tag=${tag}`); }\n if (id != null) { params.push(`id=${id}`); }\n if (mapType != null) { params.push(`mapType=${mapType}`); }\n if (ips != null) { params.push(`ips=${ips}`); }\n if (limit != null) { params.push(`limit=${limit}`); }\n\n\t\treturn this.rest.get<EntityResponse<NetworkMap>>(`${this.baseUrl}/network-map`, ...params);\n }\n\n /**\n * Get latest device report, the Key contains latest devices at risk number (works in account level)\n */\n getLatestDeviceReport() {\n return this.rest.get<EntityResponse<DeviceReport>>(`${this.baseUrl}/report/latest`);\n }\n\n /**\n * Get devicesAtRisk histogram over the provided time period\n */\n getDeviceReportTimeline(streamId?: string, from?: number, to?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n\n\t\treturn this.rest.get<EntityResponse<TimeSeries<DeviceReport>>>(`${this.baseUrl}/report/timeline`, ...params);\n }\n\n /**\n * Get device / group of devices consumption over time\n */\n getConsumptionTimeline(streamId?: string, from?: number, to?: number, type?: DeviceTypeCode[], tag?: string[], id?: string[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (tag != null) { params.push(`tag=${tag}`); }\n if (id != null) { params.push(`id=${id}`); }\n\n\t\treturn this.rest.get<EntityResponse<TimeSeriesConsumption>>(`${this.baseUrl}/consumption/timeline`, ...params);\n }\n\n /**\n * Get device / group of devices consumption trend: 7 days consumption compared to the average of the previous weeks\n */\n getConsumptionTrend(streamId?: string, type?: DeviceTypeCode[], tag?: string[], id?: string[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (tag != null) { params.push(`tag=${tag}`); }\n if (id != null) { params.push(`id=${id}`); }\n\n\t\treturn this.rest.get<ActionResponse>(`${this.baseUrl}/consumption/trend`, ...params);\n }\n\n /**\n * Find devices by insight id query\n */\n findByInsightContext(streamId?: string, insightId?: string, from?: number, to?: number, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (insightId != null) { params.push(`insightId=${insightId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Device>>(`${this.baseUrl}/find-by-insight-context`, ...params);\n }\n\n /**\n * Find devices by query\n */\n findDevicesMap(streamId?: string, search?: string, type?: DeviceTypeCode[], status?: DeviceStatusCode[], risk?: number, sort?: string, page?: number, size?: number, mapBounds?: MapBounds) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (risk != null) { params.push(`risk=${risk}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n if (mapBounds != null) { params.push(`mapBounds=${mapBounds}`); }\n\n\t\treturn this.rest.get<EntityResponse<DevicesMap>>(`${this.baseUrl}/find-devices-map`, ...params);\n }\n\n /**\n * Get device distribution by risk filtered by query\n */\n countByRisk(streamId?: string, search?: string, from?: number, to?: number, type?: DeviceTypeCode[], status?: DeviceStatusCode[], risk?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (risk != null) { params.push(`risk=${risk}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-risk`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { GraphSeries } from '../model';\nimport { Report } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { TimeSeries } from '../model';\n\n// UsrReportsEndPoint is a list of system reports related actions \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrReportsService {\n\n // URL to web api\n private baseUrl = '/reports';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new report\n */\n create(body?: Report) {\n return this.rest.put<EntityResponse<Report>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing report\n */\n update(body?: Report) {\n return this.rest.patch<EntityResponse<Report>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete report\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single report by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Report>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find reports by query\n */\n find(accountId?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Report>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Create PDF compliance report\n */\n getComplianceReport(streamId?: string, from?: number, to?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n\n\t\treturn this.rest.download(`usr-reports`,`${this.baseUrl}/compliance`, ...params);\n }\n\n /**\n * Create PDF compliance report and send it by mail to the user's email\n */\n getComplianceReportByMail(streamId?: string, from?: number, to?: number, addressee?: string[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (addressee != null) { params.push(`addressee=${addressee}`); }\n\n\t\treturn this.rest.get<ActionResponse>(`${this.baseUrl}/compliance-by-mail`, ...params);\n }\n\n /**\n * Get network activity over time histogram over the provided time period\n */\n getNetworkActivityOverTime(streamId?: string, from?: number, to?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n\n\t\treturn this.rest.get<EntityResponse<TimeSeries<number>>>(`${this.baseUrl}/network-activity-over-time`, ...params);\n }\n\n /**\n * Get device groups by communication frequency over the provided time period\n */\n getDeviceGroupsByCommunicationFrequency(streamId?: string, from?: number, to?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n\n\t\treturn this.rest.get<EntityResponse<GraphSeries<string, number>>>(`${this.baseUrl}/device-groups-by-communication-frequency`, ...params);\n }\n\n /**\n * Get device distribution by number of destinations over the provided time period\n */\n getDeviceDistributionByNumberOfDestinations(streamId?: string, from?: number, to?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n\n\t\treturn this.rest.get<EntityResponse<GraphSeries<string, number>>>(`${this.baseUrl}/device-distribution-by-number-of-destinations`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { Image } from '../model';\nimport { UserMemberships } from '../model';\nimport { ConfigParam } from '../model';\nimport { ActionResponse } from '../model';\nimport { EntityResponse } from '../model';\nimport { AccountDTO } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { Feature } from '../model';\nimport { Stream } from '../model';\n\n// UsrUserEndPoint Services for user registration and login \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrUserService {\n\n // URL to web api\n private baseUrl = '/user';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Authorize user, verify user against account\n * The response includes access token valid for 20 minutes. The client side should renew the token before expiration using refresh-token method\n */\n authorize(body?: string) {\n return this.rest.post<ActionResponse>(`${this.baseUrl}/authorize`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Refresh token (set new expiration time) and associate with new account if required\n * The response includes the newly refreshed token both in the HTTP header and the new account details\n */\n setAccount(id?: string) {\n return this.rest.post<EntityResponse<AccountDTO>>(`${this.baseUrl}/set-account/${id}`, '');\n }\n\n /**\n * Get user's current account details\n */\n getAccount() {\n return this.rest.get<EntityResponse<AccountDTO>>(`${this.baseUrl}/get-account`);\n }\n\n /**\n * Get user's current account logo\n */\n getAccountLogo() {\n return this.rest.get<EntityResponse<Image>>(`${this.baseUrl}/get-account-logo`);\n }\n\n /**\n * Get user's current account features\n */\n getAccountFeatures() {\n return this.rest.get<EntitiesResponse<Feature>>(`${this.baseUrl}/get-account-features`);\n }\n\n /**\n * Get list of account streams accessible by the user\n */\n getAccountStreams() {\n return this.rest.get<EntitiesResponse<Stream>>(`${this.baseUrl}/get-account-streams`);\n }\n\n /**\n * Get all the user memberships (all accounts that the current user has access to)\n */\n memberships() {\n return this.rest.get<EntityResponse<UserMemberships>>(`${this.baseUrl}/memberships`);\n }\n\n /**\n * Save user's never show again guides\n */\n setNeverShowAgainGuides(guides?: string) {\n return this.rest.patch<ActionResponse>(`${this.baseUrl}/never-show-guides/${guides}`, '');\n }\n\n /**\n * Save user's avatar\n */\n saveAvatar(body?: Image) {\n return this.rest.patch<ActionResponse>(`${this.baseUrl}/avatar`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Get user's avatar\n */\n getAvatar() {\n return this.rest.get<EntityResponse<Image>>(`${this.baseUrl}/avatar`);\n }\n\n /**\n * Get arbitrary image\n */\n getImage(id?: string) {\n return this.rest.get<EntityResponse<Image>>(`${this.baseUrl}/images/${id}`);\n }\n\n /**\n * Get arbitrary image as stream\n */\n getImageStream(id?: string) {\n return this.rest.download(`export`,`${this.baseUrl}/image-bytes/${id}`);\n }\n\n /**\n * Get personal access token\n */\n getAccessToken() {\n return this.rest.get<ActionResponse>(`${this.baseUrl}/access-token`);\n }\n\n /**\n * Ask for premium request\n */\n premiumRequest(featureCode?: string) {\n return this.rest.get<ActionResponse>(`${this.baseUrl}/premium-request`);\n }\n\n /**\n * Get system configuration parameters\n */\n getSysConfig() {\n return this.rest.get<EntitiesResponse<ConfigParam>>(`${this.baseUrl}/get-sys-config`);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { Device } from '../model';\n\n// McpToolsEndPoint Services for the Agentic AI \n@Injectable({\n providedIn: 'root'\n})\nexport class McpToolsService {\n\n // URL to web api\n private baseUrl = '/mcp/tools';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Search for all devices in a stream\n */\n getStreamDevices(accountId?: string, streamId?: string, page?: number) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (page != null) { params.push(`page=${page}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Device>>(`${this.baseUrl}/stream-devices`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntityResponse } from '../model';\nimport { AccountSettings } from '../model';\nimport { ActionResponse } from '../model';\nimport { AccountStatusCode } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { Image } from '../model';\nimport { AccountReportDTO } from '../model';\nimport { AccountTypeCode } from '../model';\nimport { DeviceTypeCode } from '../model';\nimport { DeviceStatusCode } from '../model';\nimport { Account } from '../model';\n\n// SysAccountsEndPoint is a list of account related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysAccountsService {\n\n // URL to web api\n private baseUrl = '/sys/accounts';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new account\n */\n create(dontCreateStream?: boolean, body?: Account) {\n const params = [];\n if (dontCreateStream != null) { params.push(`dontCreateStream=${dontCreateStream}`); }\n\n\t\treturn this.rest.put<EntityResponse<Account>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body, ...params);\n }\n\n /**\n * Update existing account\n */\n update(body?: Account) {\n return this.rest.patch<EntityResponse<Account>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing account settings\n */\n updateSettings(id?: string, body?: AccountSettings) {\n return this.rest.patch<ActionResponse>(`${this.baseUrl}/${id}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete account and all its content\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single account by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Account>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find accounts by query\n */\n find(search?: string, type?: AccountTypeCode[], status?: AccountStatusCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Account>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Save account logo\n */\n saveLogo(body?: Image) {\n return this.rest.patch<ActionResponse>(`${this.baseUrl}/logo`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Get account logo\n */\n getLogo(id?: string) {\n return this.rest.get<EntityResponse<Image>>(`${this.baseUrl}/logo/${id}`);\n }\n\n /**\n * Find accounts by query\n */\n findAccountReports(search?: string, type?: AccountTypeCode[], status?: AccountStatusCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<AccountReportDTO>>(`${this.baseUrl}/find-account-reports`, ...params);\n }\n\n /**\n * Export accounts reports by query to a file\n */\n export(format?: string, streamId?: string, search?: string, from?: number, to?: number, type?: DeviceTypeCode[], status?: DeviceStatusCode[], risk?: number, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (risk != null) { params.push(`risk=${risk}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.download(`export`,`${this.baseUrl}/export/${format}`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { StringIntValue } from '../model';\nimport { ApiKey } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\n\n// SysKeysEndPoint is a list of API Keys related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysKeysService {\n\n // URL to web api\n private baseUrl = '/sys/keys';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new api key\n */\n create(body?: ApiKey) {\n return this.rest.put<EntityResponse<ApiKey>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing api key\n */\n update(body?: ApiKey) {\n return this.rest.patch<EntityResponse<ApiKey>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete api key\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single API key by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<ApiKey>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find keys by query\n */\n find(search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<ApiKey>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Get list of services for the ACL\n */\n listServices() {\n return this.rest.get<EntitiesResponse<StringIntValue>>(`${this.baseUrl}/services`);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { ActionResponse } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { Rule } from '../model';\nimport { RuleTemplate } from '../model';\nimport { EntityResponse } from '../model';\n\n// SysRuleTemplatesEndPoint is a list of rule templates related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysRuleTemplatesService {\n\n // URL to web api\n private baseUrl = '/sys/rule-templates';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * region Endpoint REST handlers ---------------------------------------------------------------------------------------\n * Create new rule template configuration\n */\n create(body?: RuleTemplate) {\n return this.rest.put<EntityResponse<RuleTemplate>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing rule template configuration\n */\n update(body?: RuleTemplate) {\n return this.rest.patch<EntityResponse<RuleTemplate>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete rule template configuration\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single rule template by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<RuleTemplate>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find rule templates by query\n */\n find(search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Rule>>(`${this.baseUrl}`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { Stream } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { EntitiesResponse } from '../model';\n\n// SysStreamsEndPoint is a list of streams related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysStreamsService {\n\n // URL to web api\n private baseUrl = '/sys/streams';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * region Endpoint REST handlers ---------------------------------------------------------------------------------------\n * Create new stream configuration\n */\n create(body?: Stream) {\n return this.rest.put<EntityResponse<Stream>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing stream configuration\n */\n update(body?: Stream) {\n return this.rest.patch<EntityResponse<Stream>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete stream configuration\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single stream by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Stream>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find streams by query\n */\n find(accountId?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Stream>>(`${this.baseUrl}`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { ActionResponse } from '../model';\nimport { UserTypeCode } from '../model';\nimport { UserMembership } from '../model';\nimport { UserStatusCode } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { User } from '../model';\nimport { EntityResponse } from '../model';\nimport { UserMemberships } from '../model';\n\n// SysUsersEndPoint is a list of users related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysUsersService {\n\n // URL to web api\n private baseUrl = '/sys/users';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new user\n */\n create(provisionInAuth0?: boolean, body?: User) {\n const params = [];\n if (provisionInAuth0 != null) { params.push(`provisionInAuth0=${provisionInAuth0}`); }\n\n\t\treturn this.rest.put<EntityResponse<User>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body, ...params);\n }\n\n /**\n * Create new user with all its accounts memberships\n */\n createMembership(body?: UserMembership) {\n return this.rest.post<EntityResponse<UserMemberships>>(`${this.baseUrl}/memberships`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing user\n */\n update(body?: User) {\n return this.rest.patch<EntityResponse<User>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete user and remove all its memberships\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single user by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<User>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find users by query\n */\n find(search?: string, type?: UserTypeCode[], status?: UserStatusCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (status != null) { params.push(`status=${status}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<User>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Update default account\n */\n setDefaultAccount(id?: string, accountId?: string) {\n return this.rest.patch<ActionResponse>(`${this.baseUrl}/${id}/${accountId}`, '');\n }\n\n /**\n * Get access token\n */\n getAccessToken(id?: string) {\n return this.rest.get<ActionResponse>(`${this.baseUrl}/${id}/access-token`);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EventTypeCode } from '../model';\nimport { SeverityTypeCode } from '../model';\nimport { Device } from '../model';\nimport { Tuple } from '../model';\nimport { SimpleEntity } from '../model';\nimport { EntityResponse } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { EventWithDevice } from '../model';\nimport { MaliciousIPData } from '../model';\nimport { Distribution } from '../model';\nimport { ActionResponse } from '../model';\nimport { TimeSeries } from '../model';\nimport { MaliciousIpCard } from '../model';\nimport { Event } from '../model';\n\n// UsrEventsEndPoint events related actions for the operator \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrEventsService {\n\n // URL to web api\n private baseUrl = '/events';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Get a single event by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Event>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find events by query\n */\n find(streamId?: string, deviceId?: string, alertId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (alertId != null) { params.push(`alertId=${alertId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Device>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Export events by query to a file in a stream of CSV | JSON | XML | XLSX\n */\n export(format?: string, streamId?: string, deviceId?: string, alertId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (alertId != null) { params.push(`alertId=${alertId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.download(`usr-events`,`${this.baseUrl}/export/${format}`, ...params);\n }\n\n /**\n * Export event source file as a stream of source file (pcap)\n */\n exportSource(id?: string) {\n return this.rest.download(`usr-events`,`${this.baseUrl}/${id}/export_source`);\n }\n\n /**\n * Get top 10 events by their severity and time\n */\n findTop(streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntityResponse<EventWithDevice>>(`${this.baseUrl}/top`, ...params);\n }\n\n /**\n * Get top 10 events by their severity and time\n */\n findTopMaliciousIPs(streamId?: string, top?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (top != null) { params.push(`top=${top}`); }\n\n\t\treturn this.rest.get<EntityResponse<MaliciousIPData>>(`${this.baseUrl}/top-malicious-ips`, ...params);\n }\n\n /**\n * Get events distribution by type filtered by query\n */\n countByType(streamId?: string, deviceId?: string, alertId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (alertId != null) { params.push(`alertId=${alertId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-type`, ...params);\n }\n\n /**\n * Get events distribution by status filtered by query\n */\n countByStatus(streamId?: string, deviceId?: string, alertId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (alertId != null) { params.push(`alertId=${alertId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-status`, ...params);\n }\n\n /**\n * Get events distribution by severity filtered by query\n */\n countBySeverity(streamId?: string, deviceId?: string, alertId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (alertId != null) { params.push(`alertId=${alertId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-severity`, ...params);\n }\n\n /**\n * Get events distribution by rule filtered by query\n */\n countByRule(streamId?: string, deviceId?: string, alertId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (alertId != null) { params.push(`alertId=${alertId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-rule`, ...params);\n }\n\n /**\n * Get events distribution by category filtered by query\n */\n countByCategory(streamId?: string, deviceId?: string, alertId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (alertId != null) { params.push(`alertId=${alertId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-category`, ...params);\n }\n\n /**\n * Get current shield as ActionResponse, the Key contains the shield index and the data includes the trend\n */\n getShieldex() {\n return this.rest.get<ActionResponse>(`${this.baseUrl}/shieldex`);\n }\n\n /**\n * Get events histogram over the provided time period\n */\n eventsTimeline(streamId?: string, deviceId?: string, alertId?: string, dimension?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (alertId != null) { params.push(`alertId=${alertId}`); }\n if (dimension != null) { params.push(`dimension=${dimension}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<TimeSeries<Tuple<number, number>[]>>>(`${this.baseUrl}/timeline`, ...params);\n }\n\n /**\n * Get shieldex histogram over the provided time period\n */\n shieldexTimeline(streamId?: string) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n\n\t\treturn this.rest.get<EntityResponse<TimeSeries<number>>>(`${this.baseUrl}/shieldex/timeline`, ...params);\n }\n\n /**\n * Get devices at risk number for specific events criteria\n */\n getDevicesAtRisk(streamId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<ActionResponse>(`${this.baseUrl}/devices-at-risk`, ...params);\n }\n\n /**\n * Get malicious IP data card for specific malicious IP\n */\n getMaliciousIpCard(streamId?: string, targetIp?: string, from?: number, to?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (targetIp != null) { params.push(`targetIp=${targetIp}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n\n\t\treturn this.rest.get<EntityResponse<MaliciousIpCard>>(`${this.baseUrl}/malicious-ip-card`, ...params);\n }\n\n /**\n * Apply DNS lookup for each IP in the list\n */\n getIpLookup(ip?: string) {\n const params = [];\n if (ip != null) { params.push(`ip=${ip}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<SimpleEntity<Tuple<string, string>>>>(`${this.baseUrl}/ip-lookup`, ...params);\n }\n\n /**\n * Find events by query\n */\n findByInsightContext(streamId?: string, insightId?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (insightId != null) { params.push(`insightId=${insightId}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Device>>(`${this.baseUrl}/find-by-insight-context`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { Insight } from '../model';\nimport { InsightTypeCode } from '../model';\nimport { SeverityTypeCode } from '../model';\nimport { EntityResponse } from '../model';\nimport { Distribution } from '../model';\n\n// UsrInsightsEndPoint is a list of insights related actions \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrInsightsService {\n\n // URL to web api\n private baseUrl = '/insights';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Find daily insights\n */\n getDailyInsights(dayId?: number) {\n const params = [];\n if (dayId != null) { params.push(`dayId=${dayId}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Insight>>(`${this.baseUrl}/daily`, ...params);\n }\n\n /**\n * Find insights by query\n */\n find(streamId?: string, search?: string, from?: number, to?: number, sort?: string, page?: number, size?: number, type?: InsightTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Insight>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Get a single insight by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Insight>>(`${this.baseUrl}/insights/${id}`);\n }\n\n /**\n * Get alerts distribution by severity filtered by query\n */\n countAlertsBySeverity(streamId?: string, search?: string, from?: number, to?: number, type?: InsightTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/v1/insights/count-alerts/by-severity`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { TimeSeries } from '../model';\nimport { EntityResponse } from '../model';\nimport { Checkpoint } from '../model';\n\n// SysCheckpointsEndPoint is a list of checkpoint queries for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysCheckpointsService {\n\n // URL to web api\n private baseUrl = '/sys/checkpoints';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Get a single checkpoint\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Checkpoint>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find checkpoints by query\n */\n find(from?: number, to?: number, accountId?: string, streamId?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Checkpoint>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Get checkpoints count overtime\n */\n timeline(from?: number, to?: number, accountId?: string, streamId?: string, field?: string, timeField?: string) {\n const params = [];\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (field != null) { params.push(`field=${field}`); }\n if (timeField != null) { params.push(`timeField=${timeField}`); }\n\n\t\treturn this.rest.get<EntityResponse<TimeSeries<number>>>(`${this.baseUrl}/timeline`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { ConfigParam } from '../model';\nimport { EntityResponse } from '../model';\nimport { ConfigParams } from '../model';\nimport { ActionResponse } from '../model';\nimport { EntitiesResponse } from '../model';\n\n// SysConfigEndPoint is a list of groups related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysConfigService {\n\n // URL to web api\n private baseUrl = '/sys/config';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new configuration parameter\n */\n create(body?: ConfigParam) {\n return this.rest.put<EntityResponse<ConfigParam>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing configuration parameter\n */\n update(body?: ConfigParam) {\n return this.rest.patch<EntityResponse<ConfigParam>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update group of configuration parameters in a batch\n */\n updateGroup(body?: ConfigParams) {\n return this.rest.patch<EntityResponse<ConfigParam>>(`${this.baseUrl}/update-group`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete configuration parameter\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single configuration parameter\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<ConfigParam>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find configuration parameters by query\n */\n keys(search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<ConfigParam>>(`${this.baseUrl}/keys`, ...params);\n }\n\n /**\n * Find configuration parameters by query\n */\n find(search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<ConfigParam>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Test email template by configId\n */\n testEmailTemplate(configId?: string, addresses?: string[]) {\n const params = [];\n if (configId != null) { params.push(`configId=${configId}`); }\n if (addresses != null) { params.push(`addresses=${addresses}`); }\n\n\t\treturn this.rest.get<ActionResponse>(`${this.baseUrl}/test-email-template`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { Feature } from '../model';\nimport { FeaturesGroup } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\n\n// SysFeaturesEndPoint is a list of features related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysFeaturesService {\n\n // URL to web api\n private baseUrl = '/sys/features';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Find features by query\n */\n findFeature(search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Feature>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Create new features group\n */\n createGroup(body?: FeaturesGroup) {\n return this.rest.put<EntityResponse<FeaturesGroup>>(`${this.baseUrl}/groups`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing features group\n */\n updateGroup(body?: FeaturesGroup) {\n return this.rest.patch<EntityResponse<FeaturesGroup>>(`${this.baseUrl}/groups`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete features group\n */\n deleteGroup(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/groups/${id}`);\n }\n\n /**\n * Get a single features group by id\n */\n getGroup(id?: string) {\n return this.rest.get<EntityResponse<Feature>>(`${this.baseUrl}/groups/${id}`);\n }\n\n /**\n * Find features groups by query\n */\n findGroup(search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Feature>>(`${this.baseUrl}/groups`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { Rule } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { EntitiesResponse } from '../model';\n\n// SysIdsRulesEndPoint is a list of rules related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysIdsRulesService {\n\n // URL to web api\n private baseUrl = '/sys/ids-rules';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * region Endpoint REST handlers ---------------------------------------------------------------------------------------\n * Create new rule configuration\n */\n create(body?: Rule) {\n return this.rest.post<EntityResponse<Rule>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing rule configuration\n */\n update(body?: Rule) {\n return this.rest.put<EntityResponse<Rule>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete rule configuration\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single rule by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Rule>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find rules by query\n */\n find(accountId?: string, streamId?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Rule>>(`${this.baseUrl}`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { InsightQuery } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { InsightSpec } from '../model';\n\n// SysInsightsEndPoint is a list of insights related actions for system administrator \n@Injectable({\n providedIn: 'root'\n})\nexport class SysInsightsService {\n\n // URL to web api\n private baseUrl = '/sys/insights';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new Insight Query configuration\n */\n createQuery(body?: InsightQuery) {\n return this.rest.put<EntityResponse<InsightQuery>>(`${this.baseUrl}/query`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing Insight Query configuration\n */\n updateQuery(body?: InsightQuery) {\n return this.rest.patch<EntityResponse<InsightQuery>>(`${this.baseUrl}/query`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete Insight Query configuration\n */\n deleteQuery(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/query/${id}`);\n }\n\n /**\n * Get a single Insight Query by id\n */\n getQuery(id?: string) {\n return this.rest.get<EntityResponse<InsightQuery>>(`${this.baseUrl}/query/${id}`);\n }\n\n /**\n * Find Insight Queries by query\n */\n findQueries(search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<InsightQuery>>(`${this.baseUrl}/query`, ...params);\n }\n\n /**\n * Create new Insight Spec configuration\n */\n createSpec(body?: InsightSpec) {\n return this.rest.put<EntityResponse<InsightSpec>>(`${this.baseUrl}/spec`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing Insight Spec configuration\n */\n updateSpec(body?: InsightSpec) {\n return this.rest.patch<EntityResponse<InsightSpec>>(`${this.baseUrl}/spec`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete Insight Spec configuration\n */\n deleteSpec(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/spec/${id}`);\n }\n\n /**\n * Get a single Insight Spec by id\n */\n getSpec(id?: string) {\n return this.rest.get<EntityResponse<InsightSpec>>(`${this.baseUrl}/spec/${id}`);\n }\n\n /**\n * Find Insight Specs by query\n */\n findSpecs(accountId?: string, streamId?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<InsightSpec>>(`${this.baseUrl}/spec`, ...params);\n }\n\n /**\n * Find Insight Specs by query but returns list of InsightQuery\n */\n findSpecsQueries(accountId?: string, streamId?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<InsightQuery>>(`${this.baseUrl}/spec-queries`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { Integration } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { EntitiesResponse } from '../model';\n\n// UsrIntegrationsEndPoint is a list of integration related actions \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrIntegrationsService {\n\n // URL to web api\n private baseUrl = '/integrations';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * region Endpoint REST handlers ---------------------------------------------------------------------------------------\n * Create new integration configuration\n */\n create(body?: Integration) {\n return this.rest.put<EntityResponse<Integration>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing integration configuration\n */\n update(body?: Integration) {\n return this.rest.patch<EntityResponse<Integration>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete integration configuration\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single Integration by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Integration>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find integrations by query\n */\n find(accountId?: string, streamId?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Integration>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Validate format of the templates in the fields\n */\n validate(body?: Integration) {\n return this.rest.post<EntityResponse<Integration>>(`${this.baseUrl}/validate`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Test the integration with pseudo data\n */\n test(body?: Integration) {\n return this.rest.post<EntityResponse<Integration>>(`${this.baseUrl}/test`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { ReportInstance } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { ReportSourceCode } from '../model';\n\n// UsrReportsInstanceEndPoint is a list of system reports related actions \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrReportsInstanceService {\n\n // URL to web api\n private baseUrl = '/reports-instance';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Update existing report\n */\n update(body?: ReportInstance) {\n return this.rest.patch<EntityResponse<ReportInstance>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete report\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single report by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<ReportInstance>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find reports by query\n */\n find(accountId?: string, search?: string, sort?: string, page?: number, size?: number, from?: number, to?: number, reportTriggerSource?: ReportSourceCode) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (reportTriggerSource != null) { params.push(`reportTriggerSource=${reportTriggerSource}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<ReportInstance>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Download report file as stream of PDF\n */\n downloadReport(id?: string) {\n return this.rest.download(`usr-reports-instance`,`${this.baseUrl}/${id}/download-report`);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { Rule } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { TimeSeries } from '../model';\nimport { RuleWithSQL } from '../model';\n\n// SysRulesEndPoint is a list of rules related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysRulesService {\n\n // URL to web api\n private baseUrl = '/sys/rules';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * region Endpoint REST handlers ---------------------------------------------------------------------------------------\n * Create new rule configuration\n */\n create(body?: Rule) {\n return this.rest.post<EntityResponse<Rule>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing rule configuration\n */\n update(body?: Rule) {\n return this.rest.put<EntityResponse<Rule>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete rule configuration\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single rule by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Rule>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find rules by query\n */\n find(accountId?: string, streamId?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Rule>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Analyze rule configuration against historic data\n */\n analyze(from?: number, to?: number, interval?: number, size?: number, body?: Rule) {\n const params = [];\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (interval != null) { params.push(`interval=${interval}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.post<EntityResponse<TimeSeries<number>>>(`${this.baseUrl}/analyze`, typeof body === 'object' ? JSON.stringify(body) : body, ...params);\n }\n\n /**\n * Get a single rule with computed SQL statement by rule's id\n */\n getWithSQL(id?: string) {\n return this.rest.get<EntityResponse<RuleWithSQL>>(`${this.baseUrl}/sql/${id}`);\n }\n\n /**\n * Get all active rules from stream id with computed SQL statement\n */\n getWithSQLByStreamId(streamId?: string) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<RuleWithSQL>>(`${this.baseUrl}/sql`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntityResponse } from '../model';\nimport { Distribution } from '../model';\n\n// SysStatisticsEndPoint is a list of statistics for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysStatisticsService {\n\n // URL to web api\n private baseUrl = '/sys/statistics';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Get accounts statistics\n */\n getAccountsCount(field?: string) {\n return this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/accounts/${field}`);\n }\n\n /**\n * Get accounts statistics\n */\n getStreamsCount(field?: string) {\n return this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/streams/${field}`);\n }\n\n /**\n * Get accounts statistics\n */\n getDevicesCount(field?: string) {\n return this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/devices/${field}`);\n }\n\n /**\n * Get accounts statistics\n */\n getUsersCount(field?: string) {\n return this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/users/${field}`);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntityResponse } from '../model';\nimport { SeverityTypeCode } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { Distribution } from '../model';\nimport { TimeSeries } from '../model';\nimport { DeviceActionCode } from '../model';\nimport { Alert } from '../model';\nimport { EventTypeCode } from '../model';\nimport { EventStatusCode } from '../model';\nimport { AlertWithDevice } from '../model';\nimport { StringIntValue } from '../model';\nimport { Tuple } from '../model';\nimport { MaliciousIpCard } from '../model';\nimport { StringKeyValue } from '../model';\n\n// UsrAlertsEndPoint alerts related actions for the operator \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrAlertsService {\n\n // URL to web api\n private baseUrl = '/alerts';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Get a single alert by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Alert>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find alerts by query\n */\n find(streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Alert>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Export alerts by query to a file\n */\n export(format?: string, streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.download(`usr-alerts`,`${this.baseUrl}/export/${format}`, ...params);\n }\n\n /**\n * Export alerts source file as stream of source file (pcap)\n */\n exportSource(id?: string) {\n return this.rest.download(`usr-alerts`,`${this.baseUrl}/${id}/export_source`);\n }\n\n /**\n * Apply status on alert\n */\n setStatus(id?: string, status?: EventStatusCode) {\n return this.rest.post<ActionResponse>(`${this.baseUrl}/${id}/status/${status}`, '');\n }\n\n /**\n * Get top 10 alerts by their severity and time\n */\n findTop(streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntityResponse<AlertWithDevice>>(`${this.baseUrl}/top`, ...params);\n }\n\n /**\n * Get top 10 alerts by their severity and time\n */\n findTopMaliciousIPs(streamId?: string, top?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (top != null) { params.push(`top=${top}`); }\n\n\t\treturn this.rest.get<EntityResponse<StringIntValue>>(`${this.baseUrl}/top-malicious-ips`, ...params);\n }\n\n /**\n * Get alerts distribution by type filtered by query\n */\n countByType(streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-type`, ...params);\n }\n\n /**\n * Get alerts distribution by status filtered by query\n */\n countByStatus(streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-status`, ...params);\n }\n\n /**\n * Get alerts distribution by severity filtered by query\n */\n countBySeverity(streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-severity`, ...params);\n }\n\n /**\n * Get alerts distribution by rule filtered by query\n */\n countByRule(streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-rule`, ...params);\n }\n\n /**\n * Get alerts distribution by category filtered by query\n */\n countByCategory(streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-category`, ...params);\n }\n\n /**\n * Get current shield as ActionResponse, the Key contains the shield index and the data includes the trend\n */\n getShieldex() {\n return this.rest.get<ActionResponse>(`${this.baseUrl}/shieldex`);\n }\n\n /**\n * Get alerts histogram over the provided time period\n */\n alertsTimeline(streamId?: string, deviceId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<EntityResponse<TimeSeries<Tuple<number, number>[]>>>(`${this.baseUrl}/timeline`, ...params);\n }\n\n /**\n * Get shieldex histogram over the provided time period\n */\n shieldexTimeline(streamId?: string) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n\n\t\treturn this.rest.get<EntityResponse<TimeSeries<number>>>(`${this.baseUrl}/shieldex/timeline`, ...params);\n }\n\n /**\n * Get devices at risk number for specific alerts criteria and return the number of devices at risk for specific alerts criteria\n */\n getDevicesAtRisk(streamId?: string, search?: string, from?: number, to?: number, type?: EventTypeCode[], severity?: SeverityTypeCode[]) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (type != null) { params.push(`type=${type}`); }\n if (severity != null) { params.push(`severity=${severity}`); }\n\n\t\treturn this.rest.get<ActionResponse>(`${this.baseUrl}/devices-at-risk`, ...params);\n }\n\n /**\n * Get malicious IP data card for specific malicious IP\n */\n getMaliciousIpCard(streamId?: string, targetIp?: string, from?: number, to?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (targetIp != null) { params.push(`targetIp=${targetIp}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n\n\t\treturn this.rest.get<EntityResponse<MaliciousIpCard>>(`${this.baseUrl}/malicious-ip-card`, ...params);\n }\n\n /**\n * Apply DNS lookup for each IP in the list\n */\n getIpLookup(ip?: string) {\n const params = [];\n if (ip != null) { params.push(`ip=${ip}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<StringKeyValue>>(`${this.baseUrl}/ip-lookup`, ...params);\n }\n\n /**\n * Add tag to an alerts\n */\n addTag(id?: string, tag?: string) {\n return this.rest.post<EntityResponse<Alert>>(`${this.baseUrl}/${id}/tags/${tag}`, '');\n }\n\n /**\n * Delete tag from an alert\n */\n deleteTag(id?: string, tag?: string) {\n return this.rest.delete<EntityResponse<Alert>>(`${this.baseUrl}/${id}/tags/${tag}`);\n }\n\n /**\n * Apply action on alert\n */\n applyAction(id?: string, action?: DeviceActionCode) {\n return this.rest.post<ActionResponse>(`${this.baseUrl}/${id}/actions/${action}`, '');\n }\n\n /**\n * Find alerts by query\n */\n findByInsightContext(streamId?: string, insightId?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (insightId != null) { params.push(`insightId=${insightId}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Alert>>(`${this.baseUrl}/find-by-insight-context`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { Member } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { MemberRoleCode } from '../model';\n\n// UsrMembersEndPoint is a list of members related actions for account administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrMembersService {\n\n // URL to web api\n private baseUrl = '/members';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new account member\n */\n create(body?: Member) {\n return this.rest.put<EntityResponse<Member>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing member\n */\n update(body?: Member) {\n return this.rest.patch<EntityResponse<Member>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete member\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single member by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Member>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find members by query\n */\n find(userId?: string, role?: MemberRoleCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (userId != null) { params.push(`userId=${userId}`); }\n if (role != null) { params.push(`role=${role}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Member>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Find registered emails in the system (for auto complete)\n */\n findEmails(search?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Member>>(`${this.baseUrl}/emails`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { Distribution } from '../model';\nimport { FlowRecord } from '../model';\nimport { BoolTypeCode } from '../model';\nimport { NetworkTopologyRecord } from '../model';\nimport { SessionRecord } from '../model';\nimport { EntityResponse } from '../model';\nimport { NetworkTopologyReport } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { UsageRecord } from '../model';\n\n// UsrNetworkEndPoint network statistics related actions for the operator \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrNetworkService {\n\n // URL to web api\n private baseUrl = '/network';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Find usage entities by query\n */\n findUsage(streamId?: string, deviceId?: string, simId?: string, from?: number, to?: number, include?: number, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (simId != null) { params.push(`simId=${simId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (include != null) { params.push(`include=${include}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<UsageRecord>>(`${this.baseUrl}/usage`, ...params);\n }\n\n /**\n * Find session entities by query\n */\n findSession(streamId?: string, deviceId?: string, simId?: string, from?: number, to?: number, include?: number, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (simId != null) { params.push(`simId=${simId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (include != null) { params.push(`include=${include}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<SessionRecord>>(`${this.baseUrl}/session`, ...params);\n }\n\n /**\n * Find most common ports by query\n */\n getMostCommonPorts(streamId?: string, deviceId?: string, from?: number, to?: number, limit?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (limit != null) { params.push(`limit=${limit}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Distribution<number>>>(`${this.baseUrl}/most-common-ports`, ...params);\n }\n\n /**\n * Find most common IPs by query\n */\n getMostCommonIPs(streamId?: string, deviceId?: string, from?: number, to?: number, limit?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (limit != null) { params.push(`limit=${limit}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Distribution<string>>>(`${this.baseUrl}/most-common-ips`, ...params);\n }\n\n /**\n * Find flow data records\n */\n findTraffic(streamId?: string, deviceId?: string, simId?: string, from?: number, to?: number, include?: number, sort?: string, page?: number, size?: number, search?: string) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (deviceId != null) { params.push(`deviceId=${deviceId}`); }\n if (simId != null) { params.push(`simId=${simId}`); }\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (include != null) { params.push(`include=${include}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n if (search != null) { params.push(`search=${search}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<FlowRecord>>(`${this.baseUrl}/traffic`, ...params);\n }\n\n /**\n * Get network topology report with KPIs and distributions for stream (without endpoint records)\n * Use /topology-records endpoint for paginated endpoint records\n */\n getTopologyReport(streamId?: string, dstIp?: string[], dstDns?: string[], dstPort?: number[], protocol?: string[], appProtocol?: string[], name?: string[], country?: string[], malicious?: BoolTypeCode, blocked?: BoolTypeCode) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (dstIp != null) { params.push(`dstIp=${dstIp}`); }\n if (dstDns != null) { params.push(`dstDns=${dstDns}`); }\n if (dstPort != null) { params.push(`dstPort=${dstPort}`); }\n if (protocol != null) { params.push(`protocol=${protocol}`); }\n if (appProtocol != null) { params.push(`appProtocol=${appProtocol}`); }\n if (name != null) { params.push(`name=${name}`); }\n if (country != null) { params.push(`country=${country}`); }\n if (malicious != null) { params.push(`malicious=${malicious}`); }\n if (blocked != null) { params.push(`blocked=${blocked}`); }\n\n\t\treturn this.rest.get<EntityResponse<NetworkTopologyReport>>(`${this.baseUrl}/topology-report`, ...params);\n }\n\n /**\n * Get network topology records for stream\n */\n getTopologyRecords(streamId?: string, dstIp?: string[], dstDns?: string[], dstPort?: number[], protocol?: string[], appProtocol?: string[], name?: string[], country?: string[], malicious?: BoolTypeCode, blocked?: BoolTypeCode, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (dstIp != null) { params.push(`dstIp=${dstIp}`); }\n if (dstDns != null) { params.push(`dstDns=${dstDns}`); }\n if (dstPort != null) { params.push(`dstPort=${dstPort}`); }\n if (protocol != null) { params.push(`protocol=${protocol}`); }\n if (appProtocol != null) { params.push(`appProtocol=${appProtocol}`); }\n if (name != null) { params.push(`name=${name}`); }\n if (country != null) { params.push(`country=${country}`); }\n if (malicious != null) { params.push(`malicious=${malicious}`); }\n if (blocked != null) { params.push(`blocked=${blocked}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<NetworkTopologyRecord>>(`${this.baseUrl}/topology-records`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntityResponse } from '../model';\nimport { NotificationMessageDTO } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { ActionResponse } from '../model';\n\n// UsrNotificationMessagesEndPoint notification messages related actions for the user \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrNotificationMessagesService {\n\n // URL to web api\n private baseUrl = '/notification-messages';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Get a single notification message by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<NotificationMessageDTO>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find notification messages for the current user\n */\n find(isRead?: boolean, sort?: string, page?: number, size?: number) {\n const params = [];\n if (isRead != null) { params.push(`isRead=${isRead}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<NotificationMessageDTO>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Mark a specific notification as read\n */\n markAsRead(id?: string) {\n return this.rest.patch<ActionResponse>(`${this.baseUrl}/${id}/read`, '');\n }\n\n /**\n * Mark all notifications as read for the current user\n */\n markAllAsRead() {\n return this.rest.patch<ActionResponse>(`${this.baseUrl}/mark-all-read`, '');\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { SeverityTypeCode } from '../model';\nimport { RuleActivityStatusCode } from '../model';\nimport { TimeSeries } from '../model';\nimport { Distribution } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { EventTypeCode } from '../model';\nimport { Rule } from '../model';\nimport { RuleWithSQL } from '../model';\n\n// UsrRulesEndPoint is a list of rules related actions \n@Injectable({\n providedIn: 'root'\n})\nexport class UsrRulesService {\n\n // URL to web api\n private baseUrl = '/rules';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * region Endpoint REST handlers ---------------------------------------------------------------------------------------\n * Create new rule configuration\n */\n create(body?: Rule) {\n return this.rest.put<EntityResponse<Rule>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing rule configuration\n */\n update(body?: Rule) {\n return this.rest.patch<EntityResponse<Rule>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete rule configuration\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single rule by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Rule>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single rule with computed SQL statement by rule's id\n */\n getWithSQL(id?: string) {\n return this.rest.get<EntityResponse<RuleWithSQL>>(`${this.baseUrl}/sql/${id}`);\n }\n\n /**\n * Get a all active rules fro stream id with computed SQL statement\n */\n getWithSQLByStreamId(id?: string) {\n return this.rest.get<EntitiesResponse<RuleWithSQL>>(`${this.baseUrl}/sql`);\n }\n\n /**\n * Find rules by query\n */\n find(streamId?: string, search?: string, eventSeverity?: SeverityTypeCode[], activityStatus?: RuleActivityStatusCode[], eventType?: EventTypeCode[], includeSysRules?: boolean, sort?: string, page?: number, size?: number) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (eventSeverity != null) { params.push(`eventSeverity=${eventSeverity}`); }\n if (activityStatus != null) { params.push(`activityStatus=${activityStatus}`); }\n if (eventType != null) { params.push(`eventType=${eventType}`); }\n if (includeSysRules != null) { params.push(`includeSysRules=${includeSysRules}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Rule>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Analyze rule configuration against historic data\n */\n analyze(from?: number, to?: number, interval?: number, size?: number, body?: Rule) {\n const params = [];\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (interval != null) { params.push(`interval=${interval}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.post<EntityResponse<TimeSeries<number>>>(`${this.baseUrl}/analyze`, typeof body === 'object' ? JSON.stringify(body) : body, ...params);\n }\n\n /**\n * Get rules distribution by severity filtered by query\n */\n countBySeverity(streamId?: string, search?: string, eventSeverity?: SeverityTypeCode[], activityStatus?: RuleActivityStatusCode[], eventType?: EventTypeCode[], includeSysRules?: boolean) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (eventSeverity != null) { params.push(`eventSeverity=${eventSeverity}`); }\n if (activityStatus != null) { params.push(`activityStatus=${activityStatus}`); }\n if (eventType != null) { params.push(`eventType=${eventType}`); }\n if (includeSysRules != null) { params.push(`includeSysRules=${includeSysRules}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count/by-severity`, ...params);\n }\n\n /**\n * Get alerts count by rule filtered by query\n */\n countAlertsByRule(streamId?: string, search?: string, eventSeverity?: SeverityTypeCode[], activityStatus?: RuleActivityStatusCode[], eventType?: EventTypeCode[], includeSysRules?: boolean) {\n const params = [];\n if (streamId != null) { params.push(`streamId=${streamId}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (eventSeverity != null) { params.push(`eventSeverity=${eventSeverity}`); }\n if (activityStatus != null) { params.push(`activityStatus=${activityStatus}`); }\n if (eventType != null) { params.push(`eventType=${eventType}`); }\n if (includeSysRules != null) { params.push(`includeSysRules=${includeSysRules}`); }\n\n\t\treturn this.rest.get<EntityResponse<Distribution<number>>>(`${this.baseUrl}/count-alerts/by-rule-id`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { TimeSeries } from '../model';\nimport { EntityResponse } from '../model';\nimport { AuditLog } from '../model';\n\n// SysAuditLogEndPoint is a list of audit log queries for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysAuditLogService {\n\n // URL to web api\n private baseUrl = '/sys/audit-log';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Get a single log entry\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<AuditLog>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find log entries by query\n */\n find(from?: number, to?: number, accountId?: string, userId?: string, action?: string, itemType?: string, itemId?: string, itemName?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (userId != null) { params.push(`userId=${userId}`); }\n if (action != null) { params.push(`action=${action}`); }\n if (itemType != null) { params.push(`itemType=${itemType}`); }\n if (itemId != null) { params.push(`itemId=${itemId}`); }\n if (itemName != null) { params.push(`itemName=${itemName}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<AuditLog>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Get histogram of audit log entries over time\n */\n timeline(from?: number, to?: number, accountId?: string, userId?: string, action?: string, itemType?: string, itemId?: string, itemName?: string, search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (from != null) { params.push(`from=${from}`); }\n if (to != null) { params.push(`to=${to}`); }\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (userId != null) { params.push(`userId=${userId}`); }\n if (action != null) { params.push(`action=${action}`); }\n if (itemType != null) { params.push(`itemType=${itemType}`); }\n if (itemId != null) { params.push(`itemId=${itemId}`); }\n if (itemName != null) { params.push(`itemName=${itemName}`); }\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntityResponse<TimeSeries<number>>>(`${this.baseUrl}/timeline`, ...params);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { Group } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { EntitiesResponse } from '../model';\nimport { User } from '../model';\n\n// SysGroupsEndPoint is a list of groups related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysGroupsService {\n\n // URL to web api\n private baseUrl = '/sys/groups';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new group\n */\n create(body?: Group) {\n return this.rest.put<EntityResponse<Group>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing group\n */\n update(body?: Group) {\n return this.rest.patch<EntityResponse<Group>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete group and remove all its memberships\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single group by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Group>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find groups by query\n */\n find(search?: string, sort?: string, page?: number, size?: number) {\n const params = [];\n if (search != null) { params.push(`search=${search}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Group>>(`${this.baseUrl}`, ...params);\n }\n\n /**\n * Get list of all users in the group\n */\n getUsers(id?: string) {\n return this.rest.get<EntitiesResponse<User>>(`${this.baseUrl}/${id}/users`);\n }\n\n /**\n * Add user to the group\n */\n addUser(id?: string, userId?: string) {\n return this.rest.put<ActionResponse>(`${this.baseUrl}/${id}/users/${userId}`, '');\n }\n\n /**\n * Remove user from the group\n */\n removeUser(id?: string, userId?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}/users/${userId}`);\n }\n\n}\n","\nimport { Injectable, Inject } from '@angular/core';\nimport { RestUtils } from '../../rest-utils';\nimport { APP_CONFIG, AppConfig } from '../../config';\n\nimport { EntitiesResponse } from '../model';\nimport { Member } from '../model';\nimport { EntityResponse } from '../model';\nimport { ActionResponse } from '../model';\nimport { MemberRoleCode } from '../model';\n\n// SysMembersEndPoint is a list of members related actions for system administrator only \n@Injectable({\n providedIn: 'root'\n})\nexport class SysMembersService {\n\n // URL to web api\n private baseUrl = '/sys/members';\n\n // Class constructor\n constructor(@Inject(APP_CONFIG) private config: AppConfig, private rest: RestUtils) {\n this.baseUrl = this.config.api + this.baseUrl;\n }\n\n /**\n * Create new account member\n */\n create(body?: Member) {\n return this.rest.put<EntityResponse<Member>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Update existing member\n */\n update(body?: Member) {\n return this.rest.patch<EntityResponse<Member>>(`${this.baseUrl}`, typeof body === 'object' ? JSON.stringify(body) : body);\n }\n\n /**\n * Delete member\n */\n delete(id?: string) {\n return this.rest.delete<ActionResponse>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Get a single member by id\n */\n get(id?: string) {\n return this.rest.get<EntityResponse<Member>>(`${this.baseUrl}/${id}`);\n }\n\n /**\n * Find members by query\n */\n find(accountId?: string, userId?: string, role?: MemberRoleCode[], sort?: string, page?: number, size?: number) {\n const params = [];\n if (accountId != null) { params.push(`accountId=${accountId}`); }\n if (userId != null) { params.push(`userId=${userId}`); }\n if (role != null) { params.push(`role=${role}`); }\n if (sort != null) { params.push(`sort=${sort}`); }\n if (page != null) { params.push(`page=${page}`); }\n if (size != null) { params.push(`size=${size}`); }\n\n\t\treturn this.rest.get<EntitiesResponse<Member>>(`${this.baseUrl}`, ...params);\n }\n\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { provideHttpClient } from '@angular/common/http';\nimport { APP_CONFIG, AppConfig } from './config';\n\n@NgModule({\n imports: [CommonModule]\n})\nexport class NgxPulseiotLibModule {\n static forRoot(config: AppConfig): ModuleWithProviders<NgxPulseiotLibModule> {\n return {\n ngModule: NgxPulseiotLibModule,\n providers: [\n provideHttpClient(),\n { provide: APP_CONFIG, useValue: config }\n ]\n };\n }\n}\n\n","/*\n * Public API Surface of ngx-pulseiot-lib\n */\n\nexport * from './lib/model';\nexport * from './lib/services';\nexport * from './config';\nexport * from './ngx-pulseiot-lib.module'","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.RestUtils"],"mappings":"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"}