List All Entries
GET {{apiPath}}/directory/v1/{{dn}}/subtree?searchScope=wholeSubtree&limit=100
To retrieve a list of entries under a subtree of an entry, use the {{dn}}/subtree endpoint. This endpoint requires the searchScope parameter. The supported search scopes are:
-
baseObjectReturns only the object directly described by the base DN.
-
singleLevelReturns only the entries that are immediate children of the base entry.
-
wholeSubtreeReturns the base entry and all of its descendants.
-
subordinateSubtreeReturns the descendants of the base entry, but not the base entry itself.
All list requests are paged. The limit parameter specifies the page size. However, the page size can be smaller than requested, either because the server has a configured maximum page size or because you have reached the last page and there are not enough entries to fill the page.
The next link enables navigation forward from the current page to the next page. The directory service does not support a previous link to move backward from the current page.
The size value on the returned object shows the actual number of entries returned in the request.
The sample shows the GET /directory/v1/{{dn}}/subtree+ operation to return the base entry and all of its descendants.
|
The |
Example Request
-
cURL
-
C#
-
Go
-
HTTP
-
Java
-
jQuery
-
NodeJS
-
Python
-
PHP
-
Ruby
-
Swift
curl --location --globoff '{{apiPath}}/directory/v1/{{dn}}/subtree?searchScope=wholeSubtree&limit=100' \
--header 'Authorization: Bearer {{accessToken}}'
var options = new RestClientOptions("{{apiPath}}/directory/v1/{{dn}}/subtree?searchScope=wholeSubtree&limit=100")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Get);
request.AddHeader("Authorization", "Bearer {{accessToken}}");
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "{{apiPath}}/directory/v1/{{dn}}/subtree?searchScope=wholeSubtree&limit=100"
method := "GET"
client := &http.Client {
}
req, err := http.NewRequest(method, url, nil)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Authorization", "Bearer {{accessToken}}")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
GET /directory/v1/{{dn}}/subtree?searchScope=wholeSubtree&limit=100 HTTP/1.1
Host: {{apiPath}}
Authorization: Bearer {{accessToken}}
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
.url("{{apiPath}}/directory/v1/{{dn}}/subtree?searchScope=wholeSubtree&limit=100")
.method("GET", body)
.addHeader("Authorization", "Bearer {{accessToken}}")
.build();
Response response = client.newCall(request).execute();
var settings = {
"url": "{{apiPath}}/directory/v1/{{dn}}/subtree?searchScope=wholeSubtree&limit=100",
"method": "GET",
"timeout": 0,
"headers": {
"Authorization": "Bearer {{accessToken}}"
},
};
$.ajax(settings).done(function (response) {
console.log(response);
});
var request = require('request');
var options = {
'method': 'GET',
'url': '{{apiPath}}/directory/v1/{{dn}}/subtree?searchScope=wholeSubtree&limit=100',
'headers': {
'Authorization': 'Bearer {{accessToken}}'
}
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
url = "{{apiPath}}/directory/v1/{{dn}}/subtree?searchScope=wholeSubtree&limit=100"
payload = {}
headers = {
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.text)
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{apiPath}}/directory/v1/{{dn}}/subtree?searchScope=wholeSubtree&limit=100');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Authorization' => 'Bearer {{accessToken}}'
));
try {
$response = $request->send();
if ($response->getStatus() == 200) {
echo $response->getBody();
}
else {
echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
$response->getReasonPhrase();
}
}
catch(HTTP_Request2_Exception $e) {
echo 'Error: ' . $e->getMessage();
}
require "uri"
require "net/http"
url = URI("{{apiPath}}/directory/v1/{{dn}}/subtree?searchScope=wholeSubtree&limit=100")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer {{accessToken}}"
response = http.request(request)
puts response.read_body
var request = URLRequest(url: URL(string: "{{apiPath}}/directory/v1/{{dn}}/subtree?searchScope=wholeSubtree&limit=100")!,timeoutInterval: Double.infinity)
request.addValue("Bearer {{accessToken}}", forHTTPHeaderField: "Authorization")
request.httpMethod = "GET"
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
return
}
print(String(data: data, encoding: .utf8)!)
}
task.resume()
Example Response
200 OK
{
"size": 100,
"_embedded": {
"entries": [
{
"_dn": "uid=lindajones,ou=people,dc=example,dc=com",
"objectClass": [ "top", "person", "organizationalPerson", "inetOrgPerson" ],
"uid": ["lindajones"],
"cn": ["Linda Jones"],
"sn": ["Jones"],
"_links": {
"schemas": [
{
"href": "https://ds.example.com/directory/v1/schemas/inetOrgPerson"
}
],
"self": {
"href": "https://ds.example.com/directory/v1/uid=lindajones,ou=people,dc=example,dc=com"
}
}
},
... 99 more entries ...
]
},
"_links": {
"self": {
"href": "https://ds.example.com/directory/v1/ou=people,dc=example,dc=com/subtree?searchScope=wholeSubtree&limit=100"
},
"next": {
"href": "https://ds.example.com/directory/v1/ou=people,dc=example,dc=com/subtree?limit=100&cursor=eyJjb29raWUiOiJ1c2VyMTAiLCJmaWx0ZXIiOiIiLCJzY29wZSI6Indob2xlU3VidHJlZSJ9"
}
}
}