Overview
This endpoint provides a quick way to retrieve the total number of open alerts currently in the UTMStack system. It’s commonly used for dashboard widgets, monitoring displays, and alert metrics.
Authorization Required: Include a valid Bearer Token in the Authorization header.
Endpoint Details
GET /api/utm-alerts/count-open-alerts Method: GET
Authentication: Bearer Token required
Response: Integer count of open alerts
Request & Response Examples
curl -X GET "https://demo.utmstack.com/api/utm-alerts/count-open-alerts" \
-H "Authorization: Bearer <your_access_token>"
Additional Code Examples
Node.js
Python
Shell Script
import axios from "axios" ;
const getOpenAlertsCount = async () => {
const token = "<your_access_token>" ;
try {
const response = await axios . get (
"https://demo.utmstack.com/api/utm-alerts/count-open-alerts" ,
{
headers: {
Authorization: `Bearer ${ token } `
}
}
);
console . log ( "Open alerts count:" , response . data );
return response . data ;
} catch ( error ) {
console . error ( "Error getting count:" , error . response ?. data || error . message );
}
};
Response Details
Successful Response
Success Response
Zero Alerts
Error Response
The response is a simple integer representing the total count of open alerts. When no open alerts exist, the response is 0. {
"error" : "Internal server error" ,
"message" : "Unable to retrieve alert count" ,
"timestamp" : "2024-10-16T10:30:00.000Z" ,
"status" : 500
}
Status Codes
Successfully retrieved the count of open alerts
Missing or invalid Bearer token
Internal server error while retrieving count
Use Cases
Dashboard Integration
// Dashboard widget example
async function updateAlertCountWidget () {
try {
const count = await getOpenAlertsCount ();
document . getElementById ( 'alert-count' ). textContent = count ;
// Update status indicator
const indicator = document . getElementById ( 'alert-status' );
if ( count === 0 ) {
indicator . className = 'status-good' ;
indicator . textContent = 'All Clear' ;
} else if ( count < 10 ) {
indicator . className = 'status-warning' ;
indicator . textContent = 'Normal' ;
} else {
indicator . className = 'status-critical' ;
indicator . textContent = 'High Alert Volume' ;
}
} catch ( error ) {
console . error ( 'Failed to update alert count:' , error );
}
}
// Update every 30 seconds
setInterval ( updateAlertCountWidget , 30000 );
Monitoring and Alerting
import requests
import time
from datetime import datetime
def monitor_alert_levels ():
"""Monitor alert levels and send notifications when thresholds are exceeded"""
thresholds = {
'warning' : 50 ,
'critical' : 100
}
try :
count = get_open_alerts_count()
timestamp = datetime.now().strftime( '%Y-%m- %d %H:%M:%S' )
print ( f "[ { timestamp } ] Open alerts: { count } " )
if count >= thresholds[ 'critical' ]:
send_notification( f "CRITICAL: { count } open alerts!" , 'critical' )
elif count >= thresholds[ 'warning' ]:
send_notification( f "WARNING: { count } open alerts" , 'warning' )
except Exception as e:
print ( f "Monitoring error: { e } " )
def send_notification ( message , level ):
"""Send notification to monitoring system"""
print ( f "NOTIFICATION [ { level.upper() } ]: { message } " )
# Integrate with your notification system (Slack, email, etc.)
# Run monitoring every 5 minutes
while True :
monitor_alert_levels()
time.sleep( 300 )
Metrics Collection
#!/bin/bash
# Metrics collection script for Prometheus/Grafana
TOKEN = "your_access_token"
BASE_URL = "https://demo.utmstack.com"
METRICS_FILE = "/var/log/utmstack/alert_metrics.log"
while true ; do
timestamp = $( date +%s )
count = $( curl -s -H "Authorization: Bearer $TOKEN " \
" $BASE_URL /api/utm-alerts/count-open-alerts" )
# Write metrics in Prometheus format
echo "utmstack_open_alerts_total $count $timestamp " >> $METRICS_FILE
sleep 60
done
Performance Notes:
This endpoint is optimized for frequent polling
Response time is typically under 100ms
Safe to call every 30-60 seconds for real-time dashboards
Uses database indexing for fast count operations
Minimal server resources required
Integration Examples
React Dashboard Component
import React , { useState , useEffect } from 'react' ;
const AlertCountWidget = () => {
const [ count , setCount ] = useState ( 0 );
const [ loading , setLoading ] = useState ( true );
const [ error , setError ] = useState ( null );
useEffect (() => {
const fetchCount = async () => {
try {
setLoading ( true );
const response = await fetch ( '/api/utm-alerts/count-open-alerts' , {
headers: {
'Authorization' : `Bearer ${ localStorage . getItem ( 'token' ) } `
}
});
if ( response . ok ) {
const alertCount = await response . json ();
setCount ( alertCount );
setError ( null );
} else {
throw new Error ( 'Failed to fetch alert count' );
}
} catch ( err ) {
setError ( err . message );
} finally {
setLoading ( false );
}
};
fetchCount ();
const interval = setInterval ( fetchCount , 30000 ); // Update every 30 seconds
return () => clearInterval ( interval );
}, []);
if ( loading ) return < div > Loading... </ div > ;
if ( error ) return < div > Error: { error } </ div > ;
return (
< div className = { `alert-widget ${ count > 50 ? 'high-count' : 'normal-count' } ` } >
< h3 > Open Alerts </ h3 >
< div className = "count-display" > { count } </ div >
< div className = "status-text" >
{ count === 0 ? 'All Clear' : ` ${ count } alerts require attention` }
</ div >
</ div >
);
};
export default AlertCountWidget ;
PowerShell Monitoring Script
# PowerShell script for Windows environments
param (
[ string ] $BaseUrl = "https://demo.utmstack.com" ,
[ string ] $Token = "your_access_token"
)
function Get-OpenAlertsCount {
$headers = @ {
'Authorization' = "Bearer $Token "
}
try {
$response = Invoke-RestMethod - Uri " $BaseUrl /api/utm-alerts/count-open-alerts" - Headers $headers - Method Get
return $response
}
catch {
Write-Error "Failed to get alert count: $( $_ .Exception.Message ) "
return $null
}
}
# Main monitoring loop
while ( $true ) {
$count = Get-OpenAlertsCount
$timestamp = Get-Date - Format "yyyy-MM-dd HH:mm:ss"
if ( $count -ne $null ) {
Write-Host "[ $timestamp ] Open alerts: $count "
# Write to Windows Event Log
if ( $count -gt 100 ) {
Write-EventLog - LogName Application - Source "UTMStack Monitor" - EventID 1001 - EntryType Warning - Message "High alert count: $count open alerts"
}
}
Start-Sleep - Seconds 300 # Wait 5 minutes
}
Best Practices
Recommended intervals:
Real-time dashboards: 30-60 seconds
Monitoring systems: 2-5 minutes
Reporting systems: 15-30 minutes
Avoid polling more frequently than every 15 seconds
Handle failures gracefully:
Cache the last known count during outages
Implement exponential backoff for retries
Set timeout values for requests
Log failures for troubleshooting
Establish meaningful thresholds:
0 alerts: All clear status
1-10 alerts: Normal operational level
11-50 alerts: Elevated attention needed
50+ alerts: High volume investigation required
OpenAPI Specification
get :
summary : "Get count of open alerts"
tags :
- Alert Analytics
security :
- bearerAuth : []
responses :
'200' :
description : "Count of open alerts"
content :
application/json :
schema :
type : integer
example : 42
description : "Total number of open alerts in the system"
'401' :
description : "Unauthorized"
'500' :
description : "Internal server error"