Update Attribute (Patch)
PATCH {{apiPath}}/environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}}
For schema attribute updates, both PUT and PATCH contracts are supported. The following sample shows the PATCH {{apiPath}}/environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}} operation to update existing attribute properties. For the PATCH operation, the update operation targets only those attribute property values specified in the request body. Attribute properties omitted from the request body are not updated or removed.
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 |
Example Request
-
cURL
-
C#
-
Go
-
HTTP
-
Java
-
jQuery
-
NodeJS
-
Python
-
PHP
-
Ruby
-
Swift
curl --location --globoff --request PATCH '{{apiPath}}/environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data '{
"name": "officeLocation",
"type": "STRING",
"unique": true,
"enabled": false
}'
var options = new RestClientOptions("{{apiPath}}/environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}}")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Patch);
request.AddHeader("Content-Type", "application/json");
request.AddHeader("Authorization", "Bearer {{accessToken}}");
var body = @"{" + "\n" +
@" ""name"": ""officeLocation""," + "\n" +
@" ""type"": ""STRING""," + "\n" +
@" ""unique"": true," + "\n" +
@" ""enabled"": 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 := "PATCH"
payload := strings.NewReader(`{
"name": "officeLocation",
"type": "STRING",
"unique": true,
"enabled": 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))
}
PATCH /environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}} HTTP/1.1
Host: {{apiPath}}
Content-Type: application/json
Authorization: Bearer {{accessToken}}
{
"name": "officeLocation",
"type": "STRING",
"unique": true,
"enabled": false
}
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"name\": \"officeLocation\",\n \"type\": \"STRING\",\n \"unique\": true,\n \"enabled\": false\n}");
Request request = new Request.Builder()
.url("{{apiPath}}/environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}}")
.method("PATCH", 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": "PATCH",
"timeout": 0,
"headers": {
"Content-Type": "application/json",
"Authorization": "Bearer {{accessToken}}"
},
"data": JSON.stringify({
"name": "officeLocation",
"type": "STRING",
"unique": true,
"enabled": false
}),
};
$.ajax(settings).done(function (response) {
console.log(response);
});
var request = require('request');
var options = {
'method': 'PATCH',
'url': '{{apiPath}}/environments/{{envID}}/schemas/{{schemaID}}/attributes/{{schemaAttrID}}',
'headers': {
'Content-Type': 'application/json',
'Authorization': 'Bearer {{accessToken}}'
},
body: JSON.stringify({
"name": "officeLocation",
"type": "STRING",
"unique": true,
"enabled": 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",
"type": "STRING",
"unique": True,
"enabled": False
})
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer {{accessToken}}'
}
response = requests.request("PATCH", 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('PATCH');
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/json',
'Authorization' => 'Bearer {{accessToken}}'
));
$request->setBody('{\n "name": "officeLocation",\n "type": "STRING",\n "unique": true,\n "enabled": 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::Patch.new(url)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer {{accessToken}}"
request.body = JSON.dump({
"name": "officeLocation",
"type": "STRING",
"unique": true,
"enabled": false
})
response = http.request(request)
puts response.read_body
let parameters = "{\n \"name\": \"officeLocation\",\n \"type\": \"STRING\",\n \"unique\": true,\n \"enabled\": 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 = "PATCH"
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/cc1ffe4e-9129-4fb0-8962-23c760c52aff"
},
"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": "cc1ffe4e-9129-4fb0-8962-23c760c52aff",
"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"
}
}