da44d41555
An ingested investigation carried almost nothing: title, priority, status,
assignee and timestamps. Not a host, not an account, not a command line — so
no entity was ever indexed, and neither the pivot graph nor the AI analysis
had anything to read. Fetching the investigation's alerts did not help: that
endpoint answers with the rule name (already the investigation's title), the
alert source and an alert RRN, and nothing else.
The detection content lives in a different API. The Alert Triage API is served
under /idr/at — its own base, next to /idr/v1 and /idr/v2 — and it is where
the evidence, the actors, the MITRE T-codes and the process trees actually
are. It was missing from this package entirely.
Six read commands:
search_alerts POST /alerts/ops/search
get_alert GET /alerts/{rrn}
get_alert_evidence GET /alerts/{rrn}/evidences
get_alert_actors GET /alerts/{rrn}/actors
get_alert_process_trees POST /alerts/{rrn}/process_trees/latest
list_alert_fields GET /alerts/2/fields
search_alerts is the one that changes the shape of the feed. It returns full
alert objects — rule with its mitre_tcodes, rule_keys_of_interest, the
AI-suggested disposition, the parent investigation RRN, the status transition
timings and the log entries behind the alert — and its start_time is required
by the API, which makes it a natural incremental watermark. So the alerts can
be read directly, paginated, with no per-investigation fan-out.
Two things worth knowing before using them:
- field_ids is not optional in practice. The API returns no additional
fields when it is empty, and those additional fields are where the
hostnames, accounts and command lines are. Their ids are per-tenant dotted
paths (process.cmd_line, …), which is what list_alert_fields is for.
/alerts/fields is deprecated, hence /alerts/2/fields.
- the whole API is gated on Managed Detection and Response with access to
the Alerts experience. A key that works on every investigation endpoint
can still be refused here, so 401 and 403 are reported with that named
explanation rather than as a bare status code — a licence boundary should
not read as a bug.
Written against the published OpenAPI spec (SIEM Alerts API 39.10.0); not yet
exercised against a live tenant.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
430 lines
26 KiB
YAML
430 lines
26 KiB
YAML
id: rapid7_insightidr
|
|
name: Rapid7 InsightIDR
|
|
version: 1.1.0
|
|
description: "Rapid7 InsightIDR (REST API) — investigation ingestion and full lifecycle (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."
|
|
changelog: "1.1.0 — Add the Alert Triage API (/idr/at): search alerts, get an alert, its evidence, its actors and its process trees, plus the tenant's alert field catalogue. These carry the detection content the investigation endpoints do not — MITRE T-codes, matched rule keys, assets and accounts, command lines. MDR-gated. | 1.0.0 — Initial release: investigation ingestion (list_investigations) with an exhaustive OCSF mapper, 18 commands across investigations, alerts, custom threats, logs/LEQL search and users. API v1/v2 selectable per instance and per command."
|
|
category: siem
|
|
|
|
# Per-instance configuration. The Insight platform region selects the API host
|
|
# (https://<region>.api.insight.rapid7.com). Authentication is an Organization
|
|
# API key sent in the X-Api-Key header.
|
|
config_schema:
|
|
properties:
|
|
region:
|
|
type: string
|
|
description: "Insight platform region: us, eu, ca, au or ap"
|
|
default: us
|
|
api_key:
|
|
type: string
|
|
description: "InsightIDR Organization API key (Read/Write)"
|
|
x-soar-sensitive: true
|
|
is_v2:
|
|
type: string
|
|
description: "Use API v2 by default for investigation commands (true/false). Can be overridden per command with api_version. Defaults to true (v2)."
|
|
default: "true"
|
|
is_multi_customer:
|
|
type: string
|
|
description: "Set to true if the API key has multi-customer access (adds the multi-customer query parameter on v2 calls)."
|
|
default: "false"
|
|
required:
|
|
- region
|
|
- api_key
|
|
|
|
auth:
|
|
- id: apikey
|
|
type: api_key
|
|
in: header
|
|
name: X-Api-Key
|
|
value_template: "{{secret}}"
|
|
secret_field: api_key
|
|
|
|
commands:
|
|
# ── Ingestion ───────────────────────────────────────────────────────────────
|
|
- id: list_investigations
|
|
name: rapid7-insight-idr-list-investigations
|
|
description: "List investigations, sorted by created_time descending. Used for ingestion: results path = data. Investigations aggregate the applicable alert data and are tied to alerts and detection rules."
|
|
risk: read
|
|
inputs_schema:
|
|
properties:
|
|
api_version: { type: string, description: "API version to use: V1, V2 or Default (uses the instance default)" }
|
|
statuses: { type: string, description: "Comma-separated statuses to include (open, investigating, closed)" }
|
|
start_time: { type: string, description: "Only investigations created after this ISO-8601 timestamp (e.g. 2018-07-01T00:00:00Z). Incremental fetch watermark; V2 only." }
|
|
end_time: { type: string, description: "Only investigations created before this ISO-8601 timestamp. V2 only." }
|
|
time_range: { type: string, description: "Relative time range string (e.g. 1 week, 1 day) instead of start_time/end_time" }
|
|
sources: { type: string, description: "Comma-separated sources to include (User, Alert). V2 only." }
|
|
priorities: { type: string, description: "Comma-separated priorities to include (Unspecified, Low, Medium, High, Critical). V2 only." }
|
|
assignee_email: { type: string, description: "Only investigations assigned to this user email" }
|
|
tags: { type: string, description: "Comma-separated tags; only investigations having all of them are returned. V2 only." }
|
|
sort_field: { type: string, description: "Field to sort by (Created time, Priority, RRN Last Created Alert, Last Detection Alert). V2 only." }
|
|
sort_direction: { type: string, description: "Sort direction (ASC, DESC). V2 only." }
|
|
index: { type: string, description: "0-based page index" }
|
|
page_size: { type: string, description: "Page size (1-1000)" }
|
|
limit: { type: number, description: "Maximum number of records to retrieve (default 50)" }
|
|
required: []
|
|
outputs_schema: { properties: {} }
|
|
ingest:
|
|
results_path: data
|
|
dedup_key: rrn
|
|
incremental_field: start_time
|
|
|
|
- id: get_investigation
|
|
name: rapid7-insight-idr-get-investigation
|
|
description: "Get a single investigation by ID or Rapid7 Resource Name (RRN). With api_version=V2 the ID must be in RRN format."
|
|
risk: read
|
|
inputs_schema:
|
|
properties:
|
|
api_version: { type: string, description: "API version to use: V1, V2 or Default" }
|
|
investigation_id: { type: string, description: "Investigation ID or RRN" }
|
|
required: [investigation_id]
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: search_investigation
|
|
name: rapid7-insight-idr-search-investigation
|
|
description: "Search investigations matching the given search/sort criteria (v2)."
|
|
risk: read
|
|
inputs_schema:
|
|
properties:
|
|
start_time: { type: string, description: "ISO-8601 lower bound on created_time (default 28 days ago)" }
|
|
end_time: { type: string, description: "ISO-8601 upper bound on created_time (default now)" }
|
|
actor_asset_hostname: { type: string, description: "Comma-separated values; CONTAINS match on actor_asset_hostname" }
|
|
actor_user_name: { type: string, description: "Comma-separated values; CONTAINS match on actor_user_name" }
|
|
alert_mitre_t_codes: { type: string, description: "Comma-separated values; EQUALS match on alert_mitre_t_codes" }
|
|
alert_rule_rrn: { type: string, description: "Comma-separated values; EQUALS match on alert_rule_rrn" }
|
|
assignee_id: { type: string, description: "Comma-separated values; EQUALS match on assignee_id" }
|
|
organization_id: { type: string, description: "Comma-separated values; EQUALS match on organization_id" }
|
|
priority: { type: string, description: "Comma-separated values; EQUALS match on priority (UNSPECIFIED, LOW, MEDIUM, HIGH, CRITICAL)" }
|
|
rrn: { type: string, description: "Comma-separated values; EQUALS match on rrn" }
|
|
source: { type: string, description: "Comma-separated values; EQUALS match on source (USER, ALERT)" }
|
|
status: { type: string, description: "Comma-separated values; EQUALS match on status (OPEN, CLOSED, INVESTIGATING, WAITING)" }
|
|
title: { type: string, description: "Comma-separated values; CONTAINS match on title" }
|
|
sort: { type: string, description: "Comma-separated fields to sort by (Created time, Priority, RRN, Alert created time, Alert detection created time)" }
|
|
sort_direction: { type: string, description: "Sort direction (asc, desc)" }
|
|
index: { type: string, description: "0-based page index" }
|
|
page_size: { type: string, description: "Page size (1-1000)" }
|
|
limit: { type: number, description: "Maximum number of records to retrieve (default 50)" }
|
|
required: []
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: create_investigation
|
|
name: rapid7-insight-idr-create-investigation
|
|
description: "Create a new investigation manually (v2)."
|
|
risk: safe_write
|
|
inputs_schema:
|
|
properties:
|
|
title: { type: string, description: "Name of the investigation" }
|
|
status: { type: string, description: "Open, Investigating or Closed (default Open)" }
|
|
priority: { type: string, description: "Unspecified, Low, Medium, High or Critical (default Unspecified)" }
|
|
disposition: { type: string, description: "Undecided, Benign, Malicious or Not Applicable (default Undecided)" }
|
|
user_email_address: { type: string, description: "Email of the user to assign the investigation to" }
|
|
required: [title]
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: update_investigation
|
|
name: rapid7-insight-idr-update-investigation
|
|
description: "Update fields of an investigation by ID or RRN (v2)."
|
|
risk: safe_write
|
|
inputs_schema:
|
|
properties:
|
|
investigation_id: { type: string, description: "Investigation ID or RRN to update" }
|
|
title: { type: string, description: "Name of the investigation" }
|
|
status: { type: string, description: "Open, Investigating or Closed" }
|
|
priority: { type: string, description: "Unspecified, Low, Medium, High or Critical" }
|
|
disposition: { type: string, description: "Undecided, Benign, Malicious or Not Applicable" }
|
|
user_email_address: { type: string, description: "Email of the user to assign the investigation to" }
|
|
threat_command_free_text: { type: string, description: "Additional text when closing an associated Threat Command alert (status=Closed)" }
|
|
threat_command_close_reason: { type: string, description: "Threat Command close reason (status=Closed)" }
|
|
required: [investigation_id]
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: assign_user
|
|
name: rapid7-insight-idr-assign-user
|
|
description: "Assign a user (by email) to one or more investigations. With api_version=V2 the IDs must be in RRN format."
|
|
risk: safe_write
|
|
inputs_schema:
|
|
properties:
|
|
api_version: { type: string, description: "API version to use: V1, V2 or Default" }
|
|
investigation_id: { type: string, description: "Comma-separated investigation IDs or RRNs" }
|
|
user_email_address: { type: string, description: "Email of the user to assign" }
|
|
required: [investigation_id, user_email_address]
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: set_status
|
|
name: rapid7-insight-idr-set-status
|
|
description: "Set the status of one or more investigations. Closing requires a disposition (v2). With api_version=V2 the IDs must be in RRN format."
|
|
risk: safe_write
|
|
inputs_schema:
|
|
properties:
|
|
api_version: { type: string, description: "API version to use: V1, V2 or Default" }
|
|
investigation_id: { type: string, description: "Comma-separated investigation IDs or RRNs" }
|
|
status: { type: string, description: "open, closed, investigating or waiting" }
|
|
disposition: { type: string, description: "benign, malicious or not_applicable (status=closed, V2 only)" }
|
|
threat_command_close_reason: { type: string, description: "Threat Command close reason (status=closed, V2 only)" }
|
|
threat_command_free_text: { type: string, description: "Additional text for a Threat Command alert (status=closed, V2 only)" }
|
|
required: [investigation_id, status]
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: close_investigations
|
|
name: rapid7-insight-idr-close-investigations
|
|
description: "Bulk-close all investigations matching the request parameters within a time window (v2)."
|
|
risk: safe_write
|
|
inputs_schema:
|
|
properties:
|
|
source: { type: string, description: "Investigation source to close: ALERT, MANUAL or HUNT. ALERT requires alert_type or detection_rule_rrn." }
|
|
start_time: { type: string, description: "ISO-8601 lower bound on createTime (e.g. 2018-07-01T00:00:00Z)" }
|
|
end_time: { type: string, description: "ISO-8601 upper bound on createTime (e.g. 2018-07-28T23:59:00Z)" }
|
|
alert_type: { type: string, description: "Alert category to close. Required when source=ALERT." }
|
|
disposition: { type: string, description: "Disposition to set: Undecided, Benign, Malicious or Not Applicable (default Not Applicable)" }
|
|
detection_rule_rrn: { type: string, description: "Detection rule RRN; only investigations linked to it are closed. Requires alert_type 'Attacker Behavior Detected'." }
|
|
max_investigations_to_close: { type: string, description: "Maximum number of investigations to close (no maximum if omitted)" }
|
|
required: [source, start_time, end_time]
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: list_investigation_alerts
|
|
name: rapid7-insight-idr-list-investigation-alerts
|
|
description: "List all alerts associated with an investigation, sorted by alert created time descending (v2)."
|
|
risk: read
|
|
inputs_schema:
|
|
properties:
|
|
investigation_id: { type: string, description: "Investigation ID or RRN (V2 RRN format)" }
|
|
all_results: { type: string, description: "Return all results, overriding the limit (true/false, default false)" }
|
|
limit: { type: number, description: "Maximum number of records to retrieve (default 50)" }
|
|
required: [investigation_id]
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: list_investigation_product_alerts
|
|
name: rapid7-insight-idr-list-investigation-product-alerts
|
|
description: "List all Rapid7 product alerts (from other Rapid7 products) associated with an investigation (v2)."
|
|
risk: read
|
|
inputs_schema:
|
|
properties:
|
|
investigation_id: { type: string, description: "Investigation ID or RRN (V2 RRN format)" }
|
|
all_results: { type: string, description: "Return all results, overriding the limit (true/false, default false)" }
|
|
limit: { type: number, description: "Maximum number of records to retrieve (default 50)" }
|
|
required: [investigation_id]
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: add_threat_indicators
|
|
name: rapid7-insight-idr-add-threat-indicators
|
|
description: "Add indicators (IPs, hashes, domains, URLs) to one or more custom threats by key."
|
|
risk: safe_write
|
|
inputs_schema:
|
|
properties:
|
|
key: { type: string, description: "Comma-separated threat keys to add indicators to" }
|
|
ip_addresses: { type: string, description: "Comma-separated IP address indicators" }
|
|
hashes: { type: string, description: "Comma-separated hash indicators" }
|
|
domain_names: { type: string, description: "Comma-separated domain indicators" }
|
|
url: { type: string, description: "Comma-separated URL indicators" }
|
|
required: [key]
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: replace_threat_indicators
|
|
name: rapid7-insight-idr-replace-threat-indicators
|
|
description: "Replace all indicators of one or more custom threats: deletes existing indicators and adds the supplied ones."
|
|
risk: safe_write
|
|
inputs_schema:
|
|
properties:
|
|
key: { type: string, description: "Comma-separated threat keys to replace indicators for" }
|
|
ip_addresses: { type: string, description: "Comma-separated IP address indicators" }
|
|
hashes: { type: string, description: "Comma-separated hash indicators" }
|
|
domain_names: { type: string, description: "Comma-separated domain indicators" }
|
|
url: { type: string, description: "Comma-separated URL indicators" }
|
|
required: [key]
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: list_logs
|
|
name: rapid7-insight-idr-list-logs
|
|
description: "List all logs available to the account."
|
|
risk: read
|
|
inputs_schema:
|
|
properties: {}
|
|
required: []
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: list_log_sets
|
|
name: rapid7-insight-idr-list-log-sets
|
|
description: "List all log sets configured for the InsightIDR instance."
|
|
risk: read
|
|
inputs_schema:
|
|
properties: {}
|
|
required: []
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: query_log
|
|
name: rapid7-insight-idr-query-log
|
|
description: "Run a LEQL query against a single log, following pagination links to gather all events."
|
|
risk: read
|
|
inputs_schema:
|
|
properties:
|
|
log_id: { type: string, description: "Log key to query" }
|
|
query: { type: string, description: "Valid LEQL query (no calculations)" }
|
|
time_range: { type: string, description: "Relative time range (e.g. 1 week, 1 day). When set, start_time/end_time are not needed." }
|
|
start_time: { type: string, description: "Lower bound as a UNIX timestamp in milliseconds" }
|
|
end_time: { type: string, description: "Upper bound as a UNIX timestamp in milliseconds" }
|
|
logs_per_page: { type: string, description: "Maximum log entries per page (default 50)" }
|
|
sequence_number: { type: string, description: "Earliest sequence number of a log entry to start from" }
|
|
required: [log_id, query]
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: query_log_set
|
|
name: rapid7-insight-idr-query-log-set
|
|
description: "Run a LEQL query against a log set, following pagination links to gather all events."
|
|
risk: read
|
|
inputs_schema:
|
|
properties:
|
|
log_set_id: { type: string, description: "Log set ID to query" }
|
|
query: { type: string, description: "Valid LEQL query (no calculations)" }
|
|
time_range: { type: string, description: "Relative time range (e.g. 1 week, 1 day). When set, start_time/end_time are not needed." }
|
|
start_time: { type: string, description: "Lower bound as a UNIX timestamp in milliseconds" }
|
|
end_time: { type: string, description: "Upper bound as a UNIX timestamp in milliseconds" }
|
|
logs_per_page: { type: string, description: "Maximum log entries per page (default 50)" }
|
|
sequence_number: { type: string, description: "Earliest sequence number of a log entry to start from" }
|
|
required: [log_set_id, query]
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: download_logs
|
|
name: rapid7-insight-idr-download-logs
|
|
description: "Download raw log events for up to 10 logs over a time window, optionally filtered by a LEQL query. Returns the events as text."
|
|
risk: read
|
|
inputs_schema:
|
|
properties:
|
|
log_ids: { type: string, description: "Comma-separated log IDs to download (up to 10)" }
|
|
time_range: { type: string, description: "Relative time range (e.g. Last 4 Days). Defaults to Last 3 days when no bounds are given." }
|
|
start_time: { type: string, description: "Lower bound as a UNIX timestamp in milliseconds" }
|
|
end_time: { type: string, description: "Upper bound as a UNIX timestamp in milliseconds" }
|
|
query: { type: string, description: "LEQL query to match desired events (no calculations)" }
|
|
limit: { type: string, description: "Maximum number of events to download (cannot exceed 20 million)" }
|
|
required: [log_ids]
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: list_users
|
|
name: rapid7-insight-idr-list-users
|
|
description: "List users matching the search/sort criteria, or retrieve a single user by RRN."
|
|
risk: read
|
|
inputs_schema:
|
|
properties:
|
|
rrn: { type: string, description: "RRN of a single user to retrieve. When set, the other filters are ignored." }
|
|
first_name: { type: string, description: "Comma-separated values to match on first_name (requires search_operator)" }
|
|
last_name: { type: string, description: "Comma-separated values to match on last_name (requires search_operator)" }
|
|
name: { type: string, description: "Comma-separated values to match on name (requires search_operator)" }
|
|
search_operator: { type: string, description: "Filter operator when first_name/last_name/name are used: contains or equals" }
|
|
sort: { type: string, description: "Comma-separated fields to sort by (first_name, last_name, name)" }
|
|
sort_direction: { type: string, description: "Sort direction (asc, desc)" }
|
|
index: { type: string, description: "0-based page index" }
|
|
page_size: { type: string, description: "Page size (1-1000)" }
|
|
limit: { type: number, description: "Maximum number of records to retrieve (default 50)" }
|
|
required: []
|
|
outputs_schema: { properties: {} }
|
|
|
|
|
|
# ── Alert Triage API (/idr/at) ──────────────────────────────────────────────
|
|
# A separate API from the investigation endpoints, and the only place the
|
|
# actual detection content lives: an investigation and its /alerts list carry
|
|
# metadata (title, priority, rule name) and no evidence at all. Access is
|
|
# restricted to Managed Detection and Response customers with the Alerts
|
|
# experience — a key that works everywhere else can still be refused here,
|
|
# which the commands report as a named 401/403 rather than an empty result.
|
|
- id: search_alerts
|
|
name: rapid7-insight-idr-search-alerts
|
|
description: "Search alerts over a time window (Alert Triage API). Returns full alert details — detection rule with its MITRE T-codes, priority, status, disposition, Rapid7's AI-suggested disposition, the parent investigation RRN and the log entries behind it. Results path = alerts; use field_ids to pull the per-tenant fields (hostnames, accounts, command lines) that are otherwise absent."
|
|
risk: read
|
|
inputs_schema:
|
|
properties:
|
|
start_time: { type: string, description: "ISO-8601 start of the search window (required by the API; defaults to default_days ago). Incremental fetch watermark." }
|
|
end_time: { type: string, description: "ISO-8601 end of the search window" }
|
|
default_days: { type: string, description: "Window size in days used when start_time is absent (default 1)" }
|
|
leql: { type: string, description: "LEQL WHERE clause to match against" }
|
|
field_ids: { type: string, description: "Comma-separated additional field ids to include on each alert (see rapid7-insight-idr-list-alert-fields). Empty means no additional fields are returned." }
|
|
search_field: { type: string, description: "Comma-separated field ids for a single search term" }
|
|
search_values: { type: string, description: "Comma-separated values the search_field must match (OR'ed together)" }
|
|
search_operator: { type: string, description: "EQUALS, NOT_EQUALS, CONTAINS, GREATER_THAN or LESS_THAN (default EQUALS)" }
|
|
terms_json: { type: string, description: "Raw JSON array of search terms, for criteria the simple triple cannot express. Takes precedence over search_field/search_values." }
|
|
sort_field: { type: string, description: "Field id to sort on" }
|
|
sort_direction: { type: string, description: "ASC or DESC (default ASC)" }
|
|
rrns_only: { type: string, description: "Return only alert RRNs instead of full details (true/false)" }
|
|
index: { type: string, description: "0-based page index to start from" }
|
|
page_size: { type: string, description: "Page size" }
|
|
limit: { type: number, description: "Maximum number of alerts to retrieve (default 50)" }
|
|
required: []
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: get_alert
|
|
name: rapid7-insight-idr-get-alert
|
|
description: "Retrieve a single alert by its RRN (Alert Triage API), optionally with additional fields."
|
|
risk: read
|
|
inputs_schema:
|
|
properties:
|
|
alert_rrn: { type: string, description: "Alert RRN (rrn:alerts:<region>:<org>:alert:...)" }
|
|
field_ids: { type: string, description: "Comma-separated additional field ids to include" }
|
|
required: [alert_rrn]
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: get_alert_evidence
|
|
name: rapid7-insight-idr-get-alert-evidence
|
|
description: "Retrieve the evidence behind a single alert (Alert Triage API): the events that triggered it, the keys and values the rule matched on, and the log entries they came from."
|
|
risk: read
|
|
inputs_schema:
|
|
properties:
|
|
alert_rrn: { type: string, description: "Alert RRN" }
|
|
index: { type: string, description: "0-based page index" }
|
|
page_size: { type: string, description: "Page size" }
|
|
limit: { type: number, description: "Maximum number of evidence items (default 50)" }
|
|
required: [alert_rrn]
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: get_alert_actors
|
|
name: rapid7-insight-idr-get-alert-actors
|
|
description: "Retrieve an alert's actors (Alert Triage API): the assets, accounts and IP addresses involved, each with its display name. This is where an alert's observables come from — nothing in the investigation endpoints carries them."
|
|
risk: read
|
|
inputs_schema:
|
|
properties:
|
|
alert_rrn: { type: string, description: "Alert RRN" }
|
|
index: { type: string, description: "0-based page index" }
|
|
page_size: { type: string, description: "Page size" }
|
|
limit: { type: number, description: "Maximum number of actors (default 50)" }
|
|
required: [alert_rrn]
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: get_alert_process_trees
|
|
name: rapid7-insight-idr-get-alert-process-trees
|
|
description: "Retrieve all process trees for an alert (Alert Triage API): process name, PID, command line, executing user and file hashes, with child processes nested."
|
|
risk: read
|
|
inputs_schema:
|
|
properties:
|
|
alert_rrn: { type: string, description: "Alert RRN" }
|
|
force_refresh: { type: string, description: "Regenerate the tree instead of returning the cached one (true/false). Documented as expensive and slow — leave off unless the cached tree is stale." }
|
|
branch: { type: string, description: "Branch number to generate the process tree with" }
|
|
index: { type: string, description: "0-based page index" }
|
|
page_size: { type: string, description: "Page size" }
|
|
limit: { type: number, description: "Maximum number of trees (default 10)" }
|
|
required: [alert_rrn]
|
|
outputs_schema: { properties: {} }
|
|
|
|
- id: list_alert_fields
|
|
name: rapid7-insight-idr-list-alert-fields
|
|
description: "List the alert fields supported by the tenant (Alert Triage API v2). Field ids are dotted paths (process.cmd_line, …) and are what search_alerts and get_alert accept in field_ids — run this first to learn which ones this tenant exposes."
|
|
risk: read
|
|
inputs_schema:
|
|
properties:
|
|
path: { type: string, description: "Limit results to fields at or below this node of the dotted hierarchy" }
|
|
path_depth: { type: string, description: "Depth to round results to, after path is applied" }
|
|
index: { type: string, description: "0-based page index" }
|
|
page_size: { type: string, description: "Page size (default 200)" }
|
|
limit: { type: number, description: "Maximum number of fields to retrieve" }
|
|
required: []
|
|
outputs_schema: { properties: {} }
|
|
|
|
# ── Connectivity test ─────────────────────────────────────────────────────
|
|
- id: test_connection
|
|
name: rapid7-insight-idr-test-connection
|
|
description: "Verify connectivity and credentials (used by the Test button)."
|
|
risk: read
|
|
inputs_schema:
|
|
properties: {}
|
|
required: []
|
|
outputs_schema: { properties: {} }
|
|
|
|
ingestion:
|
|
command: list_investigations
|
|
mapper: list_investigations
|
|
default_incident_type: "Rapid7 InsightIDR Investigation"
|