GitHub
ESC

Alerts

Alerts represent security findings discovered during scanning.

Listing Alerts

# All alerts
alerts = client.alert.alerts

# Alerts for a specific URL
alerts = client.alert.alerts(base_url: "http://target.com")

# Paginated
alerts = client.alert.alerts(start: 0, count: 50)

# By risk level (0=Info, 1=Low, 2=Medium, 3=High)
alerts = client.alert.alerts(risk_id: 3)  # High only

Alert Summary

summary = client.alert.alerts_summary("http://target.com")
# => {"alertsSummary": {"High": 2, "Medium": 5, "Low": 8, "Informational": 3}}

counts = client.alert.alert_counts_by_risk("http://target.com")

Single Alert

alert = client.alert.get(42)

Iterating Alerts

alerts = client.alert.alerts(base_url: "http://target.com")
alerts["alerts"].as_a.each do |alert|
  puts "#{alert["risk"]} | #{alert["name"]} | #{alert["url"]}"
  puts "  CWE: #{alert["cweid"]}, WASC: #{alert["wascid"]}"
  puts "  #{alert["description"]}"
  puts
end

Grouped by Risk

by_risk = client.alert.alerts_by_risk(url: "http://target.com")

Managing Alerts

Delete

# Delete single alert
client.alert.delete_alert(42)

# Delete by criteria
client.alert.delete_alerts(
  base_url: "http://target.com",
  risk_id: 0  # delete Informational
)

# Delete all
client.alert.delete_all_alerts

Update

client.alert.update_alerts_risk("1,2,3", risk_id: 2)     # set to Medium
client.alert.update_alerts_confidence("1,2,3", confidence_id: 3)

Alert Filters

Suppress or change alert risk levels based on rules:

# Add global filter (suppress false positive)
client.alert_filter.add_global_alert_filter(
  rule_id: 10016,
  new_level: -1,  # -1 = False Positive
  url: ".*\\.css$"
)

# Context-specific filter
client.alert_filter.add_alert_filter(
  context_id: 1,
  rule_id: 10016,
  new_level: -1
)

# Apply filters
client.alert_filter.apply_all

# List filters
client.alert_filter.global_alert_filter_list
client.alert_filter.alert_filter_list(1)