PingDirectory API Reference

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 400 BAD REQUEST response.

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
    "_controls": [
        {
            "oid": "1.3.6.1.1.13.1",
            "control-name": "Pre-Read Request Control",
            "criticality": false,
            "value-json": {
                "attributes": [
                    "uid",
                    "givenName",
                    "sn",
                    "cn"
                ]
            }
        }
    ]
}

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"
                ]
            }
        }
    ]
}