Files
riposte-marketplace/integrations/rapid7-insightidr/mappers/list_investigations.yaml
T
Guillaume BOURGEOIS 729c339e2f feat(rapid7-insightidr): InsightIDR integration (19 commands + OCSF ingestion)
REST API integration for Rapid7 InsightIDR. Investigation ingestion
(list_investigations) with an exhaustive OCSF mapper and a bundled default
incident type, plus 18 commands across investigations (list/get/search/
create/update/assign/set-status/bulk-close), investigation alerts and Rapid7
product alerts, custom threat indicators (add/replace), log management and
LEQL log/log-set queries with downloads, and user directory search.

API v1/v2 selectable per instance (is_v2) and per command (api_version);
multi-customer query parameter supported on v2 calls.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-27 14:00:29 +02:00

34 lines
3.4 KiB
YAML

name: "Rapid7 InsightIDR Investigations → OCSF"
description: "Maps a Rapid7 InsightIDR investigation (idr/v2/investigations, results_path = data) to OCSF Incident Finding fields. Investigations aggregate the applicable alert data; use list_investigation_alerts for per-alert detail. v1 (id) and v2 (rrn) shapes are both covered via fallbacks."
field_mappings:
title: "title"
# toSeverity maps CRITICAL→5, HIGH→3, MEDIUM→2, LOW→1; UNSPECIFIED falls back to the rule default.
severity: "priority"
# How the investigation was generated (USER / ALERT).
source: "source"
# results_path = data; source_path is JSONata over ONE investigation object.
# Paths absent from a given investigation return nothing and are skipped, so v1/v2 fallbacks are safe.
ocsf:
# ── Finding ───────────────────────────────────────────────────────
- { source_path: "rrn ? rrn : id", ocsf_field: "finding_info.uid" }
- { source_path: "title", ocsf_field: "finding_info.title" }
- { source_path: "created_time", ocsf_field: "finding_info.created_time" }
- { source_path: "last_accessed", ocsf_field: "finding_info.modified_time" }
- { source_path: "first_alert_time ? first_alert_time : alert.first_event_time", ocsf_field: "finding_info.first_seen_time" }
- { source_path: "latest_alert_time", ocsf_field: "finding_info.last_seen_time" }
- { source_path: "tags", ocsf_field: "metadata.labels" }
# ── Incident state ────────────────────────────────────────────────
- { source_path: "status", ocsf_field: "status" }
- { source_path: "priority", ocsf_field: "priority" }
- { source_path: "disposition", ocsf_field: "disposition" }
- { source_path: "source", ocsf_field: "activity_name" }
- { source_path: "responsibility", ocsf_field: "comment" }
# ── Assignee (User) ───────────────────────────────────────────────
- { source_path: "assignee.name ? assignee.name : assignee_name", ocsf_field: "assignee.name" }
- { source_path: "assignee.email ? assignee.email : assignee_email", ocsf_field: "assignee.email_addr" }
# ── Owning organization ───────────────────────────────────────────
- { source_path: "organization_id", ocsf_field: "cloud.org.uid" }
# ── Originating alert (v1 shape) ──────────────────────────────────
- { source_path: "alert.type", ocsf_field: "finding_info.analytic.name" }
- { source_path: "alert.type_description", ocsf_field: "finding_info.analytic.desc" }