SCIM module - save extended form value

SCIM module was added in CzechIdM 8.1.0.

We want to create user (~IdM identity) with an extended attribute (~IdM form value).

Extended attributes are defined as extended schema, which can be added to resources implementing FormableResource interface (available resources with their schemas can be found from shema endpoint).

  • We need to install CzechIdM 8.1.0 (and higher). We have CzechIdM installed for this tutorial on server http://localhost:8080/idm.
  • We need to install Scim module into CzechIdM.
  • Create identity, which will have permission to create and read reports. We are using demo admin:admin identity.

Note: Swagger can be used for try this examples.

The first thing wee need to now, which extended attributes are available for given resources. We use FormDefinition resource ⇒ form definition can be found by type (~definition's entity type owner. IdM entity name has to be used, extended attributes are CzechIdM specific) and code (~definition name):

curl -X GET --header 'Accept: application/json' --header 'Authorization: Basic YWRtaW46YWRtaW4=' 'http://localhost:8080/idm/api/v1/scim/FormDefinitions?filter=type%2520eq%2520%2522eu.bcvsolutions.idm.core.model.entity.IdmIdentity%2522%2520and%2520code%2520eq%2520%2522default%2522&sortOrder=ascending&startIndex=1&count=10'

Form definition response contains available attributes and their persistent type (~data type). We need to set value attribute by defined persistent type. In this example attribute extAttr has type SHORTTEXT and that is the reason, why shortTextValue attribute has to be filled:

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: Basic YWRtaW46YWRtaW4=' -d '{ 
    "schemas": [ 
      "urn:ietf:params:scim:schemas:core:2.0:User", 
      "urn:ietf:params:scim:schemas:CzechIdM:8.1:Form" 
     ], 
    "userName": "scimTwo", 
    "urn:ietf:params:scim:schemas:CzechIdM:8.1:Form": { 
    "forms" : [{ 
    		"code": "default", 
    		"attributes": [{ 
    				"code": "extAttr", 
   				"values": [{ 
    				      "shortTextValue": "test" 
   				}] 
    		} 
    	] 
    } 
    ]} 
 }' 'http://localhost:8080/idm/api/v1/scim/Users'
Congratulations, as you can see from response, you saved the first extended attribute value.