PingDirectory API Reference

Change the Naming Attribute

PUT {{apiPath}}/directory/v1/{{dn}}

It is possible to change the attribute that is used as the naming attribute. In this case, both attribute options must be defined in the entry.

This operation allows that both attributes can change, either one or the other attributes can change, or no attributes can change.

Headers

Authorization      Bearer {{accessToken}}

Content-Type      application/json

Body

raw ( application/json )

{
    "_dn": "cn=Linda Brown,ou=people,dc=example,dc=com",
    "uid": [
        "lindabrown"
    ],
    "cn": [
        "Linda Brown"
    ],
    "sn": [
        "Brown"
    ]
}

Example Request

  • cURL

  • C#

  • Go

  • HTTP

  • Java

  • jQuery

  • NodeJS

  • Python

  • PHP

  • Ruby

  • Swift

curl --location --globoff --request PUT '{{apiPath}}/directory/v1/{{dn}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
    "_dn": "cn=Linda Brown,ou=people,dc=example,dc=com",
    "uid": [
        "lindabrown"
    ],
    "cn": [
        "Linda Brown"
    ],
    "sn": [
        "Brown"
    ]
}'
var options = new RestClientOptions("{{apiPath}}/directory/v1/{{dn}}")
{
  MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Put);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer {{accessToken}}");
var body = @"{" + "\n" +
@"    ""_dn"": ""cn=Linda Brown,ou=people,dc=example,dc=com""," + "\n" +
@"    ""uid"": [" + "\n" +
@"        ""lindabrown""" + "\n" +
@"    ]," + "\n" +
@"    ""cn"": [" + "\n" +
@"        ""Linda Brown""" + "\n" +
@"    ]," + "\n" +
@"    ""sn"": [" + "\n" +
@"        ""Brown""" + "\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 := "PUT"

  payload := strings.NewReader(`{
    "_dn": "cn=Linda Brown,ou=people,dc=example,dc=com",
    "uid": [
        "lindabrown"
    ],
    "cn": [
        "Linda Brown"
    ],
    "sn": [
        "Brown"
    ]
}`)

  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))
}
PUT /directory/v1/{{dn}} HTTP/1.1
Host: {{apiPath}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}

{
    "_dn": "cn=Linda Brown,ou=people,dc=example,dc=com",
    "uid": [
        "lindabrown"
    ],
    "cn": [
        "Linda Brown"
    ],
    "sn": [
        "Brown"
    ]
}
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n    \"_dn\": \"cn=Linda Brown,ou=people,dc=example,dc=com\",\n    \"uid\": [\n        \"lindabrown\"\n    ],\n    \"cn\": [\n        \"Linda Brown\"\n    ],\n    \"sn\": [\n        \"Brown\"\n    ]\n}");
Request request = new Request.Builder()
  .url("{{apiPath}}/directory/v1/{{dn}}")
  .method("PUT", 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": "PUT",
  "timeout": 0,
  "headers": {
    "Content-Type": "application/json",
    "Authorization": "Bearer {{accessToken}}"
  },
  "data": JSON.stringify({
    "_dn": "cn=Linda Brown,ou=people,dc=example,dc=com",
    "uid": [
      "lindabrown"
    ],
    "cn": [
      "Linda Brown"
    ],
    "sn": [
      "Brown"
    ]
  }),
};

$.ajax(settings).done(function (response) {
  console.log(response);
});
var request = require('request');
var options = {
  'method': 'PUT',
  'url': '{{apiPath}}/directory/v1/{{dn}}',
  'headers': {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer {{accessToken}}'
  },
  body: JSON.stringify({
    "_dn": "cn=Linda Brown,ou=people,dc=example,dc=com",
    "uid": [
      "lindabrown"
    ],
    "cn": [
      "Linda Brown"
    ],
    "sn": [
      "Brown"
    ]
  })

};
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({
  "_dn": "cn=Linda Brown,ou=people,dc=example,dc=com",
  "uid": [
    "lindabrown"
  ],
  "cn": [
    "Linda Brown"
  ],
  "sn": [
    "Brown"
  ]
})
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer {{accessToken}}'
}

response = requests.request("PUT", 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_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'Content-Type' => 'application/json',
  'Authorization' => 'Bearer {{accessToken}}'
));
$request->setBody('{\n    "_dn": "cn=Linda Brown,ou=people,dc=example,dc=com",\n    "uid": [\n        "lindabrown"\n    ],\n    "cn": [\n        "Linda Brown"\n    ],\n    "sn": [\n        "Brown"\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::Put.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {{accessToken}}"
request.body = JSON.dump({
  "_dn": "cn=Linda Brown,ou=people,dc=example,dc=com",
  "uid": [
    "lindabrown"
  ],
  "cn": [
    "Linda Brown"
  ],
  "sn": [
    "Brown"
  ]
})

response = http.request(request)
puts response.read_body
let parameters = "{\n    \"_dn\": \"cn=Linda Brown,ou=people,dc=example,dc=com\",\n    \"uid\": [\n        \"lindabrown\"\n    ],\n    \"cn\": [\n        \"Linda Brown\"\n    ],\n    \"sn\": [\n        \"Brown\"\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 = "PUT"
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

{
    "_dn": "cn=Linda Brown,ou=people,dc=example,dc=com",
    "objectClass": [
        "top",
        "person",
        "organizationalPerson",
        "inetOrgPerson"
    ],
    "uid": [
        "lindabrown"
    ],
    "cn": [
        "Linda Brown"
    ],
    "sn": [
        "Brown"
    ],
    "ubidEmailJSON": [
        {
            "type": "home",
            "value": "user@example.com",
            "verified": true
        }
    ],
    "_links": {
        "schemas": [
            {
                "href": "https://ds.example.com/directory/v1/schemas/inetOrgPerson"
            }
        ],
        "self": {
            "href": "https://ds.example.com/directory/v1/cn=Linda+Brown,ou=people,dc=example,dc=com"
        }
    }
}