@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
@@ -41,6 +41,18 @@
41
41
  "collection": "assets-scoped",
42
42
  "dataRoot": "data",
43
43
  "isCanonical": false
44
+ },
45
+ "analysis": {
46
+ "postfix": "analysis",
47
+ "collection": "assets-analysis",
48
+ "dataRoot": "data",
49
+ "isCanonical": false
50
+ },
51
+ "decisions": {
52
+ "postfix": "decision",
53
+ "collection": "assets-decision",
54
+ "dataRoot": "data",
55
+ "isCanonical": false
44
56
  }
45
57
  },
46
58
  "properties": {
@@ -161,19 +173,6 @@
161
173
  "item": true,
162
174
  "valueType": "datetime"
163
175
  },
164
- "hasVulnerabilities": {
165
- "label": "Has Vulnerabilities",
166
- "source": {
167
- "contentType": "snapshots",
168
- "path": "data.hasVulnerabilities"
169
- },
170
- "humanReadable": true,
171
- "sortable": true,
172
- "filterable": true,
173
- "list": true,
174
- "item": true,
175
- "valueType": "boolean"
176
- },
177
176
  "criticalVulnerabilities": {
178
177
  "label": "Critical Vulnerabilities",
179
178
  "source": {
@@ -226,6 +225,20 @@
226
225
  "item": true,
227
226
  "valueType": "number"
228
227
  },
228
+ "findingsCount": {
229
+ "label": "Findings",
230
+ "source": {
231
+ "contentType": "snapshots",
232
+ "path": "analytics.findings.total"
233
+ },
234
+ "humanReadable": true,
235
+ "sortable": true,
236
+ "filterable": true,
237
+ "list": true,
238
+ "item": true,
239
+ "valueType": "number",
240
+ "format": "count"
241
+ },
229
242
  "potentialImpactLevel": {
230
243
  "label": "Potential Impact",
231
244
  "source": {
@@ -290,11 +303,146 @@
290
303
  "list": false,
291
304
  "item": true,
292
305
  "valueType": "object"
306
+ },
307
+ "observedUsers": {
308
+ "label": "Users",
309
+ "source": {
310
+ "contentType": "snapshots",
311
+ "path": "data.observedUsers"
312
+ },
313
+ "humanReadable": true,
314
+ "sortable": false,
315
+ "filterable": true,
316
+ "list": true,
317
+ "item": true,
318
+ "valueType": "array"
319
+ },
320
+ "analysisBriefSummary": {
321
+ "label": "Brief Summary",
322
+ "source": { "contentType": "analysis", "path": "data.brief.summary" },
323
+ "humanReadable": true,
324
+ "list": true,
325
+ "item": true,
326
+ "valueType": "string"
327
+ },
328
+ "analysisBriefTakeaway": {
329
+ "label": "Brief Takeaway",
330
+ "source": { "contentType": "analysis", "path": "data.brief.takeaway" },
331
+ "humanReadable": true,
332
+ "list": false,
333
+ "item": true,
334
+ "valueType": "string"
335
+ },
336
+ "analysisBriefConfidence": {
337
+ "label": "Brief Confidence",
338
+ "source": { "contentType": "analysis", "path": "data.brief.confidence" },
339
+ "humanReadable": true,
340
+ "list": false,
341
+ "item": true,
342
+ "valueType": "string"
343
+ },
344
+ "analysisContext": {
345
+ "label": "Context",
346
+ "source": { "contentType": "analysis", "path": "data.context" },
347
+ "humanReadable": false,
348
+ "list": false,
349
+ "item": true,
350
+ "valueType": "object"
351
+ },
352
+ "analysisReachability": {
353
+ "label": "Reachability",
354
+ "source": { "contentType": "analysis", "path": "data.reachability" },
355
+ "humanReadable": false,
356
+ "list": false,
357
+ "item": true,
358
+ "valueType": "object"
359
+ },
360
+ "analysisPaths": {
361
+ "label": "Paths",
362
+ "source": { "contentType": "analysis", "path": "data.paths" },
363
+ "humanReadable": false,
364
+ "list": false,
365
+ "item": true,
366
+ "valueType": "object"
367
+ },
368
+ "attackPathExistence": {
369
+ "label": "Attack Path Existence",
370
+ "source": { "contentType": "analysis", "path": "data.paths.attackPathExistence" },
371
+ "humanReadable": true,
372
+ "sortable": true,
373
+ "filterable": true,
374
+ "list": true,
375
+ "item": true,
376
+ "valueType": "string"
377
+ },
378
+ "decisionOverviewSummary": {
379
+ "label": "Decision Summary",
380
+ "source": { "contentType": "decisions", "path": "data.overview.summary" },
381
+ "humanReadable": true,
382
+ "list": true,
383
+ "item": true,
384
+ "valueType": "string"
385
+ },
386
+ "decisionOverviewDetailedAnalysis": {
387
+ "label": "Decision Detailed Analysis",
388
+ "source": { "contentType": "decisions", "path": "data.overview.detailedAnalysis" },
389
+ "humanReadable": true,
390
+ "list": true,
391
+ "item": true,
392
+ "valueType": "string"
393
+ },
394
+ "decisionExploitability": {
395
+ "label": "Exploitability Analysis",
396
+ "source": { "contentType": "decisions", "path": "data.exploitability" },
397
+ "humanReadable": false,
398
+ "list": false,
399
+ "item": true,
400
+ "valueType": "object"
401
+ },
402
+ "decisionLabel": {
403
+ "label": "Decision",
404
+ "source": { "contentType": "decisions", "path": "data.decision.decision" },
405
+ "humanReadable": true,
406
+ "sortable": true,
407
+ "filterable": true,
408
+ "list": true,
409
+ "item": true,
410
+ "valueType": "string"
411
+ },
412
+ "decisionStatus": {
413
+ "label": "Decision Status",
414
+ "source": { "contentType": "decisions", "path": "data.decision.status" },
415
+ "humanReadable": true,
416
+ "sortable": true,
417
+ "filterable": true,
418
+ "list": true,
419
+ "item": true,
420
+ "valueType": "string"
421
+ },
422
+ "decisionRiskScore": {
423
+ "label": "Decision Score",
424
+ "source": { "contentType": "decisions", "path": "data.decision.riskScore" },
425
+ "humanReadable": true,
426
+ "sortable": true,
427
+ "filterable": true,
428
+ "list": true,
429
+ "item": true,
430
+ "valueType": "number"
431
+ },
432
+ "decisionUrgencyScore": {
433
+ "label": "Urgency Score",
434
+ "source": { "contentType": "decisions", "path": "data.decision.urgencyScore" },
435
+ "humanReadable": true,
436
+ "sortable": true,
437
+ "filterable": true,
438
+ "list": true,
439
+ "item": true,
440
+ "valueType": "number"
293
441
  }
294
442
  },
295
443
  "associatedProperties": [
296
444
  {
297
- "name": "associatedData",
445
+ "name": "associatedSubnetsSnapshots",
298
446
  "contentType": "snapshots",
299
447
  "kind": "associated",
300
448
  "valueShape": "array<object>",
@@ -306,19 +454,19 @@
306
454
  "sourceCollection": "subnets-snapshots"
307
455
  },
308
456
  {
309
- "name": "associatedInferred",
457
+ "name": "associatedSubnetsDiscovery",
310
458
  "contentType": "snapshots",
311
459
  "kind": "associated",
312
460
  "valueShape": "array<object>",
313
461
  "linkedObjectType": "subnets",
314
- "linkedContentType": "inferences",
315
- "description": "Subnet discovery payloads copied from subnets-inferences.data when asset data.subnetCidrs matches subnet data.cidr.",
462
+ "linkedContentType": "discovery",
463
+ "description": "Subnet discovery payloads copied from subnets-discovery.data when asset data.subnetCidrs matches subnet data.cidr.",
316
464
  "managed": true,
317
- "refreshRuleKey": "assets.subnets.inferences.by-cidr",
318
- "sourceCollection": "subnets-inferences"
465
+ "refreshRuleKey": "assets.subnets.discovery.by-cidr",
466
+ "sourceCollection": "subnets-discovery"
319
467
  },
320
468
  {
321
- "name": "associatedSiblings",
469
+ "name": "associatedAssetsSnapshots",
322
470
  "contentType": "snapshots",
323
471
  "kind": "associated",
324
472
  "valueShape": "array<object>",
@@ -328,8 +476,253 @@
328
476
  "managed": true,
329
477
  "refreshRuleKey": "assets.assets.snapshots.by-cidr",
330
478
  "sourceCollection": "assets-snapshots"
479
+ },
480
+ {
481
+ "name": "associatedTopology",
482
+ "contentType": "snapshots",
483
+ "kind": "associated",
484
+ "valueShape": "array<object>",
485
+ "linkedObjectType": "subnets",
486
+ "linkedContentType": "snapshots",
487
+ "description": "Normalized subnet topology objects derived from associatedData and canonical subnet lookup. Each item includes kind, source, cidr, zone, vr, and exposure/reachability fields. subnetId is omitted.",
488
+ "managed": true,
489
+ "refreshRuleKey": "assets.associated-topology.by-associated-data",
490
+ "sourceCollection": "subnets-snapshots"
491
+ },
492
+ {
493
+ "name": "associatedSubnetsSnapshots",
494
+ "contentType": "snapshots",
495
+ "kind": "associated",
496
+ "valueShape": "array<object>",
497
+ "linkedObjectType": "subnets",
498
+ "linkedContentType": "snapshots",
499
+ "description": "Explicit subnet snapshot payloads copied from subnets-snapshots.data when asset data.subnetCidrs matches subnet data.cidr.",
500
+ "managed": true,
501
+ "refreshRuleKey": "assets.subnets.snapshots.explicit.by-cidr",
502
+ "sourceCollection": "subnets-snapshots"
503
+ },
504
+ {
505
+ "name": "associatedSubnetsDiscovery",
506
+ "contentType": "snapshots",
507
+ "kind": "associated",
508
+ "valueShape": "array<object>",
509
+ "linkedObjectType": "subnets",
510
+ "linkedContentType": "discovery",
511
+ "description": "Explicit subnet discovery payloads copied from subnets-discovery when asset data.subnetCidrs matches subnet CIDR.",
512
+ "managed": true,
513
+ "refreshRuleKey": "assets.subnets.discovery.explicit.by-cidr",
514
+ "sourceCollection": "subnets-discovery"
515
+ },
516
+ {
517
+ "name": "associatedSubnetsAnalysis",
518
+ "contentType": "snapshots",
519
+ "kind": "associated",
520
+ "valueShape": "array<object>",
521
+ "linkedObjectType": "subnets",
522
+ "linkedContentType": "analysis",
523
+ "description": "Explicit subnet analysis payloads copied from subnets-analysis when asset data.subnetCidrs matches subnet CIDR.",
524
+ "managed": true,
525
+ "refreshRuleKey": "assets.subnets.analysis.explicit.by-cidr",
526
+ "sourceCollection": "subnets-analysis"
527
+ },
528
+ {
529
+ "name": "associatedTopologyZonesAnalysis",
530
+ "contentType": "snapshots",
531
+ "kind": "associated",
532
+ "valueShape": "array<object>",
533
+ "linkedObjectType": "topology-zones",
534
+ "linkedContentType": "analysis",
535
+ "description": "Zone cyber-analysis payloads joined by host data.zones or associatedTopology.zone to topology-zones-analysis.data.name.",
536
+ "managed": true,
537
+ "refreshRuleKey": "assets.topology-zones.analysis.by-zone-name",
538
+ "sourceCollection": "topology-zones-analysis"
539
+ },
540
+ {
541
+ "name": "associatedVulnerabilitiesAnalysis",
542
+ "contentType": "snapshots",
543
+ "kind": "associated",
544
+ "valueShape": "array<object>",
545
+ "linkedObjectType": "vulnerabilities",
546
+ "linkedContentType": "analysis",
547
+ "description": "Vulnerability analysis payloads copied from vulnerabilities-analysis.data after matching vulnerabilities-snapshots by asset IP and resolving content by snapshot recordId.",
548
+ "managed": true,
549
+ "refreshRuleKey": "assets.vulnerabilities.analysis.by-assetIp",
550
+ "sourceCollection": "vulnerabilities-analysis"
551
+ },
552
+ {
553
+ "name": "associatedTopVulnerabilitiesAnalysis",
554
+ "contentType": "snapshots",
555
+ "kind": "associated",
556
+ "valueShape": "array<object>",
557
+ "linkedObjectType": "vulnerabilities",
558
+ "linkedContentType": "analysis",
559
+ "description": "Top vulnerability analysis payloads (default 5), ranked by vulnerabilities-snapshots.data.severity after IP match and content resolve by snapshot recordId. Omitted when empty.",
560
+ "managed": true,
561
+ "top": true,
562
+ "maxItems": 5,
563
+ "refreshRuleKey": "assets.vulnerabilities.analysis.top.by-assetIp",
564
+ "sourceCollection": "vulnerabilities-analysis"
331
565
  }
332
566
  ],
567
+ "processing": {
568
+ "entityRoutes": [
569
+ {
570
+ "routeKey": "subnets-to-assets",
571
+ "parentObjectType": "subnets",
572
+ "childObjectType": "assets",
573
+ "relationshipName": "assetSubnet",
574
+ "direction": "parentToChild",
575
+ "source": {
576
+ "contentType": "snapshots",
577
+ "path": "data.subnetCidrs"
578
+ },
579
+ "target": {
580
+ "contentType": "snapshots",
581
+ "path": "data.cidr"
582
+ }
583
+ }
584
+ ],
585
+ "resolvers": [
586
+ {
587
+ "processorId": "assets.subnet-cidr",
588
+ "resolverType": "subnet-cidr",
589
+ "kind": "function",
590
+ "config": {
591
+ "mode": "resolve",
592
+ "assetIpPaths": [
593
+ "data.assetIps",
594
+ "data.assetIp"
595
+ ],
596
+ "canonicalCollection": {
597
+ "db": "neo-memorix-entities",
598
+ "collection": "subnets-snapshots"
599
+ }
600
+ }
601
+ },
602
+ {
603
+ "processorId": "assets.topology-extractor",
604
+ "resolverType": "topology-extractor",
605
+ "kind": "function",
606
+ "config": {
607
+ "mode": "from-associated-data",
608
+ "sourcePaths": [
609
+ "associatedSubnetsSnapshots"
610
+ ],
611
+ "outputPath": "associatedTopology"
612
+ }
613
+ }
614
+ ],
615
+ "associatedContent": {
616
+ "rollParentSnapshots": true,
617
+ "excludePostfixes": [
618
+ "raw"
619
+ ]
620
+ }
621
+ },
622
+ "narratives": {
623
+ "has-vulnerabilities": {
624
+ "label": "Has vulnerabilities",
625
+ "displayName": "Has vulnerabilities",
626
+ "kind": "having-signal",
627
+ "visibility": "user",
628
+ "sourceRef": "assetVulnerabilities",
629
+ "targetEntity": "vulnerabilities"
630
+ },
631
+ "has-medium-vulnerabilities": {
632
+ "label": "Has medium vulnerabilities",
633
+ "displayName": "Medium vulnerabilities",
634
+ "kind": "association-common-property",
635
+ "visibility": "user",
636
+ "sourceRef": "assetVulnerabilities",
637
+ "targetEntity": "vulnerabilities",
638
+ "property": "severity",
639
+ "value": "medium"
640
+ },
641
+ "is-triaged": {
642
+ "label": "Is triaged",
643
+ "displayName": "Triaged",
644
+ "kind": "product-narrative",
645
+ "visibility": "user"
646
+ },
647
+ "has-triage-decision": {
648
+ "label": "Has triage decision",
649
+ "displayName": "Has triage decision",
650
+ "kind": "rollup",
651
+ "visibility": "user"
652
+ },
653
+ "has-no-vulnerabilities": {
654
+ "label": "No vulnerabilities",
655
+ "displayName": "No vulnerabilities",
656
+ "kind": "product-narrative",
657
+ "visibility": "user"
658
+ },
659
+ "has-accept-decision": {
660
+ "label": "Accept",
661
+ "displayName": "Accept Risk",
662
+ "kind": "rollup",
663
+ "visibility": "user"
664
+ },
665
+ "has-mitigate-decision": {
666
+ "label": "Mitigate",
667
+ "displayName": "Mitigate",
668
+ "kind": "rollup",
669
+ "visibility": "user"
670
+ },
671
+ "has-high-or-critical-exploitability": {
672
+ "label": "High or critical exploitability",
673
+ "displayName": "High exploitability",
674
+ "kind": "rollup",
675
+ "visibility": "user"
676
+ },
677
+ "has-lateral-movement-risk": {
678
+ "label": "Lateral movement risk",
679
+ "displayName": "Lateral movement risk",
680
+ "kind": "rollup",
681
+ "visibility": "user"
682
+ },
683
+ "has-critical-predicted-impact": {
684
+ "label": "Critical predicted impact",
685
+ "displayName": "Critical impact",
686
+ "kind": "rollup",
687
+ "visibility": "user"
688
+ },
689
+ "has-high-predicted-impact": {
690
+ "label": "High predicted impact",
691
+ "displayName": "High impact",
692
+ "kind": "rollup",
693
+ "visibility": "user"
694
+ },
695
+ "has-medium-predicted-impact": {
696
+ "label": "Medium predicted impact",
697
+ "displayName": "Medium impact",
698
+ "kind": "rollup",
699
+ "visibility": "user"
700
+ },
701
+ "has-low-predicted-impact": {
702
+ "label": "Low predicted impact",
703
+ "displayName": "Low impact",
704
+ "kind": "rollup",
705
+ "visibility": "user"
706
+ },
707
+ "has-palo-alto-firewall-source": {
708
+ "label": "Palo Alto Firewall",
709
+ "displayName": "Palo Alto Firewall",
710
+ "kind": "rollup",
711
+ "visibility": "user"
712
+ },
713
+ "has-palo-alto-xdr-source": {
714
+ "label": "Palo Alto XDR",
715
+ "displayName": "Palo Alto XDR",
716
+ "kind": "rollup",
717
+ "visibility": "user"
718
+ },
719
+ "has-tenable-nessus-source": {
720
+ "label": "Tenable Nessus",
721
+ "displayName": "Tenable Nessus",
722
+ "kind": "rollup",
723
+ "visibility": "user"
724
+ }
725
+ },
333
726
  "relations": {
334
727
  "assetSubnet": {
335
728
  "targetEntity": "subnets",
@@ -343,7 +736,7 @@
343
736
  "path": "data.cidr"
344
737
  },
345
738
  "defaultMode": "array",
346
- "defaultArrayProperty": "associatedData",
739
+ "defaultArrayProperty": "associatedSubnetsSnapshots",
347
740
  "targetFields": [
348
741
  "cidr",
349
742
  "networkAddress",