Update All User Attributes
PUT {{apiPath}}/scim/v2/Users/{{id}}
The PUT /scim/v2/Users/{{id}} endpoint executes a full replace of an existing resource. Typically, you would first GET the resource, make any desired changes, then PUT the changed resource to the same URI.
The server ignores attributes that the client omits from a PUT request, rather than removing them. A client can explicitly designate that an attribute should be removed by setting its value to null.
The User resource and its attributes are defined in RFC 7643, Section 4.1.
Headers
Authorization Bearer {{accessToken}}
Content-Type application/scim+json
Accept application/scim+json
Body
raw ( application/scim+json )
{
"addresses": [
{
"country": "US",
"locality": "New York",
"postalCode": "10020",
"primary": true,
"region": "NY",
"type": "home"
}
],
"emails": [
{
"primary": true,
"type": "work",
"value": "pat.conley@runciter.com"
}
],
"name": {
"familyName": "Conley",
"formatted": "Pat Conley",
"givenName": "Pat"
},
"schemas": [
"urn:pingidentity:schemas:User:1.0",
"urn:pingidentity:schemas:sample:profile:1.0"
],
"urn:pingidentity:schemas:sample:profile:1.0": {
"birthDate": "1948-07-13"
},
"userName": "pconley"
}
Example Request
-
cURL
-
C#
-
Go
-
HTTP
-
Java
-
jQuery
-
NodeJS
-
Python
-
PHP
-
Ruby
-
Swift
curl --location --globoff --request PUT '{{apiPath}}/scim/v2/Users/{{id}}' \
--header 'Content-Type: application/scim+json' \
--header 'Accept: application/scim+json' \
--header 'Authorization: Bearer {{accessToken}}' \
--data-raw '{
"addresses": [
{
"country": "US",
"locality": "New York",
"postalCode": "10020",
"primary": true,
"region": "NY",
"type": "home"
}
],
"emails": [
{
"primary": true,
"type": "work",
"value": "pat.conley@runciter.com"
}
],
"name": {
"familyName": "Conley",
"formatted": "Pat Conley",
"givenName": "Pat"
},
"schemas": [
"urn:pingidentity:schemas:User:1.0",
"urn:pingidentity:schemas:sample:profile:1.0"
],
"urn:pingidentity:schemas:sample:profile:1.0": {
"birthDate": "1948-07-13"
},
"userName": "pconley"
}'
var options = new RestClientOptions("{{apiPath}}/scim/v2/Users/{{id}}")
{
MaxTimeout = -1,
};
var client = new RestClient(options);
var request = new RestRequest("", Method.Put);
request.AddHeader("Content-Type", "application/scim+json");
request.AddHeader("Accept", "application/scim+json");
request.AddHeader("Authorization", "Bearer {{accessToken}}");
var body = @"{" + "\n" +
@" ""addresses"": [" + "\n" +
@" {" + "\n" +
@" ""country"": ""US""," + "\n" +
@" ""locality"": ""New York""," + "\n" +
@" ""postalCode"": ""10020""," + "\n" +
@" ""primary"": true," + "\n" +
@" ""region"": ""NY""," + "\n" +
@" ""type"": ""home""" + "\n" +
@" }" + "\n" +
@" ]," + "\n" +
@" ""emails"": [" + "\n" +
@" {" + "\n" +
@" ""primary"": true," + "\n" +
@" ""type"": ""work""," + "\n" +
@" ""value"": ""pat.conley@runciter.com""" + "\n" +
@" }" + "\n" +
@" ]," + "\n" +
@" ""name"": {" + "\n" +
@" ""familyName"": ""Conley""," + "\n" +
@" ""formatted"": ""Pat Conley""," + "\n" +
@" ""givenName"": ""Pat""" + "\n" +
@" }," + "\n" +
@" ""schemas"": [" + "\n" +
@" ""urn:pingidentity:schemas:User:1.0""," + "\n" +
@" ""urn:pingidentity:schemas:sample:profile:1.0""" + "\n" +
@" ]," + "\n" +
@" ""urn:pingidentity:schemas:sample:profile:1.0"": {" + "\n" +
@" ""birthDate"": ""1948-07-13""" + "\n" +
@" }," + "\n" +
@" ""userName"": ""pconley""" + "\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}}/scim/v2/Users/{{id}}"
method := "PUT"
payload := strings.NewReader(`{
"addresses": [
{
"country": "US",
"locality": "New York",
"postalCode": "10020",
"primary": true,
"region": "NY",
"type": "home"
}
],
"emails": [
{
"primary": true,
"type": "work",
"value": "pat.conley@runciter.com"
}
],
"name": {
"familyName": "Conley",
"formatted": "Pat Conley",
"givenName": "Pat"
},
"schemas": [
"urn:pingidentity:schemas:User:1.0",
"urn:pingidentity:schemas:sample:profile:1.0"
],
"urn:pingidentity:schemas:sample:profile:1.0": {
"birthDate": "1948-07-13"
},
"userName": "pconley"
}`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/scim+json")
req.Header.Add("Accept", "application/scim+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 /scim/v2/Users/{{id}} HTTP/1.1
Host: {{apiPath}}
Content-Type: application/scim+json
Accept: application/scim+json
Authorization: Bearer {{accessToken}}
{
"addresses": [
{
"country": "US",
"locality": "New York",
"postalCode": "10020",
"primary": true,
"region": "NY",
"type": "home"
}
],
"emails": [
{
"primary": true,
"type": "work",
"value": "pat.conley@runciter.com"
}
],
"name": {
"familyName": "Conley",
"formatted": "Pat Conley",
"givenName": "Pat"
},
"schemas": [
"urn:pingidentity:schemas:User:1.0",
"urn:pingidentity:schemas:sample:profile:1.0"
],
"urn:pingidentity:schemas:sample:profile:1.0": {
"birthDate": "1948-07-13"
},
"userName": "pconley"
}
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/scim+json");
RequestBody body = RequestBody.create(mediaType, "{\n \"addresses\": [\n {\n \"country\": \"US\",\n \"locality\": \"New York\",\n \"postalCode\": \"10020\",\n \"primary\": true,\n \"region\": \"NY\",\n \"type\": \"home\"\n }\n ],\n \"emails\": [\n {\n \"primary\": true,\n \"type\": \"work\",\n \"value\": \"pat.conley@runciter.com\"\n }\n ],\n \"name\": {\n \"familyName\": \"Conley\",\n \"formatted\": \"Pat Conley\",\n \"givenName\": \"Pat\"\n },\n \"schemas\": [\n \"urn:pingidentity:schemas:User:1.0\",\n \"urn:pingidentity:schemas:sample:profile:1.0\"\n ],\n \"urn:pingidentity:schemas:sample:profile:1.0\": {\n \"birthDate\": \"1948-07-13\"\n },\n \"userName\": \"pconley\"\n}");
Request request = new Request.Builder()
.url("{{apiPath}}/scim/v2/Users/{{id}}")
.method("PUT", body)
.addHeader("Content-Type", "application/scim+json")
.addHeader("Accept", "application/scim+json")
.addHeader("Authorization", "Bearer {{accessToken}}")
.build();
Response response = client.newCall(request).execute();
var settings = {
"url": "{{apiPath}}/scim/v2/Users/{{id}}",
"method": "PUT",
"timeout": 0,
"headers": {
"Content-Type": "application/scim+json",
"Accept": "application/scim+json",
"Authorization": "Bearer {{accessToken}}"
},
"data": JSON.stringify({
"addresses": [
{
"country": "US",
"locality": "New York",
"postalCode": "10020",
"primary": true,
"region": "NY",
"type": "home"
}
],
"emails": [
{
"primary": true,
"type": "work",
"value": "pat.conley@runciter.com"
}
],
"name": {
"familyName": "Conley",
"formatted": "Pat Conley",
"givenName": "Pat"
},
"schemas": [
"urn:pingidentity:schemas:User:1.0",
"urn:pingidentity:schemas:sample:profile:1.0"
],
"urn:pingidentity:schemas:sample:profile:1.0": {
"birthDate": "1948-07-13"
},
"userName": "pconley"
}),
};
$.ajax(settings).done(function (response) {
console.log(response);
});
var request = require('request');
var options = {
'method': 'PUT',
'url': '{{apiPath}}/scim/v2/Users/{{id}}',
'headers': {
'Content-Type': 'application/scim+json',
'Accept': 'application/scim+json',
'Authorization': 'Bearer {{accessToken}}'
},
body: JSON.stringify({
"addresses": [
{
"country": "US",
"locality": "New York",
"postalCode": "10020",
"primary": true,
"region": "NY",
"type": "home"
}
],
"emails": [
{
"primary": true,
"type": "work",
"value": "pat.conley@runciter.com"
}
],
"name": {
"familyName": "Conley",
"formatted": "Pat Conley",
"givenName": "Pat"
},
"schemas": [
"urn:pingidentity:schemas:User:1.0",
"urn:pingidentity:schemas:sample:profile:1.0"
],
"urn:pingidentity:schemas:sample:profile:1.0": {
"birthDate": "1948-07-13"
},
"userName": "pconley"
})
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
import requests
import json
url = "{{apiPath}}/scim/v2/Users/{{id}}"
payload = json.dumps({
"addresses": [
{
"country": "US",
"locality": "New York",
"postalCode": "10020",
"primary": True,
"region": "NY",
"type": "home"
}
],
"emails": [
{
"primary": True,
"type": "work",
"value": "pat.conley@runciter.com"
}
],
"name": {
"familyName": "Conley",
"formatted": "Pat Conley",
"givenName": "Pat"
},
"schemas": [
"urn:pingidentity:schemas:User:1.0",
"urn:pingidentity:schemas:sample:profile:1.0"
],
"urn:pingidentity:schemas:sample:profile:1.0": {
"birthDate": "1948-07-13"
},
"userName": "pconley"
})
headers = {
'Content-Type': 'application/scim+json',
'Accept': 'application/scim+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}}/scim/v2/Users/{{id}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
'follow_redirects' => TRUE
));
$request->setHeader(array(
'Content-Type' => 'application/scim+json',
'Accept' => 'application/scim+json',
'Authorization' => 'Bearer {{accessToken}}'
));
$request->setBody('{\n "addresses": [\n {\n "country": "US",\n "locality": "New York",\n "postalCode": "10020",\n "primary": true,\n "region": "NY",\n "type": "home"\n }\n ],\n "emails": [\n {\n "primary": true,\n "type": "work",\n "value": "pat.conley@runciter.com"\n }\n ],\n "name": {\n "familyName": "Conley",\n "formatted": "Pat Conley",\n "givenName": "Pat"\n },\n "schemas": [\n "urn:pingidentity:schemas:User:1.0",\n "urn:pingidentity:schemas:sample:profile:1.0"\n ],\n "urn:pingidentity:schemas:sample:profile:1.0": {\n "birthDate": "1948-07-13"\n },\n "userName": "pconley"\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}}/scim/v2/Users/{{id}}")
http = Net::HTTP.new(url.host, url.port);
request = Net::HTTP::Put.new(url)
request["Content-Type"] = "application/scim+json"
request["Accept"] = "application/scim+json"
request["Authorization"] = "Bearer {{accessToken}}"
request.body = JSON.dump({
"addresses": [
{
"country": "US",
"locality": "New York",
"postalCode": "10020",
"primary": true,
"region": "NY",
"type": "home"
}
],
"emails": [
{
"primary": true,
"type": "work",
"value": "pat.conley@runciter.com"
}
],
"name": {
"familyName": "Conley",
"formatted": "Pat Conley",
"givenName": "Pat"
},
"schemas": [
"urn:pingidentity:schemas:User:1.0",
"urn:pingidentity:schemas:sample:profile:1.0"
],
"urn:pingidentity:schemas:sample:profile:1.0": {
"birthDate": "1948-07-13"
},
"userName": "pconley"
})
response = http.request(request)
puts response.read_body
let parameters = "{\n \"addresses\": [\n {\n \"country\": \"US\",\n \"locality\": \"New York\",\n \"postalCode\": \"10020\",\n \"primary\": true,\n \"region\": \"NY\",\n \"type\": \"home\"\n }\n ],\n \"emails\": [\n {\n \"primary\": true,\n \"type\": \"work\",\n \"value\": \"pat.conley@runciter.com\"\n }\n ],\n \"name\": {\n \"familyName\": \"Conley\",\n \"formatted\": \"Pat Conley\",\n \"givenName\": \"Pat\"\n },\n \"schemas\": [\n \"urn:pingidentity:schemas:User:1.0\",\n \"urn:pingidentity:schemas:sample:profile:1.0\"\n ],\n \"urn:pingidentity:schemas:sample:profile:1.0\": {\n \"birthDate\": \"1948-07-13\"\n },\n \"userName\": \"pconley\"\n}"
let postData = parameters.data(using: .utf8)
var request = URLRequest(url: URL(string: "{{apiPath}}/scim/v2/Users/{{id}}")!,timeoutInterval: Double.infinity)
request.addValue("application/scim+json", forHTTPHeaderField: "Content-Type")
request.addValue("application/scim+json", forHTTPHeaderField: "Accept")
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
{
"addresses": [
{
"country": "US",
"locality": "New York",
"postalCode": "10020",
"primary": true,
"region": "NY",
"type": "home"
}
],
"emails": [
{
"primary": true,
"type": "work",
"value": "pat.conley@runciter.com"
}
],
"id": "76b4c133-87a7-4b2f-8058-4716e78b0fd4",
"meta": {
"created": "2016-07-30T00:01:23.824Z",
"lastModified": "2016-07-30T00:04:08.529Z",
"location": "https://example.com:443/scim/v2/Users/76b4c133-87a7-4b2f-8058-4716e78b0fd4",
"resourceType": "Users"
},
"name": {
"familyName": "Conley",
"formatted": "Pat Conley",
"givenName": "Pat"
},
"schemas": [
"urn:pingidentity:schemas:sample:profile:1.0",
"urn:pingidentity:schemas:User:1.0"
],
"urn:pingidentity:schemas:sample:profile:1.0": {
"birthDate": "1948-07-13"
},
"userName": "pconley"
}