curl --request GET \
--url https://api.duvo.ai/v2/organizations/{orgId}/clarity/hierarchy/people \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.duvo.ai/v2/organizations/{orgId}/clarity/hierarchy/people"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.duvo.ai/v2/organizations/{orgId}/clarity/hierarchy/people', 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.duvo.ai/v2/organizations/{orgId}/clarity/hierarchy/people",
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.duvo.ai/v2/organizations/{orgId}/clarity/hierarchy/people"
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.duvo.ai/v2/organizations/{orgId}/clarity/hierarchy/people")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.duvo.ai/v2/organizations/{orgId}/clarity/hierarchy/people")
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{
"people": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"email": "jsmith@example.com",
"role": "<string>",
"status": "pending",
"invitationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"captureCount": 4503599627370495,
"createdAt": "<string>",
"nodeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"processId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"truncated": true
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Get Clarity Hierarchy People
List the people attached to every authorized linked process node in the organization’s Process Landscape. Returns a flat list where each person carries nodeId and processId, plus their role, invite status, and capture count. Narrow it with rootId (one subtree), ownerTeamId (one owning team), and userId or search (one person) — an unfiltered organization roster is large enough to be refused by response-size caps. To find the processes where one person has not captured yet, filter to that person and read captureCount per row. truncated is true when the node subtree or any single process roster was capped.
curl --request GET \
--url https://api.duvo.ai/v2/organizations/{orgId}/clarity/hierarchy/people \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.duvo.ai/v2/organizations/{orgId}/clarity/hierarchy/people"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.duvo.ai/v2/organizations/{orgId}/clarity/hierarchy/people', 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.duvo.ai/v2/organizations/{orgId}/clarity/hierarchy/people",
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.duvo.ai/v2/organizations/{orgId}/clarity/hierarchy/people"
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.duvo.ai/v2/organizations/{orgId}/clarity/hierarchy/people")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.duvo.ai/v2/organizations/{orgId}/clarity/hierarchy/people")
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{
"people": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"email": "jsmith@example.com",
"role": "<string>",
"status": "pending",
"invitationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"captureCount": 4503599627370495,
"createdAt": "<string>",
"nodeId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"processId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"truncated": true
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Authorizations
API key authentication. Get your API key from the Duvo dashboard.
Path Parameters
Query Parameters
Only return rosters for nodes in the subtree under this node
Only return rosters for processes owned by this team. 404s when the team has no readable Process Landscape
Only return rows for this platform user, matched on the same resolved identity the roster reports (an email-only row resolves through its organization profile)
Only return rows whose person name or email contains this text, case-insensitively
200Was this page helpful?