@cccsaurora/howler-ui 2.17.0-dev.564 → 2.17.0-dev.617

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 (170) hide show
  1. package/api/index.d.ts +2 -0
  2. package/api/index.js +4 -2
  3. package/api/search/case.d.ts +4 -0
  4. package/api/search/case.js +8 -0
  5. package/api/search/index.d.ts +2 -1
  6. package/api/search/index.js +2 -1
  7. package/api/v2/case/index.d.ts +6 -0
  8. package/api/v2/case/index.js +18 -0
  9. package/api/v2/index.d.ts +4 -0
  10. package/api/v2/index.js +6 -0
  11. package/api/v2/search/facet.d.ts +3 -0
  12. package/api/v2/search/facet.js +12 -0
  13. package/api/v2/search/index.d.ts +5 -0
  14. package/api/v2/search/index.js +24 -0
  15. package/commons/components/leftnav/LeftNavDrawer.js +1 -1
  16. package/components/app/App.js +14 -0
  17. package/components/app/providers/FavouritesProvider.js +2 -2
  18. package/components/app/providers/HitSearchProvider.d.ts +0 -1
  19. package/components/app/providers/HitSearchProvider.js +6 -11
  20. package/components/app/providers/HitSearchProvider.test.js +11 -32
  21. package/components/app/providers/ParameterProvider.d.ts +9 -2
  22. package/components/app/providers/ParameterProvider.js +165 -240
  23. package/components/app/providers/ParameterProvider.test.js +307 -14
  24. package/components/{routes/overviews/OverviewEditor.js → elements/MarkdownEditor.js} +3 -3
  25. package/components/elements/ObjectDetails.d.ts +6 -0
  26. package/components/elements/{hit/HitDetails.js → ObjectDetails.js} +17 -17
  27. package/components/elements/PluginTypography.d.ts +2 -1
  28. package/components/elements/PluginTypography.js +3 -2
  29. package/components/elements/UserList.d.ts +5 -2
  30. package/components/elements/UserList.js +14 -5
  31. package/components/elements/addons/search/phrase/Phrase.js +1 -1
  32. package/components/elements/case/CaseCard.d.ts +8 -0
  33. package/components/elements/case/CaseCard.js +39 -0
  34. package/components/elements/case/CasePreview.d.ts +6 -0
  35. package/components/elements/case/CasePreview.js +17 -0
  36. package/components/elements/case/StatusIcon.d.ts +5 -0
  37. package/components/elements/case/StatusIcon.js +13 -0
  38. package/components/elements/display/ChipPopper.d.ts +1 -0
  39. package/components/elements/display/ChipPopper.js +2 -2
  40. package/components/elements/display/HowlerCard.js +1 -1
  41. package/components/elements/display/Modal.js +1 -0
  42. package/components/elements/hit/HitBanner.js +28 -48
  43. package/components/elements/hit/HitCard.js +1 -1
  44. package/components/elements/hit/{HitQuickSearch.d.ts → HitPreview.d.ts} +3 -3
  45. package/components/elements/hit/{HitQuickSearch.js → HitPreview.js} +10 -4
  46. package/components/elements/hit/HitRelated.d.ts +1 -1
  47. package/components/elements/hit/HitRelated.js +30 -3
  48. package/components/elements/hit/elements/AnalyticLink.d.ts +8 -0
  49. package/components/elements/hit/elements/AnalyticLink.js +22 -0
  50. package/components/elements/hit/outlines/DefaultOutline.js +1 -1
  51. package/components/elements/hit/related/RelatedRecords.js +63 -0
  52. package/components/elements/observable/ObservableCard.d.ts +5 -0
  53. package/components/elements/observable/ObservableCard.js +7 -0
  54. package/components/elements/observable/ObservablePreview.d.ts +6 -0
  55. package/components/elements/observable/ObservablePreview.js +12 -0
  56. package/components/elements/view/ViewTitle.js +1 -1
  57. package/components/hooks/useHitActions.d.ts +1 -1
  58. package/components/hooks/useHitActions.js +2 -2
  59. package/components/hooks/useHitSelection.js +3 -24
  60. package/components/hooks/useMyPreferences.js +10 -1
  61. package/components/hooks/useMySearch.js +2 -2
  62. package/components/hooks/useMySitemap.js +4 -1
  63. package/components/hooks/useMyTheme.js +9 -2
  64. package/components/hooks/useRelatedRecords.d.ts +13 -0
  65. package/components/hooks/useRelatedRecords.js +32 -0
  66. package/components/routes/action/view/ActionSearch.js +1 -1
  67. package/components/routes/advanced/QueryBuilder.js +1 -1
  68. package/components/routes/analytics/AnalyticDetails.js +2 -2
  69. package/components/routes/analytics/AnalyticSearch.js +1 -1
  70. package/components/routes/cases/CaseViewer.d.ts +2 -0
  71. package/components/routes/cases/CaseViewer.js +24 -0
  72. package/components/routes/cases/Cases.d.ts +2 -0
  73. package/components/routes/cases/Cases.js +101 -0
  74. package/components/routes/cases/constants.d.ts +5 -0
  75. package/components/routes/cases/constants.js +5 -0
  76. package/components/routes/cases/detail/AlertPanel.d.ts +6 -0
  77. package/components/routes/cases/detail/AlertPanel.js +32 -0
  78. package/components/routes/cases/detail/CaseDashboard.d.ts +7 -0
  79. package/components/routes/cases/detail/CaseDashboard.js +49 -0
  80. package/components/routes/cases/detail/CaseDetails.d.ts +6 -0
  81. package/components/routes/cases/detail/CaseDetails.js +61 -0
  82. package/components/routes/cases/detail/CaseOverview.d.ts +7 -0
  83. package/components/routes/cases/detail/CaseOverview.js +43 -0
  84. package/components/routes/cases/detail/CaseSidebar.d.ts +6 -0
  85. package/components/routes/cases/detail/CaseSidebar.js +36 -0
  86. package/components/routes/cases/detail/CaseTask.d.ts +11 -0
  87. package/components/routes/cases/detail/CaseTask.js +57 -0
  88. package/components/routes/cases/detail/ItemPage.d.ts +6 -0
  89. package/components/routes/cases/detail/ItemPage.js +93 -0
  90. package/components/routes/cases/detail/RelatedCasePanel.d.ts +6 -0
  91. package/components/routes/cases/detail/RelatedCasePanel.js +31 -0
  92. package/components/routes/cases/detail/TaskPanel.d.ts +7 -0
  93. package/components/routes/cases/detail/TaskPanel.js +52 -0
  94. package/components/routes/cases/detail/aggregates/CaseAggregate.d.ts +12 -0
  95. package/components/routes/cases/detail/aggregates/CaseAggregate.js +19 -0
  96. package/components/routes/cases/detail/aggregates/SourceAggregate.d.ts +6 -0
  97. package/components/routes/cases/detail/aggregates/SourceAggregate.js +27 -0
  98. package/components/routes/cases/detail/sidebar/CaseFolder.d.ts +13 -0
  99. package/components/routes/cases/detail/sidebar/CaseFolder.js +134 -0
  100. package/components/routes/cases/detail/sidebar/types.d.ts +3 -0
  101. package/components/routes/cases/detail/sidebar/utils.d.ts +3 -0
  102. package/components/routes/cases/detail/sidebar/utils.js +25 -0
  103. package/components/routes/cases/hooks/useCase.d.ts +13 -0
  104. package/components/routes/cases/hooks/useCase.js +38 -0
  105. package/components/routes/cases/modals/ResolveModal.d.ts +7 -0
  106. package/components/routes/cases/modals/ResolveModal.js +59 -0
  107. package/components/routes/help/ApiDocumentation.js +1 -1
  108. package/components/routes/help/HitDocumentation.js +1 -3
  109. package/components/routes/hits/search/HitContextMenu.js +3 -2
  110. package/components/routes/hits/search/InformationPane.d.ts +1 -0
  111. package/components/routes/hits/search/InformationPane.js +6 -28
  112. package/components/routes/hits/search/QuerySettings.js +2 -1
  113. package/components/routes/hits/search/QuerySettings.test.js +14 -9
  114. package/components/routes/hits/search/SearchPane.js +7 -32
  115. package/components/routes/hits/search/ViewLink.js +1 -1
  116. package/components/routes/hits/search/grid/EnhancedCell.js +1 -1
  117. package/components/routes/hits/search/shared/IndexPicker.d.ts +2 -0
  118. package/components/routes/hits/search/shared/IndexPicker.js +20 -0
  119. package/components/routes/hits/view/HitViewer.js +3 -4
  120. package/components/routes/home/ViewCard.js +1 -1
  121. package/components/routes/observables/ObservableViewer.d.ts +7 -0
  122. package/components/routes/observables/ObservableViewer.js +27 -0
  123. package/components/routes/overviews/OverviewViewer.js +2 -2
  124. package/locales/en/translation.json +437 -398
  125. package/locales/fr/translation.json +442 -408
  126. package/models/WithMetadata.d.ts +2 -1
  127. package/models/entities/generated/AttachmentsFile.d.ts +12 -0
  128. package/models/entities/generated/Case.d.ts +28 -0
  129. package/models/entities/generated/DestinationOriginal.d.ts +19 -0
  130. package/models/entities/generated/EmailAttachment.d.ts +8 -0
  131. package/models/entities/generated/EmailParent.d.ts +19 -0
  132. package/models/entities/generated/Enrichments.d.ts +7 -0
  133. package/models/entities/generated/EnrichmentsIndicator.d.ts +21 -0
  134. package/models/entities/generated/Howler.d.ts +0 -4
  135. package/models/entities/generated/HttpResponse.d.ts +11 -0
  136. package/models/entities/generated/Item.d.ts +9 -0
  137. package/models/entities/generated/Observable.d.ts +84 -0
  138. package/models/entities/generated/ObservableCloud.d.ts +20 -0
  139. package/models/entities/generated/ObservableDestination.d.ts +23 -0
  140. package/models/entities/generated/ObservableEmail.d.ts +30 -0
  141. package/models/entities/generated/ObservableFile.d.ts +36 -0
  142. package/models/entities/generated/ObservableHowler.d.ts +44 -0
  143. package/models/entities/generated/ObservableHttp.d.ts +11 -0
  144. package/models/entities/generated/ObservableObserver.d.ts +21 -0
  145. package/models/entities/generated/ObservableOrganization.d.ts +7 -0
  146. package/models/entities/generated/ObservableProcess.d.ts +34 -0
  147. package/models/entities/generated/ObservableSource.d.ts +23 -0
  148. package/models/entities/generated/ObservableThreat.d.ts +21 -0
  149. package/models/entities/generated/ObservableTls.d.ts +12 -0
  150. package/models/entities/generated/ObserverIngress.d.ts +9 -0
  151. package/models/entities/generated/Rule.d.ts +2 -10
  152. package/models/entities/generated/Task.d.ts +10 -0
  153. package/models/entities/generated/Threat.d.ts +2 -2
  154. package/models/entities/generated/{Enrichment.d.ts → ThreatEnrichment.d.ts} +1 -1
  155. package/package.json +16 -1
  156. package/plugins/clue/components/ClueTypography.js +2 -2
  157. package/plugins/clue/utils.d.ts +2 -1
  158. package/utils/constants.d.ts +3 -3
  159. package/utils/typeUtils.d.ts +7 -0
  160. package/utils/typeUtils.js +18 -0
  161. package/components/elements/display/icons/BundleButton.d.ts +0 -6
  162. package/components/elements/display/icons/BundleButton.js +0 -32
  163. package/components/routes/help/BundleDocumentation.d.ts +0 -3
  164. package/components/routes/help/BundleDocumentation.js +0 -12
  165. package/components/routes/help/markdown/en/bundles.md.js +0 -1
  166. package/components/routes/help/markdown/fr/bundles.md.js +0 -1
  167. package/components/routes/hits/search/BundleParentMenu.d.ts +0 -6
  168. package/components/routes/hits/search/BundleParentMenu.js +0 -32
  169. /package/components/{routes/overviews/OverviewEditor.d.ts → elements/MarkdownEditor.d.ts} +0 -0
  170. /package/components/elements/hit/{HitDetails.d.ts → related/RelatedRecords.d.ts} +0 -0
@@ -1,19 +1,19 @@
1
1
  {
2
+ "*": "All values",
3
+ "actions.running": "Action \"{{action}}\" is executing.",
4
+ "actions.succeeded": "Action \"{{action}}\" completed successfully.",
5
+ "add": "Add",
2
6
  "adminmenu": "Admin menu",
3
7
  "adminmenu.config": "Configuration",
4
8
  "adminmenu.users": "Users",
5
- "add": "Add",
6
9
  "all": "All",
7
- "*": "All values",
10
+ "analytic.notebook.dropdown.none": "No specific detection",
11
+ "analytic.notebook.error.minFields": "Name and link are required.",
12
+ "analytic.notebook.link": "Link",
13
+ "analytic.notebook.name": "Name",
8
14
  "any": "Any",
9
- "asc": "Ascending",
10
- "close": "Close",
11
- "desc": "Descending",
12
- "to": "to",
13
- "actions.running": "Action \"{{action}}\" is executing.",
14
- "actions.succeeded": "Action \"{{action}}\" completed successfully.",
15
- "api.user.apikey.updated": "New API key added successfully.",
16
15
  "api.user.apikey.removed": "API key removed successfully.",
16
+ "api.user.apikey.updated": "New API key added successfully.",
17
17
  "api.user.email.updated": "User's email updated successfully.",
18
18
  "api.user.name.updated": "User's name updated successfully.",
19
19
  "api.user.quota.updated": "API quota updated successfully.",
@@ -27,6 +27,15 @@
27
27
  "app.drawer.hit.assignment.success": "User assigned to hit sucessfully.",
28
28
  "app.drawer.hit.assignment.unassigned.email": "Mark hit as unassigned",
29
29
  "app.drawer.hit.assignment.unassigned.name": "Unassigned",
30
+ "app.drawer.user.apikey.description": "Randomly generated password used in scripts to gain limited data access for any combination of reading, writing, and making changes to your user account (extended keys).<br><br>Can also be used by others to impersonate your account when only permitting read/write permissions.",
31
+ "app.drawer.user.apikey.expiry.date": "Add Expiry Date",
32
+ "app.drawer.user.apikey.field.name": "Key Name",
33
+ "app.drawer.user.apikey.limit.description": "Due to the configuration of this Howler deployment, the permitted expiry date for API keys created now is very soon.",
34
+ "app.drawer.user.apikey.limit.title": "Warning: Short Expiry Duration",
35
+ "app.drawer.user.apikey.permissions": "Key Permissions",
36
+ "app.drawer.user.apikey.title": "Add API Key",
37
+ "app.drawer.user.groups.title": "Your Groups",
38
+ "app.drawer.user.roles.title": "Add Role",
30
39
  "app.drawer.view.description.create": "Create a new view.",
31
40
  "app.drawer.view.description.edit": "Edit an existing view.",
32
41
  "app.drawer.view.global": "Global",
@@ -34,114 +43,110 @@
34
43
  "app.drawer.view.personal": "Personal",
35
44
  "app.drawer.view.query": "View Query",
36
45
  "app.drawer.view.title": "View Name",
37
- "app.drawer.user.apikey.description": "Randomly generated password used in scripts to gain limited data access for any combination of reading, writing, and making changes to your user account (extended keys).<br><br>Can also be used by others to impersonate your account when only permitting read/write permissions.",
38
- "app.drawer.user.apikey.field.name": "Key Name",
39
- "app.drawer.user.apikey.permissions": "Key Permissions",
40
- "app.drawer.user.apikey.expiry.date": "Add Expiry Date",
41
- "app.drawer.user.apikey.title": "Add API Key",
42
- "app.drawer.user.apikey.limit.title": "Warning: Short Expiry Duration",
43
- "app.drawer.user.apikey.limit.description": "Due to the configuration of this Howler deployment, the permitted expiry date for API keys created now is very soon.",
44
- "app.drawer.user.roles.title": "Add Role",
45
- "app.drawer.user.groups.title": "Your Groups",
46
46
  "app.language": "Language",
47
+ "app.list.empty": "No Results",
47
48
  "app.search.fullscreen": "Maximize Search",
48
49
  "app.search.shortcut": "Open Search",
49
50
  "app.search.starttyping": "Search by assignment, analytic, detection or status",
51
+ "asc": "Ascending",
50
52
  "breadcrumb.404": "404",
51
53
  "button.add": "Add",
52
54
  "button.aggregate": "Aggregate",
53
55
  "button.cancel": "Cancel",
56
+ "button.confirm": "Confirm",
54
57
  "button.copy": "Copy",
55
58
  "button.create": "Create",
56
59
  "button.delete": "Delete",
57
60
  "button.drag": "Drag",
58
61
  "button.edit": "Edit",
59
62
  "button.pin": "Pin",
63
+ "button.readonly": "Read Only",
60
64
  "button.save": "Save",
61
65
  "button.saved": "Saved",
62
- "button.submit": "Submit",
63
66
  "button.search": "Search",
64
- "button.readonly": "Read Only",
65
- "button.confirm": "Confirm",
67
+ "button.submit": "Submit",
66
68
  "clipboard.failure": "could not be copied to clipboard",
67
69
  "clipboard.success": "was copied to clipboard.",
70
+ "close": "Close",
68
71
  "comments.add": "Add Comment",
69
- "comments.add.detection": "Add Comment to Detection",
70
72
  "comments.add.analytic": "Add Comment to Analytic",
73
+ "comments.add.detection": "Add Comment to Detection",
74
+ "comments.analytic": "Analytic Comments ({{count}})",
75
+ "comments.analytic.hide": "Hide Analytic Comments",
76
+ "comments.analytic.show": "Show Analytic Comments",
71
77
  "comments.delete": "Delete",
72
78
  "comments.edit": "Edit",
73
79
  "comments.edit.stop": "Stop Editing",
74
80
  "comments.edited": "Edited",
75
81
  "comments.quote": "Quote Reply",
76
- "comments.analytic": "Analytic Comments ({{count}})",
77
- "comments.analytic.show": "Show Analytic Comments",
78
- "comments.analytic.hide": "Hide Analytic Comments",
82
+ "complete": "Complete",
83
+ "crisis": "Crisis",
79
84
  "custom": "Custom",
80
- "documentation.open.actions": "Actions are a feature in Howler that allow users to perform particular tasks on a large number of hits, through automating the execution of a task on each hit. Click for additional documentation.",
81
- "documentation.open.search": "Search allows you to query Howler and view the matching hits. Click for additional documentation.",
82
- "documentation.open.views": "Views are a feature in Howler that allow users to create custom, default queries through which they can organize and triage hits. Click for additional documentation.",
83
- "documentation.open.templates": "Howler allows analysts and detection engineers to create templates, which allow various analytics and their detections to present fields and data relevant to triaging alerts generated by that analytic/detection. Click for additional documentation.",
84
- "duplicates.omitted": "Some duplicate entries have been omitted.",
85
- "rule.interval": "Rule Execution Interval",
86
- "rule.interval.edit": "Edit Interval",
87
- "rule.interval.save": "Save Interval",
88
- "rule.interval.five.minutes": "Every five minutes",
89
- "rule.interval.thirty.minutes": "Every thirty minutes",
90
- "rule.interval.one.hour": "Every one hour",
91
- "rule.interval.three.hours": "Every three hours",
92
- "rule.interval.six.hours": "Every six hours",
93
- "rule.interval.one.day": "Every one day",
94
85
  "date.range.1.day": "The last day",
95
- "date.range.3.day": "The last three days",
96
- "date.range.1.week": "The last week",
97
86
  "date.range.1.month": "The last month",
87
+ "date.range.1.week": "The last week",
88
+ "date.range.3.day": "The last three days",
98
89
  "date.range.all": "All Dates",
99
90
  "date.range.custom": "Custom Date",
100
- "date.select.start": "Start Date",
101
- "date.select.end": "End Date",
102
91
  "date.search.range": "Search Date Range",
92
+ "date.select.end": "End Date",
93
+ "date.select.start": "Start Date",
103
94
  "deprecated": "Deprecated",
95
+ "deprecation.instructions": "Upgrade Instructions",
96
+ "desc": "Descending",
104
97
  "description": "Description",
105
- "divider": "OR",
106
98
  "direction": "Direction",
107
- "deprecation.instructions": "Upgrade Instructions",
99
+ "divider": "OR",
100
+ "documentation.open.actions": "Actions are a feature in Howler that allow users to perform particular tasks on a large number of hits, through automating the execution of a task on each hit. Click for additional documentation.",
101
+ "documentation.open.search": "Search allows you to query Howler and view the matching hits. Click for additional documentation.",
102
+ "documentation.open.templates": "Howler allows analysts and detection engineers to create templates, which allow various analytics and their detections to present fields and data relevant to triaging alerts generated by that analytic/detection. Click for additional documentation.",
103
+ "documentation.open.views": "Views are a feature in Howler that allow users to create custom, default queries through which they can organize and triage hits. Click for additional documentation.",
104
+ "drawer.apikey.copied": "New key copied to clipboard!",
108
105
  "drawer.collapse": "Collapse Menu",
109
106
  "drawer.expand": "Expand Menu",
110
- "drawer.apikey.copied": "New key copied to clipboard!",
107
+ "duplicates.omitted": "Some duplicate entries have been omitted.",
111
108
  "edit": "Edit",
112
- "features.warning.title": "Feature In Active Development",
109
+ "event.module": "Event Module",
110
+ "event.type": "Event Type",
113
111
  "features.warning.description": "This feature is undergoing active development, and is not yet in a finished state. You may encounter bugs or instability.",
112
+ "features.warning.title": "Feature In Active Development",
113
+ "focus": "Main focus",
114
+ "global": "Global",
115
+ "help.actions.introduction": "Introduction to Actions",
116
+ "help.hit.banner.description": "See the below hit banner example for the hit keys necessary to properly populate it. If you have any additional questions, ask in the HOWLER support channel.",
117
+ "help.hit.banner.json": "Here is the hit data used to populate this banner:",
118
+ "help.hit.banner.title": "Populating the Hit Banner",
119
+ "help.hit.labels.title": "Hit Labels",
120
+ "help.hit.links.title": "Hit Links",
121
+ "help.hit.schema.description.missing": "No description provided.",
122
+ "help.hit.schema.regex": "Validation Regex",
123
+ "help.hit.schema.search.prompt": "Filter Fields",
124
+ "help.hit.schema.table.assemblyline": "Assemblyline Fields",
125
+ "help.hit.schema.table.description": "Description",
126
+ "help.hit.schema.table.ecs": "ECS Fields",
127
+ "help.hit.schema.table.howler": "Howler Fields",
128
+ "help.hit.schema.table.name": "Field",
129
+ "help.hit.schema.table.type": "Type",
130
+ "help.hit.schema.title": "Hit Schema",
131
+ "help.hit.schema.values": "Accepted Values",
114
132
  "hit.actions.conflict.assess": "Someone else has already assessed this hit.",
115
133
  "hit.actions.conflict.manage": "Someone else has already interacted with this hit. Please try again.",
116
- "hit.label": "Labels",
117
- "hit.label.category.mitigation": "Category: Mitigation - This label captures what efforts were undertaken to mitigate a compromise.",
118
- "hit.label.category.insight": "Category: Insight - An analyst has gained a useful insight that they are confident will remain true for future alerts if the surrounding circumstances remain the same.",
119
- "hit.label.category.victim": "Category: Victim - Hits produced from a victim notification stream can have a label that identifies the victim organization that needs to be notified.",
120
- "hit.label.category.campaign": "Catergory: Campaign - Identifies ongoing campaigns from specific malware families or phishing initiatives. They should only be considered correct attributions if the hit is promoted to evidence.",
121
- "hit.label.category.threat": "Category: Threat - Identifies that the hit has been attributed to a known threat actor or group.",
122
- "hit.label.category.operation": "Category: Operation - The hit is related to an ongoing operation and should be scrutinized with special considerations and a broader understanding of the current circumstances.",
123
- "hit.label.category.generic": "Category: Generic - A catch-all for any labels added that don't match another category.",
124
- "hit.label.category.assignments": "Category: Assignments - Specifies what analyst or team of analysts is assigned to triaging this hit.",
125
- "hit.label.category.tuning": "Category: Tuning - Identifies which hits are already understood and should get triaged automatically.",
126
- "hit.label.edit": "Manage labels",
127
- "hit.label.edit.add.error.empty": "Can't add an empty label",
128
- "hit.label.edit.add.error.duplicate": "Duplicated label not allowed",
129
- "hit.label.edit.add.category": "New Label Category",
130
- "hit.label.edit.add.label": "New label value",
131
- "hit.details.actions.assessment": "Assess",
132
- "hit.details.actions.assessment.noassessment": "No Assessment",
133
- "hit.details.actions.assign": "Assign Hit",
134
+ "hit.bundle.close": "Close Bundle",
135
+ "hit.bundle.parents.show": "Show Parent Bundles",
134
136
  "hit.details.actions.action": "Manage",
135
- "hit.details.actions.action.release": "Release",
137
+ "hit.details.actions.action.assign_to_me": "Assign to Me",
136
138
  "hit.details.actions.action.assign_to_other": "Delegate",
137
- "hit.details.actions.action.vote": "Vote",
138
- "hit.details.actions.action.start": "Start",
139
+ "hit.details.actions.action.demote": "Demote",
139
140
  "hit.details.actions.action.pause": "Pause",
140
- "hit.details.actions.action.resume": "Resume",
141
- "hit.details.actions.action.assign_to_me": "Assign to Me",
142
- "hit.details.actions.action.re_evaluate": "Re-evaluate",
143
141
  "hit.details.actions.action.promote": "Promote",
144
- "hit.details.actions.action.demote": "Demote",
142
+ "hit.details.actions.action.re_evaluate": "Re-evaluate",
143
+ "hit.details.actions.action.release": "Release",
144
+ "hit.details.actions.action.resume": "Resume",
145
+ "hit.details.actions.action.start": "Start",
146
+ "hit.details.actions.action.vote": "Vote",
147
+ "hit.details.actions.assessment": "Assess",
148
+ "hit.details.actions.assessment.noassessment": "No Assessment",
149
+ "hit.details.actions.assign": "Assign Hit",
145
150
  "hit.details.actions.vote": "Vote",
146
151
  "hit.details.actions.vote.novote": "No Vote",
147
152
  "hit.details.asessments.ambiguous.description": "The nature of the hit was not successfully determined based on available data.",
@@ -157,127 +162,128 @@
157
162
  "hit.details.forceDropdown": "Dropdown View",
158
163
  "hit.details.shortcuts": "Shortcut Settings",
159
164
  "hit.details.title": "Details",
165
+ "hit.fields": "Fields",
160
166
  "hit.header.assignment": "Assignment: {{user}}",
161
167
  "hit.header.assignment.add": "Assign to a user",
162
168
  "hit.header.assignment.change": "Change assignment",
163
- "hit.header.bundlesize": "{{hits}} hits",
164
169
  "hit.header.escalation": "Escalation Level: ",
165
170
  "hit.header.indicators": "Indicators",
166
171
  "hit.header.rationale": "Rationale",
172
+ "hit.header.related": "{{count}} related records",
167
173
  "hit.header.scrutiny": "Scrutiny: ",
168
174
  "hit.header.status": "Status: ",
169
175
  "hit.header.summary": "Summary",
170
176
  "hit.header.target": "Target",
171
177
  "hit.header.threat": "Threat",
178
+ "hit.header.view.case": "View case {{id}}",
179
+ "hit.header.view.hit": "View hit {{id}}",
180
+ "hit.header.view.observable": "View observable {{id}}",
172
181
  "hit.header.votes": "Votes: ",
182
+ "hit.howler.related": "{{count}} related records",
183
+ "hit.label": "Labels",
184
+ "hit.label.category.assignments": "Category: Assignments - Specifies what analyst or team of analysts is assigned to triaging this hit.",
185
+ "hit.label.category.campaign": "Catergory: Campaign - Identifies ongoing campaigns from specific malware families or phishing initiatives. They should only be considered correct attributions if the hit is promoted to evidence.",
186
+ "hit.label.category.generic": "Category: Generic - A catch-all for any labels added that don't match another category.",
187
+ "hit.label.category.insight": "Category: Insight - An analyst has gained a useful insight that they are confident will remain true for future alerts if the surrounding circumstances remain the same.",
188
+ "hit.label.category.mitigation": "Category: Mitigation - This label captures what efforts were undertaken to mitigate a compromise.",
189
+ "hit.label.category.operation": "Category: Operation - The hit is related to an ongoing operation and should be scrutinized with special considerations and a broader understanding of the current circumstances.",
190
+ "hit.label.category.threat": "Category: Threat - Identifies that the hit has been attributed to a known threat actor or group.",
191
+ "hit.label.category.tuning": "Category: Tuning - Identifies which hits are already understood and should get triaged automatically.",
192
+ "hit.label.category.victim": "Category: Victim - Hits produced from a victim notification stream can have a label that identifies the victim organization that needs to be notified.",
193
+ "hit.label.edit": "Manage labels",
194
+ "hit.label.edit.add.category": "New Label Category",
195
+ "hit.label.edit.add.error.duplicate": "Duplicated label not allowed",
196
+ "hit.label.edit.add.error.empty": "Can't add an empty label",
197
+ "hit.label.edit.add.label": "New label value",
198
+ "hit.notebook.confirm.dialog": "A notebook with that name already exists in your environment, do you wish to overwrite it?",
199
+ "hit.notebook.confirm.title": "Overwrite existing notebook?",
200
+ "hit.notebook.error.failToPost": "Failed to send notebook to Jupyterhub, make sure your user environment is running.",
201
+ "hit.notebook.goTo": "Go to Jupyterhub",
202
+ "hit.notebook.select": "Please Select a notebook",
203
+ "hit.notebook.tooltip": "Open in Jupyterhub",
173
204
  "hit.overview.missing": "No overview has been created for this hit. In order to create an overview, press the add button to the right.",
174
205
  "hit.panel.aggregation.run": "Create Summary",
175
206
  "hit.panel.analytic.open": "Open Analytic",
176
207
  "hit.panel.bundles.open": "Parent Bundles",
177
208
  "hit.panel.bundles.open.prompt": "Open Parent Bundle",
178
- "hit.panel.view.layout": "Change View Panel",
179
- "hit.panel.details.show": "Show Hit Details",
180
- "hit.panel.details.hide": "Hide Hit Details",
181
- "hit.panel.details.exit": "Close Hit",
182
- "hit.panel.open": "Open Hit Viewer",
183
209
  "hit.panel.close": "Close",
184
- "hit.panel.hit.noselection": "No hit has been selected",
185
- "hit.panel.exclude": "Exclude By",
186
- "hit.panel.include": "Include By",
187
210
  "hit.panel.details.cluster": "Cluster Size",
188
211
  "hit.panel.details.cluster.description": "Size of the cluster",
212
+ "hit.panel.details.exit": "Close Hit",
213
+ "hit.panel.details.hide": "Hide Hit Details",
189
214
  "hit.panel.details.no.subjects": "No subjects found",
190
- "hit.notebook.confirm.dialog": "A notebook with that name already exists in your environment, do you wish to overwrite it?",
191
- "hit.notebook.confirm.title": "Overwrite existing notebook?",
192
- "hit.notebook.select": "Please Select a notebook",
193
- "hit.notebook.goTo": "Go to Jupyterhub",
194
- "hit.notebook.tooltip": "Open in Jupyterhub",
195
- "hit.notebook.error.failToPost": "Failed to send notebook to Jupyterhub, make sure your user environment is running.",
196
- "hit.summary.title": "Summary of Hits Over Time",
197
- "hit.summary.subtitle": "Limited to a maximum of 10 000 hits.",
198
- "hit.summary.aggregate.sources": "Associated Templates:",
199
- "hit.summary.aggregate.title": "Query Summary Pane",
200
- "hit.summary.aggregate.nokeys.title": "No keys selected for faceting",
201
- "hit.summary.aggregate.nokeys.description": "Your current search query does not show any hits with templates set. As the values chosen in the hit templates are what populates this section, no results will be shown.",
202
- "hit.summary.filter.field": "Group By Field",
203
- "hit.summary.filter.escalation": "Filter By Escalation",
204
- "hit.summary.refresh": "Refresh Graph",
205
- "hit.summary.render.limit": "Results Rendered Limited to {{number}} points",
206
- "hit.summary.render.limit.description": "For performance reasons, a maximum of {{number}} points are shown by default. To show up to {{max}} points, press \"Allow More\".",
207
- "hit.summary.render.limit.override": "Allow More",
208
- "hit.summary.server.limit": "Cannot Summarize on {{number}} Hits",
209
- "hit.summary.server.limit.description": "Due to the complexity of the query, queries larger than {{max}} results cannot be summarized. Refine your query to enable summarization.",
210
- "hit.summary.zoom.reset": "Reset Zoom",
211
- "hit.summary.adhoc": "Add Custom Field",
212
- "hit.summary.adhoc.custom": "Custom Field",
213
- "analytic.notebook.link": "Link",
214
- "analytic.notebook.name": "Name",
215
- "analytic.notebook.dropdown.none": "No specific detection",
216
- "analytic.notebook.error.minFields": "Name and link are required.",
217
- "hit.bundle.parents.show": "Show Parent Bundles",
218
- "hit.bundle.close": "Close Bundle",
219
- "hit.fields": "Fields",
220
- "help.hit.bundle.title": "Hit Bundles",
221
- "help.hit.banner.title": "Populating the Hit Banner",
222
- "help.hit.banner.description": "See the below hit banner example for the hit keys necessary to properly populate it. If you have any additional questions, ask in the HOWLER support channel.",
223
- "help.hit.banner.json": "Here is the hit data used to populate this banner:",
224
- "help.hit.labels.title": "Hit Labels",
225
- "help.hit.links.title": "Hit Links",
226
- "help.hit.schema.title": "Hit Schema",
227
- "help.actions.introduction": "Introduction to Actions",
228
- "help.hit.schema.description.missing": "No description provided.",
229
- "help.hit.schema.search.prompt": "Filter Fields",
230
- "help.hit.schema.regex": "Validation Regex",
231
- "help.hit.schema.values": "Accepted Values",
232
- "help.hit.schema.table.assemblyline": "Assemblyline Fields",
233
- "help.hit.schema.table.ecs": "ECS Fields",
234
- "help.hit.schema.table.howler": "Howler Fields",
235
- "help.hit.schema.table.name": "Field",
236
- "help.hit.schema.table.type": "Type",
237
- "help.hit.schema.table.description": "Description",
215
+ "hit.panel.details.show": "Show Hit Details",
216
+ "hit.panel.exclude": "Exclude By",
217
+ "hit.panel.hit.noselection": "No hit has been selected",
218
+ "hit.panel.include": "Include By",
219
+ "hit.panel.open": "Open Hit Viewer",
220
+ "hit.panel.view.layout": "Change View Panel",
238
221
  "hit.quicksearch": "Search by assignment, analytic, detection or status",
239
- "hit.search.prompt": "Search by providing a lucene query. Activate autocomplete using [ctrl + space].",
222
+ "hit.related.tab.case": "Cases",
223
+ "hit.related.tab.hit": "Hits",
224
+ "hit.related.tab.links": "Links",
225
+ "hit.related.tab.observable": "Observables",
226
+ "hit.search.aggregate.button": "Create Summary",
227
+ "hit.search.button": "Perform search",
228
+ "hit.search.custom": "Custom Sort",
229
+ "hit.search.filter.add": "Add filter",
230
+ "hit.search.filter.button": "Use lookup filters with predefined values",
231
+ "hit.search.filter.fields": "Fields",
232
+ "hit.search.filter.label": "Lookup Filters",
233
+ "hit.search.filter.values": "Values",
234
+ "hit.search.index.hit": "Hits",
235
+ "hit.search.index.observable": "Observables",
240
236
  "hit.search.invalid": "Invalid Query",
241
237
  "hit.search.keyboard": "Keyboard shortcuts",
242
238
  "hit.search.keyboard.no_shortcuts": "No shortcuts",
243
239
  "hit.search.keyboard.shortcuts": "Shortcuts",
244
240
  "hit.search.keyboard.shortcuts_hints": "Shortcuts with hints",
245
- "hit.search.settings": "Settings",
246
- "hit.search.button": "Perform search",
247
- "hit.search.custom": "Custom Sort",
248
- "hit.search.aggregate.button": "Create Summary",
249
- "hit.search.filter.fields": "Fields",
250
- "hit.search.filter.values": "Values",
251
- "hit.search.filter.button": "Use lookup filters with predefined values",
252
- "hit.search.filter.label": "Lookup Filters",
253
- "hit.search.filter.add": "Add filter",
241
+ "hit.search.prompt": "Search by providing a lucene query. Activate autocomplete using [ctrl + space].",
254
242
  "hit.search.save.button": "Save query as view",
255
243
  "hit.search.save.view": "Save View",
256
- "hit.search.sort.button": "Sort Results",
257
- "hit.search.sort.fields": "Sort Field",
258
- "hit.search.span": "Timespan",
259
244
  "hit.search.select.all": "Select all hits on page",
260
245
  "hit.search.select.clear": "Clear Selection",
261
246
  "hit.search.selected": "{{size}} selected",
247
+ "hit.search.settings": "Settings",
248
+ "hit.search.sort.button": "Sort Results",
249
+ "hit.search.sort.fields": "Sort Field",
250
+ "hit.search.span": "Timespan",
262
251
  "hit.search.view.add": "Add view",
263
252
  "hit.search.view.current": "Current View",
264
253
  "hit.search.view.default": "(Default)",
265
- "hit.search.view.select": "Select View",
266
254
  "hit.search.view.remove": "Remove View",
255
+ "hit.search.view.select": "Select View",
256
+ "hit.summary.adhoc": "Add Custom Field",
257
+ "hit.summary.adhoc.custom": "Custom Field",
258
+ "hit.summary.aggregate.nokeys.description": "Your current search query does not show any hits with templates set. As the values chosen in the hit templates are what populates this section, no results will be shown.",
259
+ "hit.summary.aggregate.nokeys.title": "No keys selected for faceting",
260
+ "hit.summary.aggregate.sources": "Associated Templates:",
261
+ "hit.summary.aggregate.title": "Query Summary Pane",
262
+ "hit.summary.filter.escalation": "Filter By Escalation",
263
+ "hit.summary.filter.field": "Group By Field",
264
+ "hit.summary.refresh": "Refresh Graph",
265
+ "hit.summary.render.limit": "Results Rendered Limited to {{number}} points",
266
+ "hit.summary.render.limit.description": "For performance reasons, a maximum of {{number}} points are shown by default. To show up to {{max}} points, press \"Allow More\".",
267
+ "hit.summary.render.limit.override": "Allow More",
268
+ "hit.summary.server.limit": "Cannot Summarize on {{number}} Hits",
269
+ "hit.summary.server.limit.description": "Due to the complexity of the query, queries larger than {{max}} results cannot be summarized. Refine your query to enable summarization.",
270
+ "hit.summary.subtitle": "Limited to a maximum of 10 000 hits.",
271
+ "hit.summary.title": "Summary of Hits Over Time",
272
+ "hit.summary.zoom.reset": "Reset Zoom",
267
273
  "hit.viewer.aggregate": "Summary",
268
274
  "hit.viewer.comments": "Comments",
269
275
  "hit.viewer.data": "Raw Data",
270
276
  "hit.viewer.details": "Details",
271
277
  "hit.viewer.json": "JSON",
272
278
  "hit.viewer.overview": "Overview",
273
- "hit.viewer.worklog": "Worklog",
274
279
  "hit.viewer.related": "Related Links",
275
280
  "hit.viewer.reload": "Reload",
281
+ "hit.viewer.worklog": "Worklog",
276
282
  "hit.worklog.appended": "added to",
283
+ "hit.worklog.new": "New Updates",
277
284
  "hit.worklog.removed": "removed from",
278
285
  "hit.worklog.set": "updated to",
279
286
  "hit.worklog.updated": "Updated",
280
- "hit.worklog.new": "New Updates",
281
287
  "home.title": "My Assigned Hits",
282
288
  "json.viewer.search.label": "Search JSON Data",
283
289
  "json.viewer.search.prompt": "Query must be a valid regex.",
@@ -285,81 +291,99 @@
285
291
  "lead.invalid.description": "The selected lead does not match any type Howler recognizes, and therefore will not be rendered.",
286
292
  "link.open": "Open Link",
287
293
  "list": "list",
294
+ "live.closed": "Not connected to live server.",
295
+ "live.closing": "Closing connection to live server.",
288
296
  "live.connecting": "Trying to reconnect to live server.",
289
297
  "live.open": "Connected to live server. Updates to alerts will be automatically applied.",
290
- "live.closing": "Closing connection to live server.",
291
- "live.closed": "Not connected to live server.",
292
298
  "loading": "Loading...",
293
299
  "manage": "Manage",
300
+ "markdown.actionbutton.error": "You must provide two arguments: action id and hit id.",
294
301
  "markdown.error": "An Error Has Occurred.",
295
302
  "markdown.json.invalid": "Invalid JSON Provided. Consider using the {{json <data>}} utility to convert objects into JSON strings.",
296
303
  "markdown.props.missing": "You are missing keyword arguments for this helper:",
297
- "markdown.actionbutton.error": "You must provide two arguments: action id and hit id.",
298
- "modal.action.title": "Save Action",
299
304
  "modal.action.description": "Provide a name that allows other users to identify the purpose of this action.",
300
305
  "modal.action.empty": "Action Name cannot be empty.",
301
306
  "modal.action.label": "Action Name",
302
- "modal.confirm.delete.title": "Confirm Deletion",
307
+ "modal.action.title": "Save Action",
308
+ "modal.cases.resolve": "Resolve Case",
309
+ "modal.cases.resolve.description": "When resolving a case, you must either assess all open alerts, or add an assessment to the alerts.",
303
310
  "modal.confirm.delete.description": "Are you sure you want to delete this item?",
304
- "modal.rule.title": "Create a New Rule",
305
- "modal.rule.description": "Create a new rule by giving it a name, markdown description and submitting.",
306
- "modal.rule.name": "Rule Name",
307
- "modal.rule.name.warn": "In general, analytic name should only contain letters and spaces, preferablly 'In Pascal Case'.",
308
- "modal.rule.description.title": "Rule Description",
309
- "modal.rule.file.title": "Query",
310
- "modal.rule.markdown.title": "Markdown Preview",
311
- "modal.rule.markdown.placeholder": "Your *markdown* **description** will be ~~rendered~~ here.\n\n![](/images/doggie.png)",
312
- "modal.rule.disabled.analytic": "You must provide a rule name.",
313
- "modal.rule.disabled.description": "You must provide a useful markdown description for your rule.",
314
- "modal.rule.success": "Rule Created!",
315
- "modal.rationale.title": "Add Rationale",
311
+ "modal.confirm.delete.title": "Confirm Deletion",
316
312
  "modal.rationale.description": "Provide a rationale that succinctly explains to other analysts why you are confident in this assessment.",
317
313
  "modal.rationale.label": "Rationale",
314
+ "modal.rationale.title": "Add Rationale",
318
315
  "modal.rationale.type.analytic": "This rationale was used when assessing alerts with the same analytic name.",
319
316
  "modal.rationale.type.assignment": "This is a rationale you have recently used when assessing an alert.",
320
317
  "modal.rationale.type.preset": "This is a preset rationale configured for the associated analytic.",
321
- "none": "None",
318
+ "modal.rule.description": "Create a new rule by giving it a name, markdown description and submitting.",
319
+ "modal.rule.description.title": "Rule Description",
320
+ "modal.rule.disabled.analytic": "You must provide a rule name.",
321
+ "modal.rule.disabled.description": "You must provide a useful markdown description for your rule.",
322
+ "modal.rule.file.title": "Query",
323
+ "modal.rule.markdown.placeholder": "Your *markdown* **description** will be ~~rendered~~ here.\n\n![](/images/doggie.png)",
324
+ "modal.rule.markdown.title": "Markdown Preview",
325
+ "modal.rule.name": "Rule Name",
326
+ "modal.rule.name.warn": "In general, analytic name should only contain letters and spaces, preferablly 'In Pascal Case'.",
327
+ "modal.rule.success": "Rule Created!",
328
+ "modal.rule.title": "Create a New Rule",
322
329
  "no.data": "No Data",
330
+ "none": "None",
331
+ "normal": "Normal Priority",
323
332
  "on": "on",
324
333
  "open": "Open",
325
- "owner": "Owner",
326
334
  "operations.add_label": "Add Label",
327
335
  "operations.add_to_bundle": "Add to Bundle",
328
- "operations.remove_label": "Remove Label",
329
- "operations.remove_from_bundle": "Remove from Bundle",
330
- "operations.prioritization": "Change Prioritization",
331
336
  "operations.change_field": "Change Field",
332
- "operations.transition": "Execute Transition",
333
- "operations.promote": "Promote Hit",
334
337
  "operations.demote": "Demote Hit",
338
+ "operations.prioritization": "Change Prioritization",
339
+ "operations.promote": "Promote Hit",
340
+ "operations.remove_from_bundle": "Remove from Bundle",
341
+ "operations.remove_label": "Remove Label",
342
+ "operations.transition": "Execute Transition",
335
343
  "outline.assemblyline.beacons": "Beacons",
336
344
  "outline.assemblyline.file_path": "File Path",
337
345
  "outline.assemblyline.last_modified": "Last Modified",
338
346
  "outline.assemblyline.tags": "Tags",
339
347
  "overview.search": "Search Hit Data",
348
+ "owner": "Owner",
340
349
  "page.404.description": "The page you are looking for cannot be found...",
341
350
  "page.404.title": "404: Not found",
342
- "page.error.title": "Application Stopped Working",
343
- "page.error.description": "The application stopped working suddenly. If the problem persists please reach out on teams.",
344
- "page.error.support": "Please click here for teams support",
345
- "page.dashboard.title": "Dashboard",
351
+ "page.cases.created": "Created",
352
+ "page.cases.dashboard": "Dashboard",
353
+ "page.cases.dashboard.alerts": "Alerts",
354
+ "page.cases.dashboard.cases": "Related Cases",
355
+ "page.cases.dashboard.duration": "Duration",
356
+ "page.cases.dashboard.indicators": "Indicators",
357
+ "page.cases.dashboard.target": "Targets",
358
+ "page.cases.dashboard.tasks": "Tasks",
359
+ "page.cases.dashboard.threat": "Threats",
360
+ "page.cases.detail.participants": "Participants",
361
+ "page.cases.detail.properties": "Properties",
362
+ "page.cases.detail.status": "Status",
363
+ "page.cases.escalation": "Escalation",
364
+ "page.cases.sources": "Sources",
365
+ "page.cases.updated": "Updated",
346
366
  "page.dashboard.settings.edit": "Edit Dashboard",
347
367
  "page.dashboard.settings.refreshRate": "Refresh Rate",
368
+ "page.dashboard.title": "Dashboard",
348
369
  "page.documentation.categories": "API Categories",
349
370
  "page.documentation.categories.category": "Category",
350
371
  "page.documentation.categories.description": "Description",
351
- "page.documentation.endpoints": "API Endpoints",
352
- "page.documentation.endpoint": "Endpoint",
353
- "page.documentation.endpoint.explanation": "Endpoint Name - The user-friendly name of the endpoint<br>Endpoint Path - the path to make requests to in order to access this endpoint<br>Endpoint Stability - Whether this endpoint is safe to use and unlikely to change significantly.<br>Protection - Whether it is necessary to authenticate when accessing this endpoint<br>Methods - What HTTP methods can be used to access this endpoint",
354
- "page.documentation.required_type": "Required User Types",
355
- "page.documentation.required_type.explanation": "Which user types have access to this endpoint. If any of the types are green, you have access to it.",
356
- "page.documentation.required_priv": "Required API Key Privileges",
357
- "page.documentation.required_priv.explanation": "What privileges an API Key you generate must have to interact with this endpoint.",
358
372
  "page.documentation.description": "Endpoint Description",
359
373
  "page.documentation.description.explanation": "The documentation outlining what this endpoint is used for and how you should interact with it.",
360
- "page.documentation.labels.name": "Label Category",
374
+ "page.documentation.endpoint": "Endpoint",
375
+ "page.documentation.endpoint.explanation": "Endpoint Name - The user-friendly name of the endpoint<br>Endpoint Path - the path to make requests to in order to access this endpoint<br>Endpoint Stability - Whether this endpoint is safe to use and unlikely to change significantly.<br>Protection - Whether it is necessary to authenticate when accessing this endpoint<br>Methods - What HTTP methods can be used to access this endpoint",
376
+ "page.documentation.endpoints": "API Endpoints",
361
377
  "page.documentation.labels.description": "Category Description",
362
378
  "page.documentation.labels.example": "Example",
379
+ "page.documentation.labels.name": "Label Category",
380
+ "page.documentation.required_priv": "Required API Key Privileges",
381
+ "page.documentation.required_priv.explanation": "What privileges an API Key you generate must have to interact with this endpoint.",
382
+ "page.documentation.required_type": "Required User Types",
383
+ "page.documentation.required_type.explanation": "Which user types have access to this endpoint. If any of the types are green, you have access to it.",
384
+ "page.error.description": "The application stopped working suddenly. If the problem persists please reach out on teams.",
385
+ "page.error.support": "Please click here for teams support",
386
+ "page.error.title": "Application Stopped Working",
363
387
  "page.help": "Help",
364
388
  "page.help.title": "Help Dashboard",
365
389
  "page.login.button": "Sign in",
@@ -367,6 +391,27 @@
367
391
  "page.login.username": "Username",
368
392
  "page.logout": "Logging out current user ... ",
369
393
  "page.settings": "Your account settings",
394
+ "page.settings.admin.title": "Administration",
395
+ "page.settings.local.compact.json": "Show Compact JSON View",
396
+ "page.settings.local.compact.json.description": "Enable or disable a more compact JSON view, better suited to viewing lots of data at once.",
397
+ "page.settings.local.details.drawer": "Always use drawer in Hit Search",
398
+ "page.settings.local.details.drawer.description": "Instead of switching between a divided view and the drawer on different screen sizes, this setting forces Howler to always use the drawer.",
399
+ "page.settings.local.flatten.json": "Flatten JSON in JSON View",
400
+ "page.settings.local.flatten.json.description": "Instead of showing the object structure of the JSON, show it as flattened keys.",
401
+ "page.settings.local.hits.display_type": "Default display type for results",
402
+ "page.settings.local.hits.display_type.description": "This setting allows you to decide whether to use the list or grid view by default when searching.",
403
+ "page.settings.local.hits.display_type.grid": "Grid",
404
+ "page.settings.local.hits.display_type.list": "List",
405
+ "page.settings.local.hits.layout": "Change Layout",
406
+ "page.settings.local.hits.layout.comfy": "Comfy",
407
+ "page.settings.local.hits.layout.dense": "Dense",
408
+ "page.settings.local.hits.layout.description": "This setting allows you to decide how much padding and spacing, as well as font size and element size, we use when rendering the UI. The denser the UI, the more data can be viewed.",
409
+ "page.settings.local.hits.layout.normal": "Normal",
410
+ "page.settings.local.results.count": "Results Per Page",
411
+ "page.settings.local.results.count.description": "How many results should we show per page when showing search results?",
412
+ "page.settings.local.search.width": "Maximum Results Width",
413
+ "page.settings.local.search.width.description": "The maximum size (in pixels) the results column in the search page.",
414
+ "page.settings.local.title": "UI Preferences",
370
415
  "page.settings.profile.table.email": "Email",
371
416
  "page.settings.profile.table.groups": "Groups",
372
417
  "page.settings.profile.table.groups.description": "This drawer will show you any groups howler sees you as a part of. This can be useful for verifying you have the permissions and roles you expect given your authentication method.",
@@ -380,33 +425,14 @@
380
425
  "page.settings.security.table.password": "Password",
381
426
  "page.settings.security.title": "User Security",
382
427
  "page.settings.sitemap": "Settings",
383
- "page.settings.local.title": "UI Preferences",
384
- "page.settings.local.compact.json": "Show Compact JSON View",
385
- "page.settings.local.compact.json.description": "Enable or disable a more compact JSON view, better suited to viewing lots of data at once.",
386
- "page.settings.local.flatten.json": "Flatten JSON in JSON View",
387
- "page.settings.local.flatten.json.description": "Instead of showing the object structure of the JSON, show it as flattened keys.",
388
- "page.settings.local.details.drawer": "Always use drawer in Hit Search",
389
- "page.settings.local.details.drawer.description": "Instead of switching between a divided view and the drawer on different screen sizes, this setting forces Howler to always use the drawer.",
390
- "page.settings.local.hits.display_type": "Default display type for results",
391
- "page.settings.local.hits.display_type.description": "This setting allows you to decide whether to use the list or grid view by default when searching.",
392
- "page.settings.local.hits.display_type.list": "List",
393
- "page.settings.local.hits.display_type.grid": "Grid",
394
- "page.settings.local.hits.layout": "Change Layout",
395
- "page.settings.local.hits.layout.description": "This setting allows you to decide how much padding and spacing, as well as font size and element size, we use when rendering the UI. The denser the UI, the more data can be viewed.",
396
- "page.settings.local.hits.layout.dense": "Dense",
397
- "page.settings.local.hits.layout.normal": "Normal",
398
- "page.settings.local.hits.layout.comfy": "Comfy",
399
- "page.settings.local.search.width": "Maximum Results Width",
400
- "page.settings.local.search.width.description": "The maximum size (in pixels) the results column in the search page.",
401
- "page.settings.local.results.count": "Results Per Page",
402
- "page.settings.local.results.count.description": "How many results should we show per page when showing search results?",
403
- "page.settings.admin.title": "Administration",
404
428
  "page.user.search": "Search Users",
405
- "page.user.search.column.username": "Username",
406
- "page.user.search.column.fullname": "Fullname",
407
429
  "page.user.search.column.email": "Email",
430
+ "page.user.search.column.fullname": "Fullname",
408
431
  "page.user.search.column.groups": "Groups",
432
+ "page.user.search.column.username": "Username",
409
433
  "page.user.search.prompt": "Search by username, fullname, email or group",
434
+ "pages.cases.detail.participants": "Participants",
435
+ "pages.cases.detail.status": "Status",
410
436
  "password": "New Password",
411
437
  "password.confirm": "Confirm Password",
412
438
  "password.match": "Password and Confirm Password must match",
@@ -424,288 +450,310 @@
424
450
  "quicksearch.placeholder": "Search ...",
425
451
  "rationale.default": "Hit assessed as {{assessment}}",
426
452
  "references": "references",
453
+ "retention.error": "This hit is {{ duration }} from automatic deletion. You will soon lose access to this hit in Howler - consider retaining the hit if you want to avoid data loss.",
427
454
  "retention.imminent": "moments away",
428
455
  "retention.safe": "This hit is {{ duration }} from automatic deletion.",
429
456
  "retention.warn": "This hit is {{ duration }} from automatic deletion. Consider retaining the hit if you want to avoid data loss.",
430
- "retention.error": "This hit is {{ duration }} from automatic deletion. You will soon lose access to this hit in Howler - consider retaining the hit if you want to avoid data loss.",
457
+ "route.actions": "Actions",
458
+ "route.actions.alert.error": "There are {{count}} hits in your query for which this operation may fail.",
459
+ "route.actions.alert.success": "This operation should run without issue.",
460
+ "route.actions.alert.warning": "There are {{count}} hits in your query for which this operation may have no effect.",
461
+ "route.actions.automate": "Automate",
462
+ "route.actions.change": "Run Action",
463
+ "route.actions.create": "New Action",
464
+ "route.actions.edit": "Edit",
465
+ "route.actions.execute": "Execute",
466
+ "route.actions.manager": "Action Manager",
467
+ "route.actions.name": "Action Name",
468
+ "route.actions.open": "Open Query",
469
+ "route.actions.operation.add": "Add New Operation",
470
+ "route.actions.query.empty": "Query cannot be empty.",
471
+ "route.actions.report": "Action Report",
472
+ "route.actions.restart": "Restart",
473
+ "route.actions.save": "Save Action",
474
+ "route.actions.search": "Search Actions",
475
+ "route.actions.search.open": "Open List",
476
+ "route.actions.search.prompt": "Search by name or query.",
477
+ "route.actions.search.warning": "Before adding operations, you must run and validate a query.",
478
+ "route.actions.trigger": "Filter by Trigger",
479
+ "route.actions.trigger.add_label": "Run on Add Label",
480
+ "route.actions.trigger.create": "Run on Create",
481
+ "route.actions.trigger.demote": "Run on Demotion",
482
+ "route.actions.trigger.description": "This action has been automated. It will run automatically when the trigger(s) <bold>{{triggers}}</bold> are met.",
483
+ "route.actions.trigger.disabled.explanation": "One of your selected operations does not support this trigger.",
484
+ "route.actions.trigger.disabled.permissions": "You do not have the correct roles to execute this trigger.",
485
+ "route.actions.trigger.promote": "Run on Promotion",
486
+ "route.actions.trigger.remove_label": "Run on Remove Label",
487
+ "route.actions.trigger.resolve": "Run on Resolve",
488
+ "route.actions.trigger.update": "Run on Update",
489
+ "route.actions.view": "View",
431
490
  "route.admin.user.details": "User Details",
432
491
  "route.admin.user.search": "User Search",
433
492
  "route.advanced": "Advanced Search",
493
+ "route.advanced.create.rule": "Create Rule",
494
+ "route.advanced.create.rule.disabled": "You must run your search to ensure it is valid first.",
434
495
  "route.advanced.error": "Search Error",
496
+ "route.advanced.execute.query": "Execute Query",
435
497
  "route.advanced.fields": "Hit Fields to Show",
436
498
  "route.advanced.fields.all": "Show All Fields",
437
499
  "route.advanced.open": "Open in Search",
438
- "route.advanced.rows": "Number of Rows to Return",
439
- "route.advanced.create.rule": "Create Rule",
440
- "route.advanced.create.rule.disabled": "You must run your search to ensure it is valid first.",
441
- "route.advanced.execute.query": "Execute Query",
442
- "route.advanced.query.lucene": "Lucene Query",
443
- "route.advanced.query.lucene.description": "Apache Lucence is a search syntax used by elasticsearch, Howler and apache lucene. See our documentation for information on this.",
500
+ "route.advanced.pivot.field": "Group By Field",
444
501
  "route.advanced.query.eql": "EQL Query",
445
502
  "route.advanced.query.eql.description": "Event Query Language (EQL) is a query language for event-based time series data, such as logs, metrics, and traces.",
446
- "route.advanced.query.yaml": "Sigma Rule",
447
- "route.advanced.query.yaml.description": "Sigma is a generic and open signature format that allows you to describe relevant log events in a straightforward manner. The rule format is very flexible, easy to write and applicable to any type of log file.",
448
- "route.advanced.result.title": "Howler Advanced Search",
449
- "route.advanced.result.description": "Execute a query to show results here.",
450
- "route.advanced.rule.type": "Rule Type",
451
- "route.advanced.pivot.field": "Group By Field",
503
+ "route.advanced.query.lucene": "Lucene Query",
504
+ "route.advanced.query.lucene.description": "Apache Lucence is a search syntax used by elasticsearch, Howler and apache lucene. See our documentation for information on this.",
505
+ "route.advanced.query.lucene.type": "Query Method",
452
506
  "route.advanced.query.type": "Query Type",
453
507
  "route.advanced.query.type.default": "Default",
454
508
  "route.advanced.query.type.default.description": "Exceute a regular Howler search query in Lucene Syntax.",
509
+ "route.advanced.query.type.explain": "Explain",
510
+ "route.advanced.query.type.explain.description": "Get the elasticsearch explanation (i.e. the raw query executed against the cluster) of a given lucene query. Useful for debugging buggy lucene queries.",
455
511
  "route.advanced.query.type.facet": "Facet",
456
512
  "route.advanced.query.type.facet.description": "Provides the counts of each value for a field. When faceting on an array field, each unique value will be included in the response. Each value is only counted once.",
457
513
  "route.advanced.query.type.groupby": "Group By",
458
514
  "route.advanced.query.type.groupby.description": "Grouped results based on shared fields.",
459
- "route.advanced.query.type.explain": "Explain",
460
- "route.advanced.query.type.explain.description": "Get the elasticsearch explanation (i.e. the raw query executed against the cluster) of a given lucene query. Useful for debugging buggy lucene queries.",
461
- "route.advanced.query.lucene.type": "Query Method",
515
+ "route.advanced.query.yaml": "Sigma Rule",
516
+ "route.advanced.query.yaml.description": "Sigma is a generic and open signature format that allows you to describe relevant log events in a straightforward manner. The rule format is very flexible, easy to write and applicable to any type of log file.",
517
+ "route.advanced.result.description": "Execute a query to show results here.",
518
+ "route.advanced.result.title": "Howler Advanced Search",
519
+ "route.advanced.rows": "Number of Rows to Return",
520
+ "route.advanced.rule.type": "Rule Type",
462
521
  "route.analytics": "Analytics",
522
+ "route.analytics.assessment.title": "Assessment Result of Created Hits",
523
+ "route.analytics.contributors": "Contributors",
463
524
  "route.analytics.deleted": "Deleted Rule!",
525
+ "route.analytics.detection.title": "Hits Ingested in the Last Three Months by Detection",
464
526
  "route.analytics.detections": "Detections:",
465
- "route.analytics.tags": "Tags:",
466
- "route.analytics.rule": "Rule",
467
- "route.analytics.rule.title": "Rule Query",
468
- "route.analytics.contributors": "Contributors",
527
+ "route.analytics.escalation.title": "Escalation of Created Hits",
469
528
  "route.analytics.filter.rule": "Filter on Rules",
529
+ "route.analytics.ingestion.title": "Number of Hits Created",
530
+ "route.analytics.overview.description": "Description",
531
+ "route.analytics.overview.empty.description": "There are no existing hits for this analytic. Statistics cannot be shown.",
532
+ "route.analytics.overview.empty.title": "No Statistics to Show",
533
+ "route.analytics.overview.limit": "Limited to the most recent 10 000 hits.",
534
+ "route.analytics.overview.statistics": "Statistics",
470
535
  "route.analytics.pinned": "Pinned Analytics",
471
- "route.analytics.search.prompt": "Search by name or detections.",
472
- "route.analytics.search.filter.rules.show": "Showing Rules Only",
536
+ "route.analytics.rationales.new": "New Rationale",
537
+ "route.analytics.rule": "Rule",
538
+ "route.analytics.rule.title": "Rule Query",
473
539
  "route.analytics.search.filter.rules.hide": "Hiding Rules Only",
540
+ "route.analytics.search.filter.rules.show": "Showing Rules Only",
474
541
  "route.analytics.search.filter.rules.toggle": "Toggle Filtering Rule",
475
- "route.analytics.tab.overview": "Summary",
542
+ "route.analytics.search.prompt": "Search by name or detections.",
543
+ "route.analytics.set.owner": "Change Ownership",
544
+ "route.analytics.status.title": "Cumulative Status of Hits Created in the Last Three Months",
476
545
  "route.analytics.tab.comments": "Comments",
477
546
  "route.analytics.tab.hit_comments": "Hit Comments",
478
547
  "route.analytics.tab.notebooks": "Notebooks",
548
+ "route.analytics.tab.overview": "Summary",
479
549
  "route.analytics.tab.overviews": "Overviews",
480
550
  "route.analytics.tab.rule": "Rule Query",
481
551
  "route.analytics.tab.templates": "Templates",
482
552
  "route.analytics.tab.triage": "Triage",
483
- "route.analytics.view": "View Analytic",
484
- "route.analytics.overview.description": "Description",
485
- "route.analytics.overview.statistics": "Statistics",
486
- "route.analytics.overview.limit": "Limited to the most recent 10 000 hits.",
487
- "route.analytics.overview.empty.title": "No Statistics to Show",
488
- "route.analytics.overview.empty.description": "There are no existing hits for this analytic. Statistics cannot be shown.",
489
- "route.analytics.ingestion.title": "Number of Hits Created",
490
- "route.analytics.escalation.title": "Escalation of Created Hits",
491
- "route.analytics.assessment.title": "Assessment Result of Created Hits",
492
- "route.analytics.status.title": "Cumulative Status of Hits Created in the Last Three Months",
493
- "route.analytics.detection.title": "Hits Ingested in the Last Three Months by Detection",
494
- "route.analytics.updated": "Analytic Updated!",
495
- "route.analytics.set.owner": "Change Ownership",
496
- "route.analytics.triage.title": "Triage Settings",
497
- "route.analytics.triage.rationale": "Skip Rationale",
498
- "route.analytics.triage.rationale.description": "When triaging alerts from this analytic, the rationale is not prompted, and is instead auto-generated.",
553
+ "route.analytics.tags": "Tags:",
499
554
  "route.analytics.triage.assessments": "Permitted Assessment Outcomes",
500
555
  "route.analytics.triage.assessments.description": "When triaging alerts from this analytic, what assessments are valid?",
556
+ "route.analytics.triage.rationale": "Skip Rationale",
557
+ "route.analytics.triage.rationale.description": "When triaging alerts from this analytic, the rationale is not prompted, and is instead auto-generated.",
501
558
  "route.analytics.triage.rationales": "Preset Rationales",
502
559
  "route.analytics.triage.rationales.description": "Define preset rationales that will be available when triaging alerts from this analytic.",
503
- "route.analytics.rationales.new": "New Rationale",
504
- "route.actions": "Actions",
505
- "route.actions.operation.add": "Add New Operation",
506
- "route.actions.alert.error": "There are {{count}} hits in your query for which this operation may fail.",
507
- "route.actions.alert.success": "This operation should run without issue.",
508
- "route.actions.alert.warning": "There are {{count}} hits in your query for which this operation may have no effect.",
509
- "route.actions.automate": "Automate",
510
- "route.actions.change": "Run Action",
511
- "route.actions.edit": "Edit",
512
- "route.actions.execute": "Execute",
513
- "route.actions.create": "New Action",
514
- "route.actions.manager": "Action Manager",
515
- "route.actions.name": "Action Name",
516
- "route.actions.open": "Open Query",
517
- "route.actions.report": "Action Report",
518
- "route.actions.restart": "Restart",
519
- "route.actions.view": "View",
520
- "route.actions.save": "Save Action",
521
- "route.actions.search": "Search Actions",
522
- "route.actions.search.prompt": "Search by name or query.",
523
- "route.actions.search.open": "Open List",
524
- "route.actions.search.warning": "Before adding operations, you must run and validate a query.",
525
- "route.actions.trigger.description": "This action has been automated. It will run automatically when the trigger(s) <bold>{{triggers}}</bold> are met.",
526
- "route.actions.query.empty": "Query cannot be empty.",
527
- "route.actions.trigger": "Filter by Trigger",
528
- "route.actions.trigger.create": "Run on Create",
529
- "route.actions.trigger.promote": "Run on Promotion",
530
- "route.actions.trigger.demote": "Run on Demotion",
531
- "route.actions.trigger.update": "Run on Update",
532
- "route.actions.trigger.resolve": "Run on Resolve",
533
- "route.actions.trigger.add_label": "Run on Add Label",
534
- "route.actions.trigger.remove_label": "Run on Remove Label",
535
- "route.actions.trigger.disabled.explanation": "One of your selected operations does not support this trigger.",
536
- "route.actions.trigger.disabled.permissions": "You do not have the correct roles to execute this trigger.",
537
- "route.integrations": "Integrations",
560
+ "route.analytics.triage.title": "Triage Settings",
561
+ "route.analytics.updated": "Analytic Updated!",
562
+ "route.analytics.view": "View Analytic",
563
+ "route.cases": "Cases",
564
+ "route.cases.create": "Create Case",
565
+ "route.cases.manager.search": "Search Cases",
566
+ "route.cases.search.prompt": "Search Cases via title, summary or indicators",
567
+ "route.cases.view": "View Case",
568
+ "route.clear": "Clear query",
569
+ "route.dossiers": "Dossiers",
570
+ "route.dossiers.create": "New Dossier",
571
+ "route.dossiers.default": "Default",
572
+ "route.dossiers.edit": "Edit Dossier",
573
+ "route.dossiers.manager.delete": "Delete Dossier",
574
+ "route.dossiers.manager.delete.success": "Dossier Removed.",
575
+ "route.dossiers.manager.field.query": "Query",
576
+ "route.dossiers.manager.field.title": "Title",
577
+ "route.dossiers.manager.field.type": "Type",
578
+ "route.dossiers.manager.format": "Lead Format",
579
+ "route.dossiers.manager.global": "Global",
580
+ "route.dossiers.manager.icon": "Lead Icon",
581
+ "route.dossiers.manager.icon.description": "Specify an icon using the iconify ID. To browse icons, click the button to the right.",
582
+ "route.dossiers.manager.label.en": "English Title",
583
+ "route.dossiers.manager.label.fr": "Titre français",
584
+ "route.dossiers.manager.lead.create": "Create a new lead by pressing the button to the right.",
585
+ "route.dossiers.manager.openinsearch": "Open in Search",
586
+ "route.dossiers.manager.personal": "Personal",
587
+ "route.dossiers.manager.pivot.create": "You currently have no pivots configured. Press the add button to the right to create a new one.",
588
+ "route.dossiers.manager.pivot.format": "Pivot format",
589
+ "route.dossiers.manager.pivot.icon": "Pivot Icon",
590
+ "route.dossiers.manager.pivot.label.en": "English Title",
591
+ "route.dossiers.manager.pivot.label.fr": "Titre français",
592
+ "route.dossiers.manager.pivot.mapping.custom": "Custom Value",
593
+ "route.dossiers.manager.pivot.mapping.field": "Hit Field",
594
+ "route.dossiers.manager.pivot.mapping.key": "Key",
595
+ "route.dossiers.manager.pivot.mappings": "Pivot Mappings",
596
+ "route.dossiers.manager.pivot.value": "Pivot value",
597
+ "route.dossiers.manager.search": "Search Dossiers",
598
+ "route.dossiers.manager.tabs.leads": "Leads",
599
+ "route.dossiers.manager.tabs.pivots": "Pivots",
600
+ "route.dossiers.manager.validation.error": "Dossier is Invalid.",
601
+ "route.dossiers.manager.validation.error.items": "You have not configured any leads or pivots.",
602
+ "route.dossiers.manager.validation.error.leads": "A lead is misconfigured.",
603
+ "route.dossiers.manager.validation.error.leads.content": "You have not set the content for the lead '{{label}}'.",
604
+ "route.dossiers.manager.validation.error.leads.format": "You have not set the format for the lead '{{label}}'.",
605
+ "route.dossiers.manager.validation.error.leads.icon": "You are missing an icon, or the specified icon does not exist for lead '{{label}}'.",
606
+ "route.dossiers.manager.validation.error.leads.label": "You have not configured a lead label.",
607
+ "route.dossiers.manager.validation.error.leads.label.en": "You have not configured an English lead label.",
608
+ "route.dossiers.manager.validation.error.leads.label.fr": "You have not configured a French lead label.",
609
+ "route.dossiers.manager.validation.error.missing": "{{field}} is invalid.",
610
+ "route.dossiers.manager.validation.error.pivots": "A pivot is misconfigured.",
611
+ "route.dossiers.manager.validation.error.pivots.duplicate": "The pivot '{{label}}' has a duplicate key.",
612
+ "route.dossiers.manager.validation.error.pivots.field": "You have not configured a field or custom value for a mapping in the pivot '{{label}}'.",
613
+ "route.dossiers.manager.validation.error.pivots.format": "You have not set the format for the pivot '{{label}}'.",
614
+ "route.dossiers.manager.validation.error.pivots.icon": "You are missing an icon, or the specified icon does not exist for pivot '{{label}}'.",
615
+ "route.dossiers.manager.validation.error.pivots.key": "You have not configured a key for a mapping in the pivot '{{label}}'.",
616
+ "route.dossiers.manager.validation.error.pivots.label": "You have not configured a pivot label.",
617
+ "route.dossiers.manager.validation.error.pivots.label.en": "You have not configured an English pivot label.",
618
+ "route.dossiers.manager.validation.error.pivots.label.fr": "You have not configured a French pivot label.",
619
+ "route.dossiers.manager.validation.error.pivots.value": "You have not set the value for the pivot '{{label}}'.",
620
+ "route.dossiers.manager.validation.search": "You must search to validate your query before submitting.",
621
+ "route.dossiers.prompt": "Activate autocomplete using [ctrl + space].",
622
+ "route.dossiers.search.prompt": "Search by title, query, or owner.",
623
+ "route.dossiers.view": "View Dossier",
538
624
  "route.help": "Help",
539
- "route.help.main": "Dashboard",
540
625
  "route.help.actions": "Action Documentation",
541
626
  "route.help.api": "API Documentation",
542
627
  "route.help.auth": "Authentication",
543
628
  "route.help.client": "Howler Client",
544
629
  "route.help.hit": "Hit Documentation",
630
+ "route.help.main": "Dashboard",
631
+ "route.help.notebook": "Notebook Documentation",
632
+ "route.help.overviews": "Overviews",
633
+ "route.help.retention": "Retention",
545
634
  "route.help.search": "Search Documentation",
546
635
  "route.help.templates": "Templates",
547
- "route.help.overviews": "Overviews",
548
- "route.help.notebook": "Notebook Documentation",
549
636
  "route.help.views": "Views",
550
- "route.help.retention": "Retention",
551
- "route.hits.bundle": "View Bundle",
552
- "route.hits.view": "View Hit",
637
+ "route.history": "History mode: See all previous queries",
553
638
  "route.hits": "Alerts",
639
+ "route.hits.view": "View Hit",
640
+ "route.home": "User Dashboard",
641
+ "route.home.add": "Add New Panel",
642
+ "route.home.add.analytic": "Analytic",
554
643
  "route.home.add.analytic.description": "Select the analytic for which data should be shown, and the visualization to present.",
555
644
  "route.home.add.analytic.title": "Add analytic statistics",
556
- "route.home.add.analytic": "Analytic",
557
645
  "route.home.add.description": "Add an additional panel to your dashboard by selecting the type you wish to add, and completing the configuration",
558
- "route.home.add.limit.description": "Maximum number of hits to render",
559
646
  "route.home.add.limit": "Result limit",
560
- "route.home.add.type.analytic.description": "Present statistics on a given analytic = the resulting assessments, number of hits created, or escalation of created hits",
647
+ "route.home.add.limit.description": "Maximum number of hits to render",
648
+ "route.home.add.type": "Panel Type",
561
649
  "route.home.add.type.analytic": "Analytic Panel",
562
- "route.home.add.type.view.description": "Present a saved view, limited to a certain number of hits.",
650
+ "route.home.add.type.analytic.description": "Present statistics on a given analytic = the resulting assessments, number of hits created, or escalation of created hits",
563
651
  "route.home.add.type.view": "View Panel",
564
- "route.home.add.type": "Panel Type",
652
+ "route.home.add.type.view.description": "Present a saved view, limited to a certain number of hits.",
565
653
  "route.home.add.view": "View to present",
566
- "route.home.add.visualization.assessment.description": "For hits that have been triaged, what was the resulting assessment?",
654
+ "route.home.add.visualization": "Visualization",
567
655
  "route.home.add.visualization.assessment": "Assessment Result of Created Hits",
568
- "route.home.add.visualization.created.description": "Time series of the number of hits created by the analytic over the last 90 days.",
656
+ "route.home.add.visualization.assessment.description": "For hits that have been triaged, what was the resulting assessment?",
569
657
  "route.home.add.visualization.created": "Number of Created Hits",
570
- "route.home.add.visualization.detection.description": "For hits ingested in the last three months, what is their detection?",
658
+ "route.home.add.visualization.created.description": "Time series of the number of hits created by the analytic over the last 90 days.",
571
659
  "route.home.add.visualization.detection": "Hits Created by Detection",
572
- "route.home.add.visualization.escalation.description": "For hits that have been triaged, what was the resulting escalation?",
660
+ "route.home.add.visualization.detection.description": "For hits ingested in the last three months, what is their detection?",
573
661
  "route.home.add.visualization.escalation": "Escalation of Created Hits",
574
- "route.home.add.visualization.status.description": "For hits ingested in the last three months, what is their status?",
662
+ "route.home.add.visualization.escalation.description": "For hits that have been triaged, what was the resulting escalation?",
575
663
  "route.home.add.visualization.status": "Cumulative Status of Hits Created",
664
+ "route.home.add.visualization.status.description": "For hits ingested in the last three months, what is their status?",
576
665
  "route.home.add.visualization.unavailable": "No visualization options available.",
577
- "route.home.add.visualization": "Visualization",
578
- "route.home.add": "Add New Panel",
579
666
  "route.home.alert.updated.description": "There have been updates to alerts you are involved in. Since you last viewed, {{count}} alert(s) have updates.",
580
667
  "route.home.alert.updated.title": "Alert Updates",
581
668
  "route.home.description": "Welcome to Howler. You can add items to your dashboard using the buttons above.",
582
669
  "route.home.title": "Howler",
583
- "route.home": "User Dashboard",
670
+ "route.integrations": "Integrations",
584
671
  "route.login.button.oauth": "Sign in with",
672
+ "route.overviews": "Overviews",
673
+ "route.overviews.analytic": "Choose Analytic",
674
+ "route.overviews.create": "New Overview",
675
+ "route.overviews.default": "Default",
676
+ "route.overviews.detection": "Choose Detection",
677
+ "route.overviews.manager.delete": "Delete Overview",
678
+ "route.overviews.manager.delete.success": "Overview Removed.",
679
+ "route.overviews.manager.search": "Search Overviews",
680
+ "route.overviews.prompt": "Activate autocomplete using [ctrl + space].",
681
+ "route.overviews.search.prompt": "Search by title, content, analytic or detection.",
682
+ "route.overviews.select": "Select an analytic and detection to view and edit the overview.",
683
+ "route.overviews.theme.dark": "Preview in Dark Mode",
684
+ "route.overviews.theme.light": "Preview in Light Mode",
685
+ "route.overviews.view": "View Overview",
585
686
  "route.search": "Search",
586
- "route.clear": "Clear query",
587
- "route.history": "History mode: See all previous queries",
588
687
  "route.templates": "Templates",
589
688
  "route.templates.analytic": "Choose Analytic",
590
- "route.templates.detection": "Choose Detection",
591
689
  "route.templates.builtin": "Built-in",
592
- "route.templates.builtin.show": "Built in Templates",
593
690
  "route.templates.builtin.hide": "Hide Built in Templates",
691
+ "route.templates.builtin.show": "Built in Templates",
692
+ "route.templates.create": "New Template",
594
693
  "route.templates.default": "Default",
694
+ "route.templates.detection": "Choose Detection",
595
695
  "route.templates.global": "Global",
596
- "route.templates.personal": "Personal",
597
- "route.templates.search.prompt": "Search by analytic, detection, or template keys.",
598
- "route.templates.select": "Select an analytic and detection to view and edit the template.",
599
- "route.templates.readonly.warning": "This is a built-in template, and cannot be edited. To make changes to it, contact",
600
- "route.templates.prompt": "Activate autocomplete using [ctrl + space].",
601
- "route.templates.view": "View Template",
602
- "route.templates.create": "New Template",
603
696
  "route.templates.manager.global": "Global",
604
- "route.templates.manager.personal": "Personal",
605
697
  "route.templates.manager.open": "Open View",
698
+ "route.templates.manager.personal": "Personal",
606
699
  "route.templates.manager.readonly": "Built-in",
607
700
  "route.templates.manager.search": "Search Templates",
701
+ "route.templates.personal": "Personal",
702
+ "route.templates.prompt": "Activate autocomplete using [ctrl + space].",
703
+ "route.templates.readonly.warning": "This is a built-in template, and cannot be edited. To make changes to it, contact",
608
704
  "route.templates.rule.explanation": "This is a Howler Analytic. There is only one detection, which has been pre-selected.",
609
- "route.overviews": "Overviews",
610
- "route.overviews.analytic": "Choose Analytic",
611
- "route.overviews.detection": "Choose Detection",
612
- "route.overviews.default": "Default",
613
- "route.overviews.search.prompt": "Search by title, content, analytic or detection.",
614
- "route.overviews.select": "Select an analytic and detection to view and edit the overview.",
615
- "route.overviews.prompt": "Activate autocomplete using [ctrl + space].",
616
- "route.overviews.view": "View Overview",
617
- "route.overviews.create": "New Overview",
618
- "route.overviews.manager.search": "Search Overviews",
619
- "route.overviews.manager.delete": "Delete Overview",
620
- "route.overviews.manager.delete.success": "Overview Removed.",
621
- "route.overviews.theme.light": "Preview in Light Mode",
622
- "route.overviews.theme.dark": "Preview in Dark Mode",
623
- "route.dossiers": "Dossiers",
624
- "route.dossiers.default": "Default",
625
- "route.dossiers.search.prompt": "Search by title, query, or owner.",
626
- "route.dossiers.prompt": "Activate autocomplete using [ctrl + space].",
627
- "route.dossiers.view": "View Dossier",
628
- "route.dossiers.create": "New Dossier",
629
- "route.dossiers.edit": "Edit Dossier",
630
- "route.dossiers.manager.search": "Search Dossiers",
631
- "route.dossiers.manager.delete": "Delete Dossier",
632
- "route.dossiers.manager.delete.success": "Dossier Removed.",
633
- "route.dossiers.manager.field.title": "Title",
634
- "route.dossiers.manager.field.type": "Type",
635
- "route.dossiers.manager.field.query": "Query",
636
- "route.dossiers.manager.global": "Global",
637
- "route.dossiers.manager.personal": "Personal",
638
- "route.dossiers.manager.lead.create": "Create a new lead by pressing the button to the right.",
639
- "route.dossiers.manager.icon": "Lead Icon",
640
- "route.dossiers.manager.icon.description": "Specify an icon using the iconify ID. To browse icons, click the button to the right.",
641
- "route.dossiers.manager.label.en": "English Title",
642
- "route.dossiers.manager.label.fr": "Titre français",
643
- "route.dossiers.manager.format": "Lead Format",
644
- "route.dossiers.manager.tabs.leads": "Leads",
645
- "route.dossiers.manager.tabs.pivots": "Pivots",
646
- "route.dossiers.manager.openinsearch": "Open in Search",
647
- "route.dossiers.manager.pivot.create": "You currently have no pivots configured. Press the add button to the right to create a new one.",
648
- "route.dossiers.manager.pivot.icon": "Pivot Icon",
649
- "route.dossiers.manager.pivot.label.en": "English Title",
650
- "route.dossiers.manager.pivot.label.fr": "Titre français",
651
- "route.dossiers.manager.pivot.format": "Pivot format",
652
- "route.dossiers.manager.pivot.value": "Pivot value",
653
- "route.dossiers.manager.pivot.mappings": "Pivot Mappings",
654
- "route.dossiers.manager.pivot.mapping.key": "Key",
655
- "route.dossiers.manager.pivot.mapping.field": "Hit Field",
656
- "route.dossiers.manager.pivot.mapping.custom": "Custom Value",
657
- "route.dossiers.manager.validation.error": "Dossier is Invalid.",
658
- "route.dossiers.manager.validation.search": "You must search to validate your query before submitting.",
659
- "route.dossiers.manager.validation.error.missing": "{{field}} is invalid.",
660
- "route.dossiers.manager.validation.error.leads": "A lead is misconfigured.",
661
- "route.dossiers.manager.validation.error.leads.label": "You have not configured a lead label.",
662
- "route.dossiers.manager.validation.error.leads.label.en": "You have not configured an English lead label.",
663
- "route.dossiers.manager.validation.error.leads.label.fr": "You have not configured a French lead label.",
664
- "route.dossiers.manager.validation.error.leads.format": "You have not set the format for the lead '{{label}}'.",
665
- "route.dossiers.manager.validation.error.leads.content": "You have not set the content for the lead '{{label}}'.",
666
- "route.dossiers.manager.validation.error.leads.icon": "You are missing an icon, or the specified icon does not exist for lead '{{label}}'.",
667
- "route.dossiers.manager.validation.error.pivots": "A pivot is misconfigured.",
668
- "route.dossiers.manager.validation.error.pivots.label": "You have not configured a pivot label.",
669
- "route.dossiers.manager.validation.error.pivots.label.en": "You have not configured an English pivot label.",
670
- "route.dossiers.manager.validation.error.pivots.label.fr": "You have not configured a French pivot label.",
671
- "route.dossiers.manager.validation.error.pivots.format": "You have not set the format for the pivot '{{label}}'.",
672
- "route.dossiers.manager.validation.error.pivots.value": "You have not set the value for the pivot '{{label}}'.",
673
- "route.dossiers.manager.validation.error.pivots.icon": "You are missing an icon, or the specified icon does not exist for pivot '{{label}}'.",
674
- "route.dossiers.manager.validation.error.pivots.duplicate": "The pivot '{{label}}' has a duplicate key.",
675
- "route.dossiers.manager.validation.error.pivots.key": "You have not configured a key for a mapping in the pivot '{{label}}'.",
676
- "route.dossiers.manager.validation.error.pivots.field": "You have not configured a field or custom value for a mapping in the pivot '{{label}}'.",
677
- "route.dossiers.manager.validation.error.items": "You have not configured any leads or pivots.",
705
+ "route.templates.search.prompt": "Search by analytic, detection, or template keys.",
706
+ "route.templates.select": "Select an analytic and detection to view and edit the template.",
707
+ "route.templates.view": "View Template",
678
708
  "route.views": "Views",
709
+ "route.views.create": "New View",
679
710
  "route.views.create.success": "View Created.",
680
- "route.views.update.success": "View Updated.",
681
- "route.views.show": "Show View",
682
711
  "route.views.edit": "Edit View",
683
- "route.views.create": "New View",
684
712
  "route.views.manager": "View Manager",
685
713
  "route.views.manager.all": "All",
714
+ "route.views.manager.default": "Default View",
686
715
  "route.views.manager.favourites": "Show favourites only",
687
716
  "route.views.manager.global": "Global",
688
- "route.views.manager.personal": "Personal",
689
717
  "route.views.manager.open": "Open View",
718
+ "route.views.manager.personal": "Personal",
690
719
  "route.views.manager.readonly": "Built-in",
691
720
  "route.views.manager.search": "Search Views",
692
- "route.views.manager.default": "Default View",
693
721
  "route.views.name": "View Name",
694
722
  "route.views.save": "Save Query as View",
695
723
  "route.views.saved": "Pinned Views",
696
724
  "route.views.search.prompt": "Search by name, query, or owner.",
725
+ "route.views.show": "Show View",
726
+ "route.views.update.success": "View Updated.",
727
+ "rule.interval": "Rule Execution Interval",
728
+ "rule.interval.edit": "Edit Interval",
729
+ "rule.interval.five.minutes": "Every five minutes",
730
+ "rule.interval.one.day": "Every one day",
731
+ "rule.interval.one.hour": "Every one hour",
732
+ "rule.interval.save": "Save Interval",
733
+ "rule.interval.six.hours": "Every six hours",
734
+ "rule.interval.thirty.minutes": "Every thirty minutes",
735
+ "rule.interval.three.hours": "Every three hours",
736
+ "save": "Save",
697
737
  "search.open": "Open Search",
698
738
  "search.result.showing": "Showing {{offset}} to {{length}} of {{total}} results",
699
739
  "search.result.showing.single": "No results",
740
+ "search.total": "There are a total of {{count}} hits matching this query.",
741
+ "started": "Started",
700
742
  "templates.edit.analytic": "Edit analytic template",
701
743
  "templates.edit.detection": "Edit detection template",
744
+ "to": "to",
702
745
  "tooltip.breadcrumbs.max": "Expand Breadcrumbs",
703
746
  "tooltip.breadcrumbs.min": "Collapse Breadcrumbs",
704
- "app.list.empty": "No Results",
705
- "save": "Save",
706
- "search.total": "There are a total of {{count}} hits matching this query.",
747
+ "tui.query.invalid": "Invalid view",
748
+ "tui.query.load": "Load a saved view",
749
+ "tui.query.save.alert": "Load a saved view or save the current query as a view",
750
+ "tui.query.save.append": "Append active views",
751
+ "tui.query.store.delete": "Delete saved view",
752
+ "tui.query.store.load": "Load saved view into input field",
753
+ "tui.query.views.clear": "Clear active views",
754
+ "tui.query.views.load": "Load active views into input field",
707
755
  "unknown": "Unknown",
708
- "using": "using",
756
+ "unset": "Unset",
709
757
  "user.error.failed": "The API failed to provide required user information.",
710
758
  "user.error.modal.body": "While connecting to the server, an unknown error occurred. Please try again later.",
711
759
  "user.error.modal.details": "Details:",
@@ -715,20 +763,11 @@
715
763
  "usermenu": "User menu",
716
764
  "usermenu.logout": "Logout",
717
765
  "usermenu.settings": "Settings",
766
+ "using": "using",
718
767
  "view.assigned_to_me": "Assigned to Me",
719
768
  "view.notfound": "This view is not available to you, or does not exist.",
720
769
  "view.open": "Open View Query",
721
770
  "view.refresh": "Refresh View",
722
771
  "view.settings.advance_on_triage": "Advance to next hit on triage",
723
- "view.settings.advance_on_triage.description": "If this is enabled, triaging a hit on this view will automatically move to the next hit in line, making rapid triage of hits easier.",
724
- "tui.query.save.alert": "Load a saved view or save the current query as a view",
725
- "tui.query.load": "Load a saved view",
726
- "tui.query.invalid": "Invalid view",
727
- "tui.query.store.delete": "Delete saved view",
728
- "tui.query.store.load": "Load saved view into input field",
729
- "tui.query.views.load": "Load active views into input field",
730
- "tui.query.views.clear": "Clear active views",
731
- "tui.query.save.append": "Append active views",
732
- "global": "Global",
733
- "unset": "Unset"
772
+ "view.settings.advance_on_triage.description": "If this is enabled, triaging a hit on this view will automatically move to the next hit in line, making rapid triage of hits easier."
734
773
  }