!!! Overview
[{$pagename}] is a [SCIM Resource Operation] to Replace Values on a [SCIM Resource]
%%warning
[HTTP PUT] performs a full update.
%%
!! Replacing with [HTTP PUT] ([SCIM 2.0] [RFC 7644])
[HTTP PUT] is used to replace a [SCIM Resource]'s attributes.
For example, [SCIM Clients] that have previously retrieved the entire [SCIM Resource] in advance and revised it [MAY] replace the [SCIM Resource] using an [HTTP PUT].
Because [SCIM Resource] identifiers are assigned by the [SCIM Service Provider], __[HTTP PUT] [MUST NOT]__ be used to create new resources.
As the operation's intent is to replace all attributes, [SCIM Clients] [MAY] send all attributes, regardless of each attribute's mutability. The [SCIM Service Provider] will apply attribute-by-attribute replacements according to the following attribute mutability rules:
!! readWrite, writeOnly
Any values provided [SHALL] replace the existing attribute values.
Attributes whose mutability is "readWrite" that are omitted from the request body [MAY] be assumed to be not asserted by the [SCIM Client].
The [SCIM Service Provider] [MAY] assume that any existing values are to be cleared, or the service provider [MAY] assign a default value to the final resource representation.
[Service Provider] [MAY] take into account whether or not a client has access to, or understands, all of the resource's attributes when deciding whether non-asserted attributes [SHALL] be removed or defaulted. Clients that want to override a [SCIM Service Provider]'s defaults [MAY] specify "null" for a [SINGLE-VALUE] attribute, or an empty array "[[]" for a [MULTI-VALUE] attribute, to clear all values.
!! immutable
If one or more values are already set for the attribute, the input value(s) [MUST] match, or HTTP status code 400 [SHOULD] be returned with a "scimType" error code of "mutability". If the service provider has no existing values, the new value(s) [SHALL] be applied.
!! readOnly
Any values provided SHALL be ignored.
!! required
If an attribute is "required", clients [MUST] specify the attribute in the [HTTP PUT] request.
Unless otherwise specified, a successful [HTTP PUT] operation returns a 200 OK response code and the entire resource within the response body, enabling the [SCIM Clients] to correlate the client's and the service provider's views of the updated resource. [SCIM Clients] __[MUST]__ retrieve the entire Resource and [HTTP PUT] the desired modifications as the operation __overwrites all__ previously stored data.
[{$pagename}] is performed using a URL [endpoint] similar to:
{{{
PUT https://example.com/{v}/{resource}/{id}
}}}
[Best Practices] are for the [URL] is that the [URL] contains a version number so that different versions of the [SCIM] API can co-exist. Available versions can be dynamically discovered via the [SCIM Service Provider Configuration Endpoints].
!! [{$pagename}] [Example]
To replace __ALL values__ a resource, send an HTTP PUT request to the resource's respective end point:
%%prettify
{{{
PUT /Users/2819c223-7f76-453a-919d-413861904646
Host: example.com
Accept: application/json
Authorization: Bearer h480djs93hd8
ETag: W/"a330bc54f0671c9"
{
"schemas":["urn:scim:schemas:core:1.0"],
"id":"2819c223-7f76-453a-919d-413861904646",
"userName":"bjensen",
"externalId":"bjensen",
"name":{
"formatted":"Ms. Barbara J Jensen III",
"familyName":"Jensen",
"givenName":"Barbara",
"middleName":"Jane"
},
"emails":[
{
"value":"bjensen@example.com"
},
{
"value":"babs@jensen.org"
}
]
}}}} /%
!! Replace Response
The response to a PUT contains The service responds with the entire, updated [SCIM Resource]
The [Etag] header can, in subsequent requests, be used to prevent concurrent modifications of Resources.
Unless otherwise specified a successful [HTTP PUT] operation returns a [HTTP Status Code] 200 OK response code and the entire updated [SCIM Resource] within the response body. [Example]:
%%prettify
{{{
HTTP/1.1 200 OK
Content-Type: application/json
ETag: W/"b431af54f0671a2"
Location:"https://example.com/v1/Users/2819c223-7f76-453a-919d-413861904646"
{
"schemas":["urn:scim:schemas:core:1.0"],
"id":"2819c223-7f76-453a-919d-413861904646",
"userName":"bjensen",
"externalId":"bjensen",
"name":{
"formatted":"Ms. Barbara J Jensen III",
"familyName":"Jensen",
"givenName":"Barbara",
"middleName":"Jane"
},
"emails":[
{
"value":"bjensen@example.com"
},
{
"value":"babs@jensen.org"
}
],
"meta": {
"created":"2011-08-08T04:56:22Z",
"lastModified":"2011-08-08T08:00:12Z",
"location":"https://example.com/v1/Users/2819c223-7f76-453a-919d-413861904646",
"version":"W\/\"b431af54f0671a2\""
}
}
}}} /%
!! More Information
There might be more information for this subject on one of the following:
[{ReferringPagesPlugin before='*' after='\n' }]