Delete an Entry with Controls
DELETE {{apiPath}}/directory/v1/{{dn}}
This DELETE /directory/v1/{{dn}} operation adds a _controls property to the requests and responses for these APIs. The property is an array of JSON formatted controls that are used to include additional content in LDAP requests and responses. For more information about supported controls, refer to Controls.
When successful, the response for a DELETE with controls returns a 200 status message.
|
Only one entry can be deleted in a delete operation. Subtree delete is not supported. Delete operations on an entry with children results in a |
Example Request
-
cURL
-
C#
-
Go
-
HTTP
-
Java
-
jQuery
-
NodeJS
-
Python
-
PHP
-
Ruby
-
Swift
curl --location --globoff --request DELETE '{{apiPath}}/directory/v1/{{dn}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
"_controls": [
{
"oid": "1.3.6.1.1.13.1",
"control-name": "Pre-Read Request Control",
"criticality": false,
"value-json": {
"attributes": [
"uid",
"givenName",
"sn",
"cn"
]
}
}
]
}'
var options = new RestClientOptions("{{apiPath}}/directory/v1/{{dn}}")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Delete);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer {{accessToken}}");
var body = @"{" + "\n" +
@" ""_controls"": [" + "\n" +
@" {" + "\n" +
@" ""oid"": ""1.3.6.1.1.13.1""," + "\n" +
@" ""control-name"": ""Pre-Read Request Control""," + "\n" +
@" ""criticality"": false," + "\n" +
@" ""value-json"": {" + "\n" +
@" ""attributes"": [" + "\n" +
@" ""uid""," + "\n" +
@" ""givenName""," + "\n" +
@" ""sn""," + "\n" +
@" ""cn""" + "\n" +
@" ]" + "\n" +
@" }" + "\n" +
@" }" + "\n" +
@" ]" + "\n" +
@"}";
request.AddStringBody(body, DataFormat.Json);
RestResponse response = await client.ExecuteAsync(request);
Console.WriteLine(response.Content);
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "{{apiPath}}/directory/v1/{{dn}}"
method := "DELETE"
payload := strings.NewReader(`{
"_controls": [
{
"oid": "1.3.6.1.1.13.1",
"control-name": "Pre-Read Request Control",
"criticality": false,
"value-json": {
"attributes": [
"uid",
"givenName",
"sn",
"cn"
]
}
}
]
}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
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))
}
DELETE /directory/v1/{{dn}} HTTP/1.1
Host: {{apiPath}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}
{
"_controls": [
{
"oid": "1.3.6.1.1.13.1",
"control-name": "Pre-Read Request Control",
"criticality": false,
"value-json": {
"attributes": [
"uid",
"givenName",
"sn",
"cn"
]
}
}
]
}
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"_controls\": [\n {\n \"oid\": \"1.3.6.1.1.13.1\",\n \"control-name\": \"Pre-Read Request Control\",\n \"criticality\": false,\n \"value-json\": {\n \"attributes\": [\n \"uid\",\n \"givenName\",\n \"sn\",\n \"cn\"\n ]\n }\n }\n ]\n}");
Request request = new Request.Builder()
.url("{{apiPath}}/directory/v1/{{dn}}")
.method("DELETE", body)
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{accessToken}}")
.build();
Response response = client.newCall(request).execute();
var settings = {
"url": "{{apiPath}}/directory/v1/{{dn}}",
"method": "DELETE",
"timeout": 0,
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer {{accessToken}}"
},
"data": JSON.stringify({
"_controls": [
{
"oid": "1.3.6.1.1.13.1",
"control-name": "Pre-Read Request Control",
"criticality": false,
"value-json": {
"attributes": [
"uid",
"givenName",
"sn",
"cn"
]
}
}
]
}),
};
$.ajax(settings).done(function (response) {
console.log(response);
});
var request = require('request');
var options = {
'method': 'DELETE',
'url': '{{apiPath}}/directory/v1/{{dn}}',
'headers': {
'Content-Type': 'application/json',
'Authorization': 'Bearer {{accessToken}}'
},
body: JSON.stringify({
"_controls": [
{
"oid": "1.3.6.1.1.13.1",
"control-name": "Pre-Read Request Control",
"criticality": false,
"value-json": {
"attributes": [
"uid",
"givenName",
"sn",
"cn"
]
}
}
]
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
import json
url = "{{apiPath}}/directory/v1/{{dn}}"
payload = json.dumps({
"_controls": [
{
"oid": "1.3.6.1.1.13.1",
"control-name": "Pre-Read Request Control",
"criticality": False,
"value-json": {
"attributes": [
"uid",
"givenName",
"sn",
"cn"
]
}
}
]
})
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("DELETE", url, headers=headers, data=payload)
print(response.text)
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{apiPath}}/directory/v1/{{dn}}');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/json',
'Authorization' => 'Bearer {{accessToken}}'
));
$request->setBody('{\n "_controls": [\n {\n "oid": "1.3.6.1.1.13.1",\n "control-name": "Pre-Read Request Control",\n "criticality": false,\n "value-json": {\n "attributes": [\n "uid",\n "givenName",\n "sn",\n "cn"\n ]\n }\n }\n ]\n}');
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 "json"
require "net/http"
url = URI("{{apiPath}}/directory/v1/{{dn}}")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Delete.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {{accessToken}}"
request.body = JSON.dump({
"_controls": [
{
"oid": "1.3.6.1.1.13.1",
"control-name": "Pre-Read Request Control",
"criticality": false,
"value-json": {
"attributes": [
"uid",
"givenName",
"sn",
"cn"
]
}
}
]
})
response = http.request(request)
puts response.read_body
let parameters = "{\n \"_controls\": [\n {\n \"oid\": \"1.3.6.1.1.13.1\",\n \"control-name\": \"Pre-Read Request Control\",\n \"criticality\": false,\n \"value-json\": {\n \"attributes\": [\n \"uid\",\n \"givenName\",\n \"sn\",\n \"cn\"\n ]\n }\n }\n ]\n}"
let postData = parameters.data(using: .utf8)
var request = URLRequest(url: URL(string: "{{apiPath}}/directory/v1/{{dn}}")!,timeoutInterval: Double.infinity)
request.addValue("application/json", forHTTPHeaderField: "Content-Type")
request.addValue("Bearer {{accessToken}}", forHTTPHeaderField: "Authorization")
request.httpMethod = "DELETE"
request.httpBody = postData
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
{
"_controls": [
{
"oid": "1.3.6.1.1.13.1",
"control-name": "Pre-Read Response Control",
"criticality": false,
"value-json": {
"_dn": "uid=johnsmith,ou=People,dc=example,dc=com",
"sn": [
"Smith"
],
"givenName": [
"John"
],
"cn": [
"John Smith"
],
"uid": [
"johnsmith"
]
}
}
]
}