Dear community,
lately I had some trouble with SCIM 2.0 connector. I’m trying to figure out if my issue is on application and, or IIQ end.
In the RFC, the first bullet point of the replace paragraph says (RFC 7644 - System for Cross-domain Identity Management: Protocol):
If the “path” parameter is omitted, the target is assumed to be
the resource itself. In this case, the “value” attribute SHALL
contain a list of one or more attributes that are to be replaced.
It might not be clear on how applications implementing SCIM 2.0 API need to behave in the case of a complex attribute when doing a replace operation. For example for the complex attribute name.
Let’s assume that name property of my identity look like this:
{
"name": {
"formatted": "newFormatted",
"familyName": "newfamilyName",
"givenName": "givenName"
}
}
First scenario:
When the target location (path attribute) is specified and specifies a complex attribute, sub-attributes that are not specified in the value parameter are left unchanged.
Request:
HTTP PATH : http://localhost/Users/$id$
{
"Operations": [
{
"op": "replace",
"path": "name",
"value": {
"formatted": "newformatted",
"familyName": "newfamilyName"
}
}
]
}
Response:
HTTP GET : http://localhost/Users/$id$
{
"name": {
"formatted": "newFormatted",
"familyName": "newfamilyName",
"givenName": "givenName"
}
}
Second scenario:
When the path parameter is not specified, the value contains a list of one or more attributes that are to be replaced.
Request:
HTTP PATH : http://localhost/Users/$id$
{
"Operations": [
{
"op": "replace",
"value": {
"name": {
"formatted": "newformatted",
"familyName": "newfamilyName"
}
}
}
]
}
Response should be this one, where sub-attributes not supplied in the name complex attribute are erase:
HTTP GET : http://localhost/Users/$id$
{
"name": {
"formatted": "newFormatted",
"familyName": "newfamilyName"
}
}
or shall we keep them like this ?
HTTP GET : http://localhost/Users/$id$
{
"name": {
"formatted": "newFormatted",
"familyName": "newfamilyName",
"givenName": "givenName"
}
}
What is, in the second scenario, the right answer ?
Regards