Get vulnerability state for authorized partner tenants.
curl --request GET \
--url https://{instance}.cyrisma.com/app/pulse/v1/partner/vulnerabilities/state \
--header 'Authorization: Bearer <token>'import requests
url = "https://{instance}.cyrisma.com/app/pulse/v1/partner/vulnerabilities/state"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{instance}.cyrisma.com/app/pulse/v1/partner/vulnerabilities/state', 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://{instance}.cyrisma.com/app/pulse/v1/partner/vulnerabilities/state",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://{instance}.cyrisma.com/app/pulse/v1/partner/vulnerabilities/state"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{instance}.cyrisma.com/app/pulse/v1/partner/vulnerabilities/state")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{instance}.cyrisma.com/app/pulse/v1/partner/vulnerabilities/state")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"root_tenant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"coverage": [
{
"tenant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"tenant_host": "<string>"
}
],
"open_finding_count": 123,
"open_critical_count": 123,
"open_high_count": 123,
"open_medium_count": 123,
"open_low_count": 123,
"affected_asset_count": 123,
"affected_tenant_count": 123,
"kev_finding_count": 123,
"exploitable_finding_count": 123,
"patchable_root_cause_count": 123,
"remediated_30d_count": 123,
"last_detection_at": "2023-11-07T05:31:56Z",
"source_tab_counts": [
{
"source_type": "endpoint",
"open_finding_count": 123,
"affected_asset_count": 123,
"affected_tenant_count": 123,
"critical_cve_count": 123,
"high_cve_count": 123,
"medium_cve_count": 123,
"low_cve_count": 123
}
],
"lifecycle_series": [
{
"date": "2023-12-25",
"opened_count": 123,
"remediated_count": 123,
"cumulative_open_count": 123
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}Reporting
Get vulnerability state for authorized partner tenants.
This endpoint returns an aggregated vulnerability posture snapshot: open finding counts by severity, affected asset/tenant counts, KEV and exploitable finding counts, patchable root cause count, and a lifecycle series, across the authorized partner’s tenant scope.
Notes:
tenant_ids(optional, comma-separated) restricts the snapshot to specific tenants; omit it to include every tenant the caller is authorized for.- Only tenants within the caller’s authorized scope are included; requesting a tenant outside that scope returns 403.
Required headers:
Authorization: Bearer {token}(requires thepulse.readscope)
GET
/
pulse
/
v1
/
partner
/
vulnerabilities
/
state
Get vulnerability state for authorized partner tenants.
curl --request GET \
--url https://{instance}.cyrisma.com/app/pulse/v1/partner/vulnerabilities/state \
--header 'Authorization: Bearer <token>'import requests
url = "https://{instance}.cyrisma.com/app/pulse/v1/partner/vulnerabilities/state"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{instance}.cyrisma.com/app/pulse/v1/partner/vulnerabilities/state', 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://{instance}.cyrisma.com/app/pulse/v1/partner/vulnerabilities/state",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://{instance}.cyrisma.com/app/pulse/v1/partner/vulnerabilities/state"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{instance}.cyrisma.com/app/pulse/v1/partner/vulnerabilities/state")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{instance}.cyrisma.com/app/pulse/v1/partner/vulnerabilities/state")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"root_tenant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"coverage": [
{
"tenant_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"tenant_host": "<string>"
}
],
"open_finding_count": 123,
"open_critical_count": 123,
"open_high_count": 123,
"open_medium_count": 123,
"open_low_count": 123,
"affected_asset_count": 123,
"affected_tenant_count": 123,
"kev_finding_count": 123,
"exploitable_finding_count": 123,
"patchable_root_cause_count": 123,
"remediated_30d_count": 123,
"last_detection_at": "2023-11-07T05:31:56Z",
"source_tab_counts": [
{
"source_type": "endpoint",
"open_finding_count": 123,
"affected_asset_count": 123,
"affected_tenant_count": 123,
"critical_cve_count": 123,
"high_cve_count": 123,
"medium_cve_count": 123,
"low_cve_count": 123
}
],
"lifecycle_series": [
{
"date": "2023-12-25",
"opened_count": 123,
"remediated_count": 123,
"cumulative_open_count": 123
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}Authorizations
A Tenant Authority machine-client token from POST /v1/auth/client-token, carrying subject_type=machine_client and the pulse.read scope.
Query Parameters
Comma-separated tenant UUIDs to scope the list to. Omit to use every tenant the caller is authorized for.
Response
OK
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
