curl --request GET \
--url https://use.hoop.dev/api/metrics/sessionsimport requests
url = "https://use.hoop.dev/api/metrics/sessions"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://use.hoop.dev/api/metrics/sessions', 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://use.hoop.dev/api/metrics/sessions",
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://use.hoop.dev/api/metrics/sessions"
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://use.hoop.dev/api/metrics/sessions")
.asString();require 'uri'
require 'net/http'
url = URI("https://use.hoop.dev/api/metrics/sessions")
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": [
{
"connection_name": "production-db",
"connection_subtype": "amazon-rds",
"connection_type": "postgres",
"count_analyzed": 20,
"count_masked": 15,
"info_type": "EMAIL_ADDRESS",
"is_masked": true,
"org_id": "0CD7F941-2BB8-4F9F-93B0-11620D4652AB",
"session_created_at": "2023-08-15T14:30:45Z",
"session_duration_sec": 325,
"session_ended_at": "2023-08-15T14:35:10Z",
"session_id": "1CBC8DB5-FBF8-4293-8E35-59A6EEA40207"
}
],
"pages": {
"page": 123,
"size": 123,
"total": 123
}
}{
"message": "the error description"
}{
"message": "the error description"
}Get Session Metrics
Query session metrics data with advanced filtering. Supports AND/OR logic for combining filters. Filter by resource types (connection_type), resource subtypes (connection_subtype), resources (connection_name), Presidio data types (info_type), masked/unmasked status, date ranges, session dates, and session duration.
curl --request GET \
--url https://use.hoop.dev/api/metrics/sessionsimport requests
url = "https://use.hoop.dev/api/metrics/sessions"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://use.hoop.dev/api/metrics/sessions', 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://use.hoop.dev/api/metrics/sessions",
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://use.hoop.dev/api/metrics/sessions"
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://use.hoop.dev/api/metrics/sessions")
.asString();require 'uri'
require 'net/http'
url = URI("https://use.hoop.dev/api/metrics/sessions")
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": [
{
"connection_name": "production-db",
"connection_subtype": "amazon-rds",
"connection_type": "postgres",
"count_analyzed": 20,
"count_masked": 15,
"info_type": "EMAIL_ADDRESS",
"is_masked": true,
"org_id": "0CD7F941-2BB8-4F9F-93B0-11620D4652AB",
"session_created_at": "2023-08-15T14:30:45Z",
"session_duration_sec": 325,
"session_ended_at": "2023-08-15T14:35:10Z",
"session_id": "1CBC8DB5-FBF8-4293-8E35-59A6EEA40207"
}
],
"pages": {
"page": 123,
"size": 123,
"total": 123
}
}{
"message": "the error description"
}{
"message": "the error description"
}Query Parameters
Filter by connection types (e.g., postgres, mysql)
Filter by connection subtypes (e.g., amazon-rds, azure-db)
Filter by specific connection names
Filter by Presidio data types (e.g., EMAIL_ADDRESS, CREDIT_CARD, PHONE_NUMBER)
Only return masked data (count_masked > 0)
Only return unmasked data (count_masked = 0, but count_analyzed > 0)
Start date for filtering (format: YYYY-MM-DD)
End date for filtering (format: YYYY-MM-DD)
Filter by specific session IDs
Filter sessions that started on or after this date (format: YYYY-MM-DD)
Filter sessions that ended on or before this date (format: YYYY-MM-DD)
Minimum session duration in seconds
Maximum session duration in seconds
Include sessions that are still open (not ended)
Logic operator for combining filters: 'and' or 'or' (default: 'and')
Pagination page (default: 1)
Pagination limit (default: 100, max: 1000)
Return aggregated metrics instead of detailed list
Was this page helpful?