curl --request GET \
--url https://api.leen.dev/v1/tprm/findings/{finding_id} \
--header 'Authorization: Bearer <token>' \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.leen.dev/v1/tprm/findings/{finding_id}"
headers = {
"X-API-KEY": "<api-key>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-API-KEY': '<api-key>', Authorization: 'Bearer <token>'}
};
fetch('https://api.leen.dev/v1/tprm/findings/{finding_id}', 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.leen.dev/v1/tprm/findings/{finding_id}",
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>",
"X-API-KEY: <api-key>"
],
]);
$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.leen.dev/v1/tprm/findings/{finding_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
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.leen.dev/v1/tprm/findings/{finding_id}")
.header("X-API-KEY", "<api-key>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.leen.dev/v1/tprm/findings/{finding_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"asset_id": "<string>",
"asset_type": "<string>",
"company": {
"compliance_claimed": [
{
"standard": "<string>",
"last_updated_at": "2023-11-07T05:31:56Z"
}
],
"created_at": "2023-11-07T05:31:56Z",
"date_added": "2023-11-07T05:31:56Z",
"domain": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"industry": "<string>",
"name": "<string>",
"related_portfolios": [
{
"id": "<string>",
"name": "<string>"
}
],
"score": {
"factors": [],
"grade": "<string>",
"rating": 123
},
"size": "<string>",
"updated_at": "2023-11-07T05:31:56Z",
"vendor_attributes": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"data": {
"dashboard_link": "<string>",
"strategy_report_url": "<string>",
"type": "<string>"
},
"updated_at": "2023-11-07T05:31:56Z"
}
},
"connection_attributes": {
"country": "<string>",
"geo_ip_location": "<string>",
"hostnames": [
"<string>"
],
"observed_ips": [
"<string>"
],
"ports": [
123
],
"protocol": "<string>"
},
"created_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"domain": "<string>",
"evidence": {},
"first_seen": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"last_seen": "2023-11-07T05:31:56Z",
"provider_name": "<string>",
"remediation": "<string>",
"severity": "CRITICAL",
"status": "OPEN",
"status_updated_at": "2023-11-07T05:31:56Z",
"ticket": {
"owner": "<string>",
"status": "<string>",
"ticket_id": "<string>"
},
"title": "<string>",
"type": "<string>",
"updated_at": "2023-11-07T05:31:56Z",
"vendor_attributes": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"data": {
"finding_data": {
"control_id": "<string>",
"detail": "<string>",
"output": "<string>",
"title": "<string>"
}
},
"severity": "<string>",
"status": "<string>",
"type": "<string>",
"updated_at": "2023-11-07T05:31:56Z"
},
"vulnerability_id": "<string>"
}{
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}Get TPRM Finding by ID
Supports authentication via Bearer token (from /identity/token) or API key + connection ID
curl --request GET \
--url https://api.leen.dev/v1/tprm/findings/{finding_id} \
--header 'Authorization: Bearer <token>' \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.leen.dev/v1/tprm/findings/{finding_id}"
headers = {
"X-API-KEY": "<api-key>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'X-API-KEY': '<api-key>', Authorization: 'Bearer <token>'}
};
fetch('https://api.leen.dev/v1/tprm/findings/{finding_id}', 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.leen.dev/v1/tprm/findings/{finding_id}",
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>",
"X-API-KEY: <api-key>"
],
]);
$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.leen.dev/v1/tprm/findings/{finding_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
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.leen.dev/v1/tprm/findings/{finding_id}")
.header("X-API-KEY", "<api-key>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.leen.dev/v1/tprm/findings/{finding_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"asset_id": "<string>",
"asset_type": "<string>",
"company": {
"compliance_claimed": [
{
"standard": "<string>",
"last_updated_at": "2023-11-07T05:31:56Z"
}
],
"created_at": "2023-11-07T05:31:56Z",
"date_added": "2023-11-07T05:31:56Z",
"domain": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"industry": "<string>",
"name": "<string>",
"related_portfolios": [
{
"id": "<string>",
"name": "<string>"
}
],
"score": {
"factors": [],
"grade": "<string>",
"rating": 123
},
"size": "<string>",
"updated_at": "2023-11-07T05:31:56Z",
"vendor_attributes": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"data": {
"dashboard_link": "<string>",
"strategy_report_url": "<string>",
"type": "<string>"
},
"updated_at": "2023-11-07T05:31:56Z"
}
},
"connection_attributes": {
"country": "<string>",
"geo_ip_location": "<string>",
"hostnames": [
"<string>"
],
"observed_ips": [
"<string>"
],
"ports": [
123
],
"protocol": "<string>"
},
"created_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"domain": "<string>",
"evidence": {},
"first_seen": "2023-11-07T05:31:56Z",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"last_seen": "2023-11-07T05:31:56Z",
"provider_name": "<string>",
"remediation": "<string>",
"severity": "CRITICAL",
"status": "OPEN",
"status_updated_at": "2023-11-07T05:31:56Z",
"ticket": {
"owner": "<string>",
"status": "<string>",
"ticket_id": "<string>"
},
"title": "<string>",
"type": "<string>",
"updated_at": "2023-11-07T05:31:56Z",
"vendor_attributes": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"data": {
"finding_data": {
"control_id": "<string>",
"detail": "<string>",
"output": "<string>",
"title": "<string>"
}
},
"severity": "<string>",
"status": "<string>",
"type": "<string>",
"updated_at": "2023-11-07T05:31:56Z"
},
"vulnerability_id": "<string>"
}{
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"ctx": {},
"input": "<unknown>"
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Path Parameters
Response
Successful Response
The asset ID of the finding
The asset type of the finding
The ID of the company associated with the finding
Show child attributes
Show child attributes
The connection attributes of the finding
Show child attributes
Show child attributes
The creation time of the finding
The description of the finding
The domain of the finding
The evidence of the finding
The first seen time of the finding
Leen's UUID for the finding
The last seen time of the finding
The provider name of the finding
The remediation of the finding
The severity of the finding
CRITICAL, HIGH, MEDIUM, LOW, INFO, UNKNOWN The status of the finding
OPEN, IGNORED, DELETED, CLOSED, UNKNOWN The status update time of the finding
The ticket of the finding
Show child attributes
Show child attributes
The title of the finding
The type of the finding
The update time of the finding
The vendor data of the finding
Show child attributes
Show child attributes
The vulnerability ID (e.g., CVE identifier)