Update Attribute (Put)
PUT {{apiPath}}/environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}}
You can also update existing attribute properties using PUT {{apiPath}}/environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}}. The PUT operation removes any existing attribute properties omitted from the request body.
An attribute can support multiple values if the multiValued property is set to true. If the multiValued property is set to false or is null, the User object will contain the attribute value as a single value. If multiValued is set to true, the value in the User object will be an array. When searches are performed on User schema data, a user will match if any value of a multiValued attribute is part of the search criteria.
Prerequisites
-
Refer to Schemas for important overview information.
-
Read all available schemas and select a
schemaIDfor the endpoint.
Request Model
Refer to the Schema attributes POST, PUT, PATCH data model for full property descriptions.
| Property | Type | Required? |
|---|---|---|
|
String |
Optional |
|
String |
Optional |
|
Boolean |
Required |
|
Array |
Optional |
|
String |
Required |
|
Boolean |
Optional |
|
String |
Optional |
|
String |
Required |
|
Boolean |
Optional |
|
String |
Required |
|
Object |
Optional |
|
String |
Required |
|
String |
Required |
|
Array |
Optional |
|
Array |
Optional |
|
String |
Required |
|
String |
Required |
|
Array |
Optional |
|
String |
Optional |
|
String |
Optional |
|
Boolean |
Required |
|
String |
Required |
|
Boolean |
Optional |
|
String |
Required |
|
String |
Optional |
|
Boolean |
Required |
|
String |
Optional |
|
Boolean |
Required |
Body
raw ( application/json )
{
"name": "officeLocation",
"displayName": "An optional property that specifies the display name of the attribute.",
"description": "An optional property that specifies the description of the new attribute.",
"schemaType": "CUSTOM",
"type": "STRING",
"unique": true,
"enabled": false,
"multiValued": false
}
Example Request
-
cURL
-
C#
-
Go
-
HTTP
-
Java
-
jQuery
-
NodeJS
-
Python
-
PHP
-
Ruby
-
Swift
curl --location --globoff --request PUT '{{apiPath}}/environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
"name": "officeLocation",
"displayName": "An optional property that specifies the display name of the attribute.",
"description": "An optional property that specifies the description of the new attribute.",
"schemaType": "CUSTOM",
"type": "STRING",
"unique": true,
"enabled": false,
"multiValued": false
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}}")
{
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" +
@" ""name"": ""officeLocation""," + "\n" +
@" ""displayName"": ""An optional property that specifies the display name of the attribute.""," + "\n" +
@" ""description"": ""An optional property that specifies the description of the new attribute.""," + "\n" +
@" ""schemaType"": ""CUSTOM""," + "\n" +
@" ""type"": ""STRING""," + "\n" +
@" ""unique"": true," + "\n" +
@" ""enabled"": false," + "\n" +
@" ""multiValued"": false" + "\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}}/environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}}"
method := "PUT"
payload := strings.NewReader(`{
"name": "officeLocation",
"displayName": "An optional property that specifies the display name of the attribute.",
"description": "An optional property that specifies the description of the new attribute.",
"schemaType": "CUSTOM",
"type": "STRING",
"unique": true,
"enabled": false,
"multiValued": false
}`)
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 /environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}} HTTP/1.1
Host: {{apiPath}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}
{
"name": "officeLocation",
"displayName": "An optional property that specifies the display name of the attribute.",
"description": "An optional property that specifies the description of the new attribute.",
"schemaType": "CUSTOM",
"type": "STRING",
"unique": true,
"enabled": false,
"multiValued": false
}
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"name\": \"officeLocation\",\n \"displayName\": \"An optional property that specifies the display name of the attribute.\",\n \"description\": \"An optional property that specifies the description of the new attribute.\",\n \"schemaType\": \"CUSTOM\",\n \"type\": \"STRING\",\n \"unique\": true,\n \"enabled\": false,\n \"multiValued\": false\n}");
Request request = new Request.Builder()
.url("{{apiPath}}/environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}}")
.method("PUT", body)
.addHeader("Content-Type", "application/json")
.addHeader("Authorization", "Bearer {{accessToken}}")
.build();
Response response = client.newCall(request).execute();
var settings = {
"url": "{{apiPath}}/environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}}",
"method": "PUT",
"timeout": 0,
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer {{accessToken}}"
},
"data": JSON.stringify({
"name": "officeLocation",
"displayName": "An optional property that specifies the display name of the attribute.",
"description": "An optional property that specifies the description of the new attribute.",
"schemaType": "CUSTOM",
"type": "STRING",
"unique": true,
"enabled": false,
"multiValued": false
}),
};
$.ajax(settings).done(function (response) {
console.log(response);
});
var request = require('request');
var options = {
'method': 'PUT',
'url': '{{apiPath}}/environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}}',
'headers': {
'Content-Type': 'application/json',
'Authorization': 'Bearer {{accessToken}}'
},
body: JSON.stringify({
"name": "officeLocation",
"displayName": "An optional property that specifies the display name of the attribute.",
"description": "An optional property that specifies the description of the new attribute.",
"schemaType": "CUSTOM",
"type": "STRING",
"unique": true,
"enabled": false,
"multiValued": false
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
import json
url = "{{apiPath}}/environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}}"
payload = json.dumps({
"name": "officeLocation",
"displayName": "An optional property that specifies the display name of the attribute.",
"description": "An optional property that specifies the description of the new attribute.",
"schemaType": "CUSTOM",
"type": "STRING",
"unique": True,
"enabled": False,
"multiValued": False
})
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}}/environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}}');
$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 "name": "officeLocation",\n "displayName": "An optional property that specifies the display name of the attribute.",\n "description": "An optional property that specifies the description of the new attribute.",\n "schemaType": "CUSTOM",\n "type": "STRING",\n "unique": true,\n "enabled": false,\n "multiValued": false\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}}/environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}}")
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({
"name": "officeLocation",
"displayName": "An optional property that specifies the display name of the attribute.",
"description": "An optional property that specifies the description of the new attribute.",
"schemaType": "CUSTOM",
"type": "STRING",
"unique": true,
"enabled": false,
"multiValued": false
})
response = http.request(request)
puts response.read_body
let parameters = "{\n \"name\": \"officeLocation\",\n \"displayName\": \"An optional property that specifies the display name of the attribute.\",\n \"description\": \"An optional property that specifies the description of the new attribute.\",\n \"schemaType\": \"CUSTOM\",\n \"type\": \"STRING\",\n \"unique\": true,\n \"enabled\": false,\n \"multiValued\": false\n}"
let postData = parameters.data(using: .utf8)
var request = URLRequest(url: URL(string: "{{apiPath}}/environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}}")!,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
{
"_links": {
"self": {
"href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/schemas/6497b7af-99d1-4217-8a82-057fcc3b7401/attributes/0d5fe0cc-ad79-41d8-b1f5-270c4e807bd0"
},
"environment": {
"href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
},
"schema": {
"href": "https://api.pingone.com/v1/environments/abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6/schemas/6497b7af-99d1-4217-8a82-057fcc3b7401"
}
},
"id": "0d5fe0cc-ad79-41d8-b1f5-270c4e807bd0",
"environment": {
"id": "abfba8f6-49eb-49f5-a5d9-80ad5c98f9f6"
},
"name": "officeLocation",
"displayName": "An optional property that specifies the display name of the attribute.",
"description": "An optional property that specifies the description of the new attribute.",
"schemaType": "CUSTOM",
"type": "STRING",
"unique": true,
"enabled": false,
"multiValued": false,
"required": false,
"schema": {
"id": "6497b7af-99d1-4217-8a82-057fcc3b7401"
}
}