Get Metrics Summary
curl --request GET \
--url https://api.example.com/v1/metrics/summaryimport requests
url = "https://api.example.com/v1/metrics/summary"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/metrics/summary', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/metrics/summary",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/metrics/summary"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/v1/metrics/summary")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/metrics/summary")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": {
"alerts": {
"total": 123,
"active": 123,
"by_severity": {},
"by_status": {},
"by_source": {},
"enrichment_coverage": 123,
"mean_time_to_enrich_seconds": 123,
"false_positive_rate": 123,
"mttd_seconds": 123,
"mtta_seconds": 123,
"mttt_seconds": 123,
"mttc_seconds": 123
},
"workflows": {
"total_configured": 123,
"executions": 123,
"success_rate": 123,
"estimated_time_saved_hours": 123
},
"approvals": {
"pending": 123,
"approved_last_30_days": 123,
"approval_rate": 123,
"median_response_time_minutes": 123
},
"platform": {
"context_documents": 123,
"detection_rules": 123,
"enrichment_providers": 123,
"enrichment_providers_by_indicator_type": {},
"agents": 123,
"workflows": 123,
"indicator_mappings": 123
},
"period": "last_30_days",
"queue": {
"queues": [
{
"queue": "<string>",
"pending": 123,
"in_progress": 123,
"succeeded_30d": 123,
"failed_30d": 123,
"avg_duration_seconds": 123,
"oldest_pending_age_seconds": 123
}
],
"total_pending": 123,
"total_in_progress": 123,
"total_failed_30d": 123,
"total_succeeded_30d": 123,
"oldest_pending_age_seconds": 123
}
},
"meta": {}
}Metrics
Metrics Summary
Compact SOC health snapshot — always last 30 days. No time window parameters — window is fixed per PRD. Optimized for agent context injection (low token cost).
GET
/
v1
/
metrics
/
summary
Get Metrics Summary
curl --request GET \
--url https://api.example.com/v1/metrics/summaryimport requests
url = "https://api.example.com/v1/metrics/summary"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/metrics/summary', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.example.com/v1/metrics/summary",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.example.com/v1/metrics/summary"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/v1/metrics/summary")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/metrics/summary")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"data": {
"alerts": {
"total": 123,
"active": 123,
"by_severity": {},
"by_status": {},
"by_source": {},
"enrichment_coverage": 123,
"mean_time_to_enrich_seconds": 123,
"false_positive_rate": 123,
"mttd_seconds": 123,
"mtta_seconds": 123,
"mttt_seconds": 123,
"mttc_seconds": 123
},
"workflows": {
"total_configured": 123,
"executions": 123,
"success_rate": 123,
"estimated_time_saved_hours": 123
},
"approvals": {
"pending": 123,
"approved_last_30_days": 123,
"approval_rate": 123,
"median_response_time_minutes": 123
},
"platform": {
"context_documents": 123,
"detection_rules": 123,
"enrichment_providers": 123,
"enrichment_providers_by_indicator_type": {},
"agents": 123,
"workflows": 123,
"indicator_mappings": 123
},
"period": "last_30_days",
"queue": {
"queues": [
{
"queue": "<string>",
"pending": 123,
"in_progress": 123,
"succeeded_30d": 123,
"failed_30d": 123,
"avg_duration_seconds": 123,
"oldest_pending_age_seconds": 123
}
],
"total_pending": 123,
"total_in_progress": 123,
"total_failed_30d": 123,
"total_succeeded_30d": 123,
"oldest_pending_age_seconds": 123
}
},
"meta": {}
}⌘I

