@x12i/memorix-retrieval 1.30.0 → 1.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/catalox-seeds/inputs/entity-descriptors/assets.json +414 -21
  2. package/catalox-seeds/inputs/entity-descriptors/subnets.json +267 -9
  3. package/catalox-seeds/inputs/entity-descriptors/topology-zones.json +85 -0
  4. package/catalox-seeds/inputs/entity-descriptors/vulnerabilities-groups.json +264 -3
  5. package/catalox-seeds/inputs/entity-descriptors/vulnerabilities.json +410 -11
  6. package/catalox-seeds/inputs/item-descriptors/asset-detail-item.json +63 -15
  7. package/catalox-seeds/inputs/item-descriptors/subnet-detail-item.json +51 -17
  8. package/catalox-seeds/inputs/item-descriptors/vulnerabilities-group-detail-item.json +97 -0
  9. package/catalox-seeds/inputs/item-descriptors/vulnerability-detail-item.json +44 -39
  10. package/catalox-seeds/inputs/item-descriptors/vulnerability-observation-detail-item.json +42 -0
  11. package/catalox-seeds/inputs/list-descriptors/assets-exploitability-decisions-list.json +33 -0
  12. package/catalox-seeds/inputs/list-descriptors/assets-main-list.json +56 -4
  13. package/catalox-seeds/inputs/list-descriptors/assets-potential-impact-decisions-list.json +31 -0
  14. package/catalox-seeds/inputs/list-descriptors/subnets-main-list.json +107 -3
  15. package/catalox-seeds/inputs/list-descriptors/vulnerabilities-exploitability-analysis-list.json +29 -0
  16. package/catalox-seeds/inputs/list-descriptors/vulnerabilities-groups-main-list.json +98 -0
  17. package/catalox-seeds/inputs/list-descriptors/vulnerabilities-main-list.json +9 -1
  18. package/catalox-seeds/inputs/list-descriptors/vulnerabilities-observations-list.json +43 -0
  19. package/catalox-seeds/inputs/list-descriptors/vulnerabilities-triage-analysis-list.json +30 -0
  20. package/catalox-seeds/inputs/list-descriptors/vulnerable-assets-list.json +102 -0
  21. package/catalox-seeds/memorix-retrieval-descriptors.manifest.json +2803 -331
  22. package/dist/analysis/analyze-vulnerability-coverage.d.ts +101 -0
  23. package/dist/analysis/analyze-vulnerability-coverage.d.ts.map +1 -0
  24. package/dist/analysis/analyze-vulnerability-coverage.js +150 -0
  25. package/dist/analysis/analyze-vulnerability-coverage.js.map +1 -0
  26. package/dist/analysis/count-assets-with-vulnerabilities.d.ts +89 -0
  27. package/dist/analysis/count-assets-with-vulnerabilities.d.ts.map +1 -0
  28. package/dist/analysis/count-assets-with-vulnerabilities.js +143 -0
  29. package/dist/analysis/count-assets-with-vulnerabilities.js.map +1 -0
  30. package/dist/analysis/derive-subnet-ip.d.ts +18 -0
  31. package/dist/analysis/derive-subnet-ip.d.ts.map +1 -0
  32. package/dist/analysis/derive-subnet-ip.js +32 -0
  33. package/dist/analysis/derive-subnet-ip.js.map +1 -0
  34. package/dist/descriptors/content-type-labels.d.ts.map +1 -1
  35. package/dist/descriptors/content-type-labels.js +4 -5
  36. package/dist/descriptors/content-type-labels.js.map +1 -1
  37. package/dist/descriptors/descriptor-types.d.ts +86 -0
  38. package/dist/descriptors/descriptor-types.d.ts.map +1 -1
  39. package/dist/descriptors/validate-descriptor.d.ts +1 -0
  40. package/dist/descriptors/validate-descriptor.d.ts.map +1 -1
  41. package/dist/descriptors/validate-descriptor.js +27 -0
  42. package/dist/descriptors/validate-descriptor.js.map +1 -1
  43. package/dist/explorer/collection-records.d.ts.map +1 -1
  44. package/dist/explorer/collection-records.js +22 -2
  45. package/dist/explorer/collection-records.js.map +1 -1
  46. package/dist/explorer/raw-collection-records.d.ts +2 -0
  47. package/dist/explorer/raw-collection-records.d.ts.map +1 -1
  48. package/dist/explorer/raw-collection-records.js +1 -1
  49. package/dist/explorer/raw-collection-records.js.map +1 -1
  50. package/dist/index.d.ts +3 -2
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +2 -1
  53. package/dist/index.js.map +1 -1
  54. package/dist/mongo/env.d.ts +18 -0
  55. package/dist/mongo/env.d.ts.map +1 -1
  56. package/dist/mongo/env.js +82 -1
  57. package/dist/mongo/env.js.map +1 -1
  58. package/dist/retrieval/fetch-list.d.ts.map +1 -1
  59. package/dist/retrieval/fetch-list.js +3 -1
  60. package/dist/retrieval/fetch-list.js.map +1 -1
  61. package/dist/retrieval/fetch-narratives.d.ts +13 -0
  62. package/dist/retrieval/fetch-narratives.d.ts.map +1 -1
  63. package/dist/retrieval/fetch-narratives.js +130 -10
  64. package/dist/retrieval/fetch-narratives.js.map +1 -1
  65. package/dist/retrieval/narrative-list-filters.d.ts +30 -0
  66. package/dist/retrieval/narrative-list-filters.d.ts.map +1 -0
  67. package/dist/retrieval/narrative-list-filters.js +179 -0
  68. package/dist/retrieval/narrative-list-filters.js.map +1 -0
  69. package/dist/retrieval/resolve-filters.d.ts +11 -1
  70. package/dist/retrieval/resolve-filters.d.ts.map +1 -1
  71. package/dist/retrieval/resolve-filters.js +34 -7
  72. package/dist/retrieval/resolve-filters.js.map +1 -1
  73. package/dist/seeds/default-seed-spec.d.ts.map +1 -1
  74. package/dist/seeds/default-seed-spec.js +9 -0
  75. package/dist/seeds/default-seed-spec.js.map +1 -1
  76. package/dist/tests/analyze-vulnerability-coverage.test.d.ts +2 -0
  77. package/dist/tests/analyze-vulnerability-coverage.test.d.ts.map +1 -0
  78. package/dist/tests/analyze-vulnerability-coverage.test.js +66 -0
  79. package/dist/tests/analyze-vulnerability-coverage.test.js.map +1 -0
  80. package/dist/tests/count-assets-with-vulnerabilities.test.d.ts +2 -0
  81. package/dist/tests/count-assets-with-vulnerabilities.test.d.ts.map +1 -0
  82. package/dist/tests/count-assets-with-vulnerabilities.test.js +95 -0
  83. package/dist/tests/count-assets-with-vulnerabilities.test.js.map +1 -0
  84. package/dist/tests/derive-subnet-ip.test.d.ts +2 -0
  85. package/dist/tests/derive-subnet-ip.test.d.ts.map +1 -0
  86. package/dist/tests/derive-subnet-ip.test.js +17 -0
  87. package/dist/tests/derive-subnet-ip.test.js.map +1 -0
  88. package/dist/tests/env.test.js +1 -1
  89. package/dist/tests/env.test.js.map +1 -1
  90. package/dist/tests/fetch-narratives.test.js +191 -5
  91. package/dist/tests/fetch-narratives.test.js.map +1 -1
  92. package/dist/tests/resolve-filters.test.js +81 -4
  93. package/dist/tests/resolve-filters.test.js.map +1 -1
  94. package/docs/MEMORIX-CATALOX-CONTRACTS.md +2 -0
  95. package/package.json +5 -5
@@ -29,14 +29,9 @@
29
29
  "collection": "subnets-snapshots",
30
30
  "isCanonical": true
31
31
  },
32
- "core": {
33
- "postfix": "core",
34
- "collection": "subnets-core",
35
- "isCanonical": false
36
- },
37
- "inferences": {
38
- "postfix": "inferences",
39
- "collection": "subnets-inferences",
32
+ "discovery": {
33
+ "postfix": "discovery",
34
+ "collection": "subnets-discovery",
40
35
  "isCanonical": false
41
36
  },
42
37
  "scoped": {
@@ -48,6 +43,24 @@
48
43
  "postfix": "legacy",
49
44
  "collection": "subnets-legacy",
50
45
  "isCanonical": false
46
+ },
47
+ "analysis": {
48
+ "postfix": "analysis",
49
+ "collection": "subnets-analysis",
50
+ "dataRoot": "data",
51
+ "isCanonical": false
52
+ }
53
+ },
54
+ "rootProperties": {
55
+ "possiblePaths": {
56
+ "label": "Possible Paths",
57
+ "source": {
58
+ "contentType": "snapshots",
59
+ "path": "possiblePaths"
60
+ },
61
+ "valueShape": "object",
62
+ "description": "Subnet-specific topology path facts stored at the snapshot root.",
63
+ "managed": true
51
64
  }
52
65
  },
53
66
  "properties": {
@@ -272,6 +285,100 @@
272
285
  "item": true,
273
286
  "valueType": "string"
274
287
  },
288
+ "assetsCount": {
289
+ "label": "Assets #",
290
+ "source": {
291
+ "contentType": "snapshots",
292
+ "path": "analytics.assets.total"
293
+ },
294
+ "humanReadable": true,
295
+ "sortable": true,
296
+ "filterable": true,
297
+ "list": true,
298
+ "item": true,
299
+ "valueType": "number",
300
+ "format": "count"
301
+ },
302
+ "findingsCount": {
303
+ "label": "Findings #",
304
+ "source": {
305
+ "contentType": "snapshots",
306
+ "path": "analytics.findings.total"
307
+ },
308
+ "humanReadable": true,
309
+ "sortable": true,
310
+ "filterable": true,
311
+ "list": true,
312
+ "item": true,
313
+ "valueType": "number",
314
+ "format": "count"
315
+ },
316
+ "vulnerabilitiesCount": {
317
+ "label": "Vulnerabilities #",
318
+ "source": {
319
+ "contentType": "snapshots",
320
+ "path": "analytics.vulnerabilities.total"
321
+ },
322
+ "humanReadable": true,
323
+ "sortable": true,
324
+ "filterable": true,
325
+ "list": true,
326
+ "item": true,
327
+ "valueType": "number",
328
+ "format": "count"
329
+ },
330
+ "criticalVulnerabilities": {
331
+ "label": "Critical Vulnerabilities",
332
+ "source": {
333
+ "contentType": "snapshots",
334
+ "path": "analytics.vulnerabilities.critical"
335
+ },
336
+ "humanReadable": true,
337
+ "sortable": true,
338
+ "filterable": true,
339
+ "list": true,
340
+ "item": true,
341
+ "valueType": "number"
342
+ },
343
+ "highVulnerabilities": {
344
+ "label": "High Vulnerabilities",
345
+ "source": {
346
+ "contentType": "snapshots",
347
+ "path": "analytics.vulnerabilities.high"
348
+ },
349
+ "humanReadable": true,
350
+ "sortable": true,
351
+ "filterable": true,
352
+ "list": true,
353
+ "item": true,
354
+ "valueType": "number"
355
+ },
356
+ "mediumVulnerabilities": {
357
+ "label": "Medium Vulnerabilities",
358
+ "source": {
359
+ "contentType": "snapshots",
360
+ "path": "analytics.vulnerabilities.medium"
361
+ },
362
+ "humanReadable": true,
363
+ "sortable": true,
364
+ "filterable": true,
365
+ "list": true,
366
+ "item": true,
367
+ "valueType": "number"
368
+ },
369
+ "lowVulnerabilities": {
370
+ "label": "Low Vulnerabilities",
371
+ "source": {
372
+ "contentType": "snapshots",
373
+ "path": "analytics.vulnerabilities.low"
374
+ },
375
+ "humanReadable": true,
376
+ "sortable": true,
377
+ "filterable": true,
378
+ "list": true,
379
+ "item": true,
380
+ "valueType": "number"
381
+ },
275
382
  "quarantineReason": {
276
383
  "label": "Quarantine Reason",
277
384
  "source": {
@@ -284,11 +391,75 @@
284
391
  "list": false,
285
392
  "item": true,
286
393
  "valueType": "string"
394
+ },
395
+ "analysisOverview": {
396
+ "label": "Overview",
397
+ "source": { "contentType": "analysis", "path": "data.overview" },
398
+ "humanReadable": false,
399
+ "list": false,
400
+ "item": true,
401
+ "valueType": "object"
402
+ },
403
+ "analysisOverviewSummary": {
404
+ "label": "Overview Summary",
405
+ "source": { "contentType": "analysis", "path": "data.overview.summary" },
406
+ "humanReadable": true,
407
+ "list": true,
408
+ "item": true,
409
+ "valueType": "string"
410
+ },
411
+ "analysisRole": {
412
+ "label": "Role",
413
+ "source": { "contentType": "analysis", "path": "data.cyberRoleInterpretation" },
414
+ "humanReadable": false,
415
+ "list": false,
416
+ "item": true,
417
+ "valueType": "object"
418
+ },
419
+ "analysisExposure": {
420
+ "label": "Exposure",
421
+ "source": { "contentType": "analysis", "path": "data.externalAndLowerTrustReachability" },
422
+ "humanReadable": false,
423
+ "list": false,
424
+ "item": true,
425
+ "valueType": "object"
426
+ },
427
+ "analysisTrust": {
428
+ "label": "Trust",
429
+ "source": { "contentType": "analysis", "path": "data.trustPositionInterpretation" },
430
+ "humanReadable": false,
431
+ "list": false,
432
+ "item": true,
433
+ "valueType": "object"
434
+ },
435
+ "analysisAttackPath": {
436
+ "label": "Attack Path",
437
+ "source": { "contentType": "analysis", "path": "data.possibleAttackPathAnalysis" },
438
+ "humanReadable": false,
439
+ "list": false,
440
+ "item": true,
441
+ "valueType": "object"
442
+ },
443
+ "analysisMovement": {
444
+ "label": "Movement",
445
+ "source": { "contentType": "analysis", "path": "data.outboundAndBlastPathInterpretation" },
446
+ "humanReadable": false,
447
+ "list": false,
448
+ "item": true,
449
+ "valueType": "object"
450
+ },
451
+ "analysisContext": {
452
+ "label": "Context",
453
+ "source": { "contentType": "analysis", "path": "data.aggregateContextInterpretation" },
454
+ "humanReadable": false,
455
+ "list": false,
456
+ "item": true,
457
+ "valueType": "object"
287
458
  }
288
459
  },
289
460
  "associatedProperties": [
290
461
  {
291
- "name": "associatedChildren",
462
+ "name": "associatedAssetsSnapshots",
292
463
  "contentType": "snapshots",
293
464
  "kind": "associated",
294
465
  "valueShape": "array<object>",
@@ -298,7 +469,94 @@
298
469
  "managed": true,
299
470
  "refreshRuleKey": "subnets.assets.snapshots.by-cidr",
300
471
  "sourceCollection": "assets-snapshots"
472
+ },
473
+ {
474
+ "name": "associatedTopologyZonesAnalysis",
475
+ "contentType": "snapshots",
476
+ "kind": "associated",
477
+ "valueShape": "array<object>",
478
+ "linkedObjectType": "topology-zones",
479
+ "linkedContentType": "analysis",
480
+ "description": "Zone cyber-analysis joined from subnet data.zone to topology-zones-analysis.data.name.",
481
+ "managed": true,
482
+ "refreshRuleKey": "subnets.topology-zones.analysis.by-zone-name",
483
+ "sourceCollection": "topology-zones-analysis"
301
484
  }
302
485
  ],
486
+ "processing": {
487
+ "entityRoutes": [
488
+ {
489
+ "routeKey": "zones-to-subnets",
490
+ "parentObjectType": "topology-zones",
491
+ "childObjectType": "subnets",
492
+ "relationshipName": "subnetZone",
493
+ "direction": "parentToChild",
494
+ "source": {
495
+ "contentType": "snapshots",
496
+ "path": "data.zone"
497
+ },
498
+ "target": {
499
+ "contentType": "snapshots",
500
+ "path": "data.name"
501
+ }
502
+ }
503
+ ],
504
+ "resolvers": [
505
+ {
506
+ "processorId": "subnets.subnet-key",
507
+ "resolverType": "subnet-key",
508
+ "kind": "function",
509
+ "config": {
510
+ "mode": "from-cidr",
511
+ "sourcePath": "data.cidr"
512
+ }
513
+ },
514
+ {
515
+ "processorId": "subnets.zone-from-topology",
516
+ "resolverType": "zone-from-topology",
517
+ "kind": "function",
518
+ "config": {
519
+ "onlyWhenZoneIs": "UNKNOWN",
520
+ "topologyRaw": {
521
+ "db": "memorix-knowledge",
522
+ "collection": "topology-raw"
523
+ },
524
+ "zonesRegistry": {
525
+ "db": "neo-memorix-entities",
526
+ "collection": "topology-zones-snapshots"
527
+ }
528
+ }
529
+ }
530
+ ],
531
+ "insightStages": [
532
+ {
533
+ "processorId": "network.cidr-topology-path-resolver",
534
+ "kind": "function",
535
+ "inputKind": "cidr",
536
+ "outputKind": "cidr-path-facts",
537
+ "writeToInsights": false,
538
+ "sources": {
539
+ "topologyDb": "memorix-knowledge",
540
+ "topologyCollection": "topology-raw"
541
+ }
542
+ },
543
+ {
544
+ "processorId": "network.cidr-zone-path-insights",
545
+ "kind": "function",
546
+ "inputKind": "cidr-path-facts",
547
+ "outputKind": "insights",
548
+ "writeToInsights": true,
549
+ "sources": {
550
+ "zonesCollection": "topology-zones-snapshots"
551
+ }
552
+ }
553
+ ],
554
+ "associatedContent": {
555
+ "rollParentSnapshots": true,
556
+ "excludePostfixes": [
557
+ "raw"
558
+ ]
559
+ }
560
+ },
303
561
  "relations": {}
304
562
  }
@@ -0,0 +1,85 @@
1
+ {
2
+ "id": "topology-zones",
3
+ "entityName": "topology-zones",
4
+ "defaultListDescriptorId": "topology-zones-main-list",
5
+ "defaultItemDescriptorId": "topology-zone-detail-item",
6
+ "target": "entity",
7
+ "collectionPrefix": "topology-zones",
8
+ "identity": {
9
+ "allowedIdFields": ["recordId"],
10
+ "requiredExactlyOne": true,
11
+ "defaultIdField": "recordId",
12
+ "conceptIdentifier": {
13
+ "kind": "zoneName",
14
+ "path": "concept.identifier.zoneName"
15
+ }
16
+ },
17
+ "defaults": {
18
+ "canonicalContentType": "snapshots",
19
+ "dataRoot": "data",
20
+ "effectiveDatePath": "capturedAt",
21
+ "fallbackEffectiveDatePaths": []
22
+ },
23
+ "contentTypes": {
24
+ "snapshots": {
25
+ "postfix": "snapshots",
26
+ "collection": "topology-zones-snapshots",
27
+ "isCanonical": true
28
+ },
29
+ "analysis": {
30
+ "postfix": "analysis",
31
+ "collection": "topology-zones-analysis",
32
+ "isCanonical": false
33
+ },
34
+ "core": {
35
+ "postfix": "core",
36
+ "collection": "topology-zones-core",
37
+ "isCanonical": false
38
+ }
39
+ },
40
+ "properties": {
41
+ "name": {
42
+ "label": "Zone Name",
43
+ "source": { "contentType": "snapshots", "path": "data.name" },
44
+ "humanReadable": true,
45
+ "sortable": true,
46
+ "filterable": true,
47
+ "list": true,
48
+ "item": true,
49
+ "valueType": "string"
50
+ },
51
+ "zoneClass": {
52
+ "label": "Zone Class",
53
+ "source": { "contentType": "snapshots", "path": "data.zoneClass" },
54
+ "humanReadable": true,
55
+ "sortable": true,
56
+ "filterable": true,
57
+ "list": true,
58
+ "item": true,
59
+ "valueType": "string"
60
+ },
61
+ "apparentRole": {
62
+ "label": "Apparent Role",
63
+ "source": { "contentType": "analysis", "path": "data.apparentRole" },
64
+ "humanReadable": true,
65
+ "sortable": false,
66
+ "filterable": true,
67
+ "list": false,
68
+ "item": true,
69
+ "valueType": "string"
70
+ },
71
+ "shortAnalysis": {
72
+ "label": "Short Analysis",
73
+ "source": { "contentType": "analysis", "path": "data.shortAnalysis" },
74
+ "humanReadable": true,
75
+ "sortable": false,
76
+ "filterable": false,
77
+ "list": false,
78
+ "item": true,
79
+ "valueType": "string"
80
+ }
81
+ },
82
+ "associatedProperties": [],
83
+ "processing": {},
84
+ "relations": {}
85
+ }
@@ -30,9 +30,9 @@
30
30
  "dataRoot": "data",
31
31
  "isCanonical": true
32
32
  },
33
- "inferences": {
34
- "postfix": "inferences",
35
- "collection": "vulnerabilities-groups-inferences",
33
+ "discovery": {
34
+ "postfix": "discovery",
35
+ "collection": "vulnerabilities-groups-discovery",
36
36
  "dataRoot": "data",
37
37
  "isCanonical": false
38
38
  },
@@ -108,9 +108,270 @@
108
108
  "list": true,
109
109
  "item": true,
110
110
  "valueType": "number"
111
+ },
112
+ "affectedEntitiesCount": {
113
+ "label": "Affected #",
114
+ "source": {
115
+ "contentType": "snapshots",
116
+ "path": "analytics.affectedAssets.total"
117
+ },
118
+ "humanReadable": true,
119
+ "sortable": true,
120
+ "filterable": false,
121
+ "list": true,
122
+ "item": true,
123
+ "valueType": "number",
124
+ "format": "count"
125
+ },
126
+ "findingsCount": {
127
+ "label": "Findings #",
128
+ "source": {
129
+ "contentType": "snapshots",
130
+ "path": "analytics.findings.total"
131
+ },
132
+ "humanReadable": true,
133
+ "sortable": true,
134
+ "filterable": false,
135
+ "list": true,
136
+ "item": true,
137
+ "valueType": "number",
138
+ "format": "count"
139
+ },
140
+ "vulnerabilitiesCount": {
141
+ "label": "Vulnerabilities #",
142
+ "source": {
143
+ "contentType": "snapshots",
144
+ "path": "analytics.vulnerabilities.total"
145
+ },
146
+ "humanReadable": true,
147
+ "sortable": true,
148
+ "filterable": false,
149
+ "list": true,
150
+ "item": true,
151
+ "valueType": "number",
152
+ "format": "count"
153
+ },
154
+ "criticalVulnerabilities": {
155
+ "label": "Critical Vulnerabilities",
156
+ "source": {
157
+ "contentType": "snapshots",
158
+ "path": "analytics.vulnerabilities.critical"
159
+ },
160
+ "humanReadable": true,
161
+ "sortable": true,
162
+ "filterable": false,
163
+ "list": true,
164
+ "item": true,
165
+ "valueType": "number"
166
+ },
167
+ "highVulnerabilities": {
168
+ "label": "High Vulnerabilities",
169
+ "source": {
170
+ "contentType": "snapshots",
171
+ "path": "analytics.vulnerabilities.high"
172
+ },
173
+ "humanReadable": true,
174
+ "sortable": true,
175
+ "filterable": false,
176
+ "list": true,
177
+ "item": true,
178
+ "valueType": "number"
179
+ },
180
+ "mediumVulnerabilities": {
181
+ "label": "Medium Vulnerabilities",
182
+ "source": {
183
+ "contentType": "snapshots",
184
+ "path": "analytics.vulnerabilities.medium"
185
+ },
186
+ "humanReadable": true,
187
+ "sortable": true,
188
+ "filterable": false,
189
+ "list": true,
190
+ "item": true,
191
+ "valueType": "number"
192
+ },
193
+ "lowVulnerabilities": {
194
+ "label": "Low Vulnerabilities",
195
+ "source": {
196
+ "contentType": "snapshots",
197
+ "path": "analytics.vulnerabilities.low"
198
+ },
199
+ "humanReadable": true,
200
+ "sortable": true,
201
+ "filterable": false,
202
+ "list": true,
203
+ "item": true,
204
+ "valueType": "number"
205
+ },
206
+ "riskLevel": {
207
+ "label": "Risk Level",
208
+ "source": {
209
+ "contentType": "snapshots",
210
+ "path": "data.enrichment.riskLevel"
211
+ },
212
+ "humanReadable": true,
213
+ "sortable": true,
214
+ "filterable": true,
215
+ "list": true,
216
+ "item": true,
217
+ "valueType": "string"
218
+ },
219
+ "priorityScore": {
220
+ "label": "Priority Score",
221
+ "source": {
222
+ "contentType": "snapshots",
223
+ "path": "data.enrichment.priorityScore"
224
+ },
225
+ "humanReadable": true,
226
+ "sortable": true,
227
+ "filterable": true,
228
+ "list": true,
229
+ "item": true,
230
+ "valueType": "number"
231
+ },
232
+ "knownExploited": {
233
+ "label": "Known Exploited (KEV)",
234
+ "source": {
235
+ "contentType": "snapshots",
236
+ "path": "data.enrichment.knownExploited"
237
+ },
238
+ "humanReadable": true,
239
+ "sortable": true,
240
+ "filterable": true,
241
+ "list": true,
242
+ "item": true,
243
+ "valueType": "string"
244
+ },
245
+ "vulnerabilityType": {
246
+ "label": "Type",
247
+ "source": {
248
+ "contentType": "snapshots",
249
+ "path": "data.vulnerability_type"
250
+ },
251
+ "humanReadable": true,
252
+ "sortable": true,
253
+ "filterable": true,
254
+ "list": true,
255
+ "item": true,
256
+ "valueType": "string"
257
+ },
258
+ "analysisBriefSummary": {
259
+ "label": "Brief Summary",
260
+ "source": { "contentType": "analysis", "path": "data.brief.summary" },
261
+ "humanReadable": true,
262
+ "list": true,
263
+ "item": true,
264
+ "valueType": "string"
265
+ },
266
+ "analysisBriefAnalysis": {
267
+ "label": "Brief Analysis",
268
+ "source": { "contentType": "analysis", "path": "data.brief.analysis" },
269
+ "humanReadable": true,
270
+ "list": true,
271
+ "item": true,
272
+ "valueType": "string"
273
+ },
274
+ "analysisBriefEvidence": {
275
+ "label": "Brief Evidence",
276
+ "source": { "contentType": "analysis", "path": "data.brief.evidence" },
277
+ "humanReadable": true,
278
+ "list": false,
279
+ "item": true,
280
+ "valueType": "string"
281
+ },
282
+ "analysisBriefGaps": {
283
+ "label": "Brief Gaps",
284
+ "source": { "contentType": "analysis", "path": "data.brief.gaps" },
285
+ "humanReadable": true,
286
+ "list": false,
287
+ "item": true,
288
+ "valueType": "string"
289
+ },
290
+ "analysisApplicability": {
291
+ "label": "Applicability",
292
+ "source": { "contentType": "analysis", "path": "data.applicability" },
293
+ "humanReadable": false,
294
+ "list": false,
295
+ "item": true,
296
+ "valueType": "object"
297
+ },
298
+ "analysisExploitability": {
299
+ "label": "Exploitability",
300
+ "source": { "contentType": "analysis", "path": "data.exploitability" },
301
+ "humanReadable": false,
302
+ "list": false,
303
+ "item": true,
304
+ "valueType": "object"
305
+ },
306
+ "analysisImpact": {
307
+ "label": "Impact",
308
+ "source": { "contentType": "analysis", "path": "data.impact" },
309
+ "humanReadable": false,
310
+ "list": false,
311
+ "item": true,
312
+ "valueType": "object"
313
+ },
314
+ "analysisThreat": {
315
+ "label": "Threat",
316
+ "source": { "contentType": "analysis", "path": "data.threat" },
317
+ "humanReadable": false,
318
+ "list": false,
319
+ "item": true,
320
+ "valueType": "object"
321
+ },
322
+ "analysisMitre": {
323
+ "label": "MITRE",
324
+ "source": { "contentType": "analysis", "path": "data.mitre" },
325
+ "humanReadable": false,
326
+ "list": false,
327
+ "item": true,
328
+ "valueType": "array"
111
329
  }
112
330
  },
113
331
  "associatedProperties": [],
332
+ "narratives": {
333
+ "has-none-severity": {
334
+ "label": "None severity",
335
+ "kind": "association-common-property",
336
+ "sourceRef": "severity",
337
+ "property": "severity",
338
+ "value": "none"
339
+ },
340
+ "has-low-severity": {
341
+ "label": "Low severity",
342
+ "kind": "association-common-property",
343
+ "sourceRef": "severity",
344
+ "property": "severity",
345
+ "value": "low"
346
+ },
347
+ "has-medium-severity": {
348
+ "label": "Medium severity",
349
+ "kind": "association-common-property",
350
+ "sourceRef": "severity",
351
+ "property": "severity",
352
+ "value": "medium"
353
+ },
354
+ "has-high-severity": {
355
+ "label": "High severity",
356
+ "kind": "association-common-property",
357
+ "sourceRef": "severity",
358
+ "property": "severity",
359
+ "value": "high"
360
+ },
361
+ "has-critical-severity": {
362
+ "label": "Critical severity",
363
+ "kind": "association-common-property",
364
+ "sourceRef": "severity",
365
+ "property": "severity",
366
+ "value": "critical"
367
+ }
368
+ },
369
+ "processing": {
370
+ "associatedContent": {
371
+ "rollParentSnapshots": false,
372
+ "excludePostfixes": ["raw"]
373
+ }
374
+ },
114
375
  "relations": {
115
376
  "groupVulnerabilities": {
116
377
  "targetEntity": "vulnerabilities",