Get monthly report of a report group
Returns the monthly support report for the requested report group and period, along with the group’s current metrics.
curl --request GET \
--url https://api.flexxible.net/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}/monthly-report/{period} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.flexxible.net/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}/monthly-report/{period}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.flexxible.net/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}/monthly-report/{period}', 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.flexxible.net/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}/monthly-report/{period}",
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://api.flexxible.net/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}/monthly-report/{period}"
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://api.flexxible.net/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}/monthly-report/{period}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flexxible.net/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}/monthly-report/{period}")
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{
"reporting_group_id": "507f1f77bcf86cd799439020",
"organization_id": "507f1f77bcf86cd799439011",
"period_year": 2026,
"period_month": 6,
"applied_patches": 58,
"critical_patches": 6,
"security_patches": 17,
"other_patches": 35,
"total_used_apps": 42,
"top_apps": [
{
"app_name": "Google Chrome",
"usage_days": 21
},
{
"app_name": "Microsoft Teams",
"usage_days": 19
}
],
"automatic_remediations": {
"microservices": 4,
"flows": 11
},
"current_reporting_group_name": "Madrid - Finance",
"current_total_workspaces": 132,
"current_total_workspace_users": 247,
"current_workspace_antivirus_statistics": {
"workspaces_without_antivirus": 9,
"workspaces_with_antivirus": {
"total": 123,
"by_status": {
"unknown": 5,
"not_installed": 7,
"installed_stopped": 3,
"installed_working": 108
}
}
}
}{
"error": {
"message": "El parametro period debe tener formato yyyymm.",
"code": "invalid_request",
"details": "Use seis digitos con mes valido entre 01 y 12."
}
}{
"error": {
"message": "No autorizado.",
"code": "unauthorized"
}
}{
"error": {
"message": "No se encontro el reporte mensual solicitado.",
"code": "not_found"
}
}{
"error": {
"message": "Se produjo un error interno.",
"code": "internal_error"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Organization identifier.
24^[0-9a-f]{24}$Report group identifier.
24^[0-9a-f]{24}$Requested monthly period in yyyymm format.
6^\d{4}(0[1-9]|1[0-2])$Response
Monthly report successfully retrieved.
Monthly support report of a report group.
Report group identifier.
24^[0-9a-f]{24}$Organization identifier.
24^[0-9a-f]{24}$Year of the report.
x >= 1Month of the report.
1 <= x <= 12Number of applied patches.
Number of critical patches.
Number of security patches.
Number of other patches.
Total number of applications used in the period.
Most used applications in the period.
Show child attributes
Show child attributes
Count of automatic remediations.
Show child attributes
Show child attributes
Current name of the report group.
Current total of group workspaces.
Current total of users in group workspaces.
Current antivirus status in group workspaces.
Show child attributes
Show child attributes
curl --request GET \
--url https://api.flexxible.net/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}/monthly-report/{period} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.flexxible.net/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}/monthly-report/{period}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.flexxible.net/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}/monthly-report/{period}', 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.flexxible.net/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}/monthly-report/{period}",
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://api.flexxible.net/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}/monthly-report/{period}"
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://api.flexxible.net/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}/monthly-report/{period}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.flexxible.net/v2/organizations/{organization_id}/reporting-groups/{reporting_group_id}/monthly-report/{period}")
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{
"reporting_group_id": "507f1f77bcf86cd799439020",
"organization_id": "507f1f77bcf86cd799439011",
"period_year": 2026,
"period_month": 6,
"applied_patches": 58,
"critical_patches": 6,
"security_patches": 17,
"other_patches": 35,
"total_used_apps": 42,
"top_apps": [
{
"app_name": "Google Chrome",
"usage_days": 21
},
{
"app_name": "Microsoft Teams",
"usage_days": 19
}
],
"automatic_remediations": {
"microservices": 4,
"flows": 11
},
"current_reporting_group_name": "Madrid - Finance",
"current_total_workspaces": 132,
"current_total_workspace_users": 247,
"current_workspace_antivirus_statistics": {
"workspaces_without_antivirus": 9,
"workspaces_with_antivirus": {
"total": 123,
"by_status": {
"unknown": 5,
"not_installed": 7,
"installed_stopped": 3,
"installed_working": 108
}
}
}
}{
"error": {
"message": "El parametro period debe tener formato yyyymm.",
"code": "invalid_request",
"details": "Use seis digitos con mes valido entre 01 y 12."
}
}{
"error": {
"message": "No autorizado.",
"code": "unauthorized"
}
}{
"error": {
"message": "No se encontro el reporte mensual solicitado.",
"code": "not_found"
}
}{
"error": {
"message": "Se produjo un error interno.",
"code": "internal_error"
}
}