-
Notifications
You must be signed in to change notification settings - Fork 43
BulkId reference resolving
This page will describe what is necessary to set bulkId's within a resource and what are the restrictions. Unfortunately the resolving for bulkId's was inaccurately defined in RFC7644 which is why I was forced to make my own assumptions in specific cases.
- bulkId references can only be set on complex-type definitions that define the following two attributes:
{
"name": "value",
"description": "The id of the SCIM resource representing this reference.",
"type": "string",
"mutability": "readWrite",
"returned": "default",
"uniqueness": "none",
"multiValued": false,
"caseExact": false,
"required": true
},
{
"name": "$ref",
"description": "The URI of the SCIM resource representing",
"type": "reference",
"mutability": "readWrite",
"returned": "default",
"uniqueness": "none",
"multiValued": false,
"caseExact": false,
"required": false,
"referenceTypes": [
"resource"
]
}
it is very important that the "$ref" attribute is of type reference and contains the value "resource" in the "referenceTypes" attribute. Furthermore the "value" attribute must be of type string otherwise it is not possible to set a bulkId reference.
This is a limitation that has been implicitly but not directly defined within RFC7644. Handling of bulkId references are described in a hardcoded way for the group-members and the EnterpriseUser-manager attribute. the bulkId reference is set on the value attribute but the definition of a resource-reference has been set on the "$ref" attribute. That is why bulkId-references are only resolved on complex types that honor this pattern.
I was not able to find any circular reference example that would make any sense. Thats why the framework does not try to resolve circular references but punishes them directly with a http status of 409(CONFLICT) if detected.
If a bulkId-reference is a referencing its own operation a bad request is returned with a scimType of "invalidValue"