Skip to main content

Alerts Configuration Object

Provides access to security and operational alerts from the Prisma Access Insights API in Palo Alto Networks Strata Cloud Manager.

Class Overview​

The Alerts class inherits from InsightsBaseObject and provides methods for retrieving alerts, generating statistics, and creating timeline views of alert activity.

Methods​

MethodDescriptionParametersReturn Type
list()Lists alerts with filteringseverity, status, start_time, end_time, category, etc.List[Alert]
query()Execute custom queryproperties, filter, group_by, order_by, etc.InsightsResponse
get_statistics()Get alert statisticstime_range, group_by, exclude_notificationsList[AlertStatistic]
get_timeline()Get alert timeline/histogramtime_range, interval, status, exclude_notificationsList[AlertStatistic]

Model Attributes​

AttributeTypeDescription
idstrAlert ID (mapped from alert_id)
nameOptional[str]Alert message/name (mapped from message)
severityOptional[str]Alert severity (Critical, High, Medium, Low, etc.)
severity_idOptional[int]Numeric severity identifier
statusOptional[str]Alert state (Raised, RaisedChild, Cleared)
timestampOptional[str]When alert was raised (mapped from raised_time)
updated_timeOptional[str]Last update timestamp
descriptionOptional[str]Detailed alert description
folderOptional[str]Associated folder
sourceOptional[str]Alert source
categoryOptional[str]Alert category
codeOptional[str]Alert code
impacted_resourcesOptional[List[str]]Affected resources (mapped from primary_impacted_objects)
metadataOptional[Dict[str, Any]]Additional context (mapped from resource_context)
clear_reasonOptional[str]Reason alert was cleared
ageOptional[int]Alert age in days

Exceptions​

ExceptionHTTP CodeDescription
InvalidObjectError400Invalid query parameters
MissingQueryParameterError400Missing required parameters
AuthenticationError401Authentication failed
ServerError500Internal server error

Basic Configuration​

from scm.client import Scm

client = Scm(
client_id="your_client_id",
client_secret="your_client_secret",
tsg_id="your_tsg_id"
)

alerts = client.insights.alerts

Methods​

List Alerts​

# List all alerts (default: last 30 days)
all_alerts = client.insights.alerts.list()
print(f"Found {len(all_alerts)} alerts")

# List alerts with specific severity
critical_alerts = client.insights.alerts.list(
severity=["critical", "high"]
)

# List alerts from the last 7 days
recent_alerts = client.insights.alerts.list(start_time=7)

Filtering responses:

filtered_alerts = client.insights.alerts.list(
severity=["high", "critical"],
status=["Raised"],
category="Remote Networks",
start_time=30,
max_results=100
)

for alert in filtered_alerts:
print(f"Alert: {alert.name}")
print(f" Severity: {alert.severity}")
print(f" Status: {alert.status}")
print(f" Category: {alert.category}")

Get Alert Statistics​

# Get statistics grouped by severity (default)
severity_stats = client.insights.alerts.get_statistics()
for stat in severity_stats:
print(f"Severity: {stat.severity}, Count: {stat.count}")

# Get statistics grouped by category
category_stats = client.insights.alerts.get_statistics(
time_range=90,
group_by="category",
exclude_notifications=True
)

# Get statistics grouped by state
state_stats = client.insights.alerts.get_statistics(
time_range=30,
group_by="state"
)

Get Alert Timeline​

# Get hourly timeline for the last 7 days
hourly_timeline = client.insights.alerts.get_timeline(
time_range=7,
interval="hour",
status="Raised"
)
for point in hourly_timeline:
print(f"Time: {point.state}, Count: {point.count}")

# Get daily timeline for the last 30 days
daily_timeline = client.insights.alerts.get_timeline(
time_range=30,
interval="day",
status="Raised",
exclude_notifications=True
)

# Get weekly timeline
weekly_timeline = client.insights.alerts.get_timeline(
time_range=90,
interval="week",
status="Cleared"
)

Execute Custom Query​

# Custom query with specific properties and filters
custom_query = client.insights.alerts.query(
properties=[
{"property": "alert_id"},
{"property": "message"},
{"property": "severity"},
{"property": "state"},
{"property": "raised_time"}
],
filter={
"rules": [
{"property": "severity", "operator": "in", "values": ["Critical", "High"]},
{"property": "state", "operator": "equals", "values": ["Raised"]},
{"property": "updated_time", "operator": "last_n_days", "values": ["7"]}
]
},
order_by=[{"property": "raised_time", "order": "desc"}],
limit=50
)

for item in custom_query.data:
print(f"Alert {item.get('alert_id')}: {item.get('message')}")

# Query with grouping for aggregation
aggregated_query = client.insights.alerts.query(
properties=[
{"property": "severity"},
{"property": "alert_id", "function": "distinct_count", "alias": "alert_count"}
],
group_by=["severity"],
filter={
"rules": [
{"property": "updated_time", "operator": "last_n_days", "values": ["30"]}
]
}
)

Error Handling​

from scm.exceptions import (
InvalidObjectError,
MissingQueryParameterError,
AuthenticationError,
ServerError
)

try:
alerts = client.insights.alerts.list(
severity=["invalid_severity"]
)
except InvalidObjectError as e:
print(f"Invalid parameters: {e.message}")
except MissingQueryParameterError as e:
print(f"Missing required parameter: {e.message}")
except AuthenticationError as e:
print(f"Authentication failed: {e.message}")
except ServerError as e:
print(f"Server error: {e.message}")