Overview#

SCIM Replace Request is a SCIM Resource Operation to Replace Values on a SCIM Resource
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.

SCIM Replace Request 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.

SCIM Replace Request Example#

To replace ALL values a resource, send an HTTP PUT request to the resource's respective end point:
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:

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:

Add new attachment

Only authorized users are allowed to upload new attachments.
« This page (revision-6) was last changed on 16-Oct-2016 11:28 by jim