and more in a single search tool across platforms. Read the announcement here. |
09/13/2022 11:55 PM
We have a REST Application that doesn't have calls for adding/removing a single entitlement. I always have to update the account with the complete list of needed entitlements.
Example 1:
User has entitlements A and B. Additionally he should receive C. I have to send user update call with:
{
"id": "userid",
"groups": [
{
"value": "A"
},
{
"value": "B"
},
{
"value": "C"
}
]
}
Example 2:
User has entitlements A, B and C. B should be removed. I have to send user update call with:
{
"id": "userid",
"groups": [
{
"value": "A"
},
{
"value": "C"
}
]
}
If anyone has already done this, could you share the Add Access & Remove Access json sample?
Appreciate the support.
-Siva
09/14/2022 03:59 AM
You can use 2 calls in this case first retrieve current groups assigned to user & then in second api call i.e. add/ remove use previous response & add/remove new group in array
09/14/2022 09:55 AM - edited 09/14/2022 09:59 AM
Thanks Rushikesh for the response. I tried it already, but kept receiving json parse error for call 2. Hence, looking for a sample with json content type. I see sample in coupa connector documentation but that's XML content type.
Here is the sample json I'm using, Call 1 is executing successfully but call 2 is throwing json parse error.
{
"call": [
{
"name": "Groups",
"connection": "acctAuth",
"url": "https://myapp.mydomain.com/rest/Users/${account.accountID}",
"httpMethod": "GET",
"httpHeaders": {
"Accept": "application/scim+json",
"Authorization": "${access_token}"
},
"httpContentType": "application/scim+json",
"successResponses": {
"statusCode": [
200
]
}
},
{
"name": "Groups",
"connection": "acctAuth",
"url": "https://myapp.mydomain.com/rest/Users/${account.accountID}",
"httpMethod": "PUT",
"httpParams": "{\"id\": \"${account.accountID}\",\"groups\": ${String groupsStr = '';int size = response.Groups1.message.groups?.size(); if(size == 0) {'[{}]'} else { response.Groups1.message.groups.replace(']','').concat(',{\"value\":\"${entitlementValue.entitlement_value}\"}]')}}}",
"httpHeaders": {
"Accept": "application/scim+json",
"Authorization": "${access_token}"
},
"httpContentType": "application/scim+json",
"successResponses": {
"statusCode": [
200
]
}
}
]
}
Parse Error received in logs
2022-09-14 16:12:40,374 [quartzScheduler_Worker-25] ERROR rest.RestProvisioningService - Exception in creating original http params:com.fasterxml.jackson.core.JsonParseException: Unrecognized token '$': was expecting ('true', 'false' or 'null')
at [Source: {"id": "${account.accountID}","groups": ${String groupsStr = '';int size = response.Groups1.message.groups?.size(); if(size == 0) {'[{}]'} else { response.Groups1.message.groups.replace(']','').concat(',{"value":"${entitlementValue.entitlement_value}"}]')}} }; line: 1, column: 43]
2022-09-14 16:12:40,412 [quartzScheduler_Worker-25] DEBUG rest.RestProvisioningService - connection: acctAuth
2022-09-14 16:12:40,505 [quartzScheduler_Worker-25] ERROR rest.RestProvisioningService - Error in processWebservicecom.fasterxml.jackson.core.JsonParseException: Unrecognized token '$': was expecting ('true', 'false' or 'null')
at [Source: {"id": "${account.accountID}","groups": ${String groupsStr = '';int size = response.Groups1.message.groups?.size(); if(size == 0) {'[{}]'} else { response.Groups1.message.groups.replace(']','').concat(',{"value":"${entitlementValue.entitlement_value}"}]')}} }; line: 1, column: 43]
2022-09-14 16:12:40,506 [quartzScheduler_Worker-25] DEBUG println.PrintlnToLogger - Println :: [1;31m| Error [22;39mcom.fasterxml.jackson.core.JsonParseException: Unrecognized token '$': was expecting ('true', 'false' or 'null')
at [Source: {"id": "${account.accountID}","groups": ${String groupsStr = '';int size = response.Groups1.message.groups?.size(); if(size == 0) {'[{}]'} else { response.Groups1.message.groups.replace(']','').concat(',{"value":"${entitlementValue.entitlement_value}"}]')}} }; line: 1, column: 43][m
2022-09-14 16:12:40,506 [quartzScheduler_Worker-25] DEBUG println.PrintlnToLogger - Println :: [1;31m| Error [22;39m at com.fasterxml.jackson.core.JsonParser._constructError(JsonParser.java:1702)[m
2022-09-14 16:12:40,506 [quartzScheduler_Worker-25] DEBUG println.PrintlnToLogger - Println :: [1;31m| Error [22;39m at com.fasterxml.jackson.core.base.ParserMinimalBase._reportError(ParserMinimalBase.java:558)[m
2022-09-14 16:12:40,506 [quartzScheduler_Worker-25] DEBUG println.PrintlnToLogger - Println :: [1;31m| Error [22;39m at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._reportInvalidToken(ReaderBasedJsonParser.java:2839)[m
2022-09-14 16:12:40,506 [quartzScheduler_Worker-25] DEBUG println.PrintlnToLogger - Println :: [1;31m| Error [22;39m at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._handleOddValue(ReaderBasedJsonParser.java:1903)[m
2022-09-14 16:12:40,506 [quartzScheduler_Worker-25] DEBUG println.PrintlnToLogger - Println :: [1;31m| Error [22;39m at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextFieldName(ReaderBasedJsonParser.java:972)[m
2022-09-14 16:12:40,506 [quartzScheduler_Worker-25] DEBUG println.PrintlnToLogger - Println :: [1;31m| Error [22;39m at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:505)[m
2022-09-14 16:12:40,506 [quartzScheduler_Worker-25] DEBUG println.PrintlnToLogger - Println :: [1;31m| Error [22;39m at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:362)[m
2022-09-14 16:12:40,506 [quartzScheduler_Worker-25] DEBUG println.PrintlnToLogger - Println :: [1;31m| Error [22;39m at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:27)[m
2022-09-14 16:12:40,506 [quartzScheduler_Worker-25] DEBUG println.PrintlnToLogger - Println :: [1;31m| Error [22;39m at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3814)[m
2022-09-14 16:12:40,506 [quartzScheduler_Worker-25] DEBUG println.PrintlnToLogger - Println :: [1;31m| Error [22;39m at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2877)[m
2022-09-14 16:12:40,506 [quartzScheduler_Worker-25] DEBUG println.PrintlnToLogger - Println :: [1;31m| Error [22;39m at com.fasterxml.jackson.databind.ObjectMapper$readValue.call(Unknown Source)[m
2022-09-14 16:12:40,506 [quartzScheduler_Worker-25] DEBUG println.PrintlnToLogger - Println :: [1;31m| Error [22;39m at com.saviynt.provisoning.rest.RestProvisioningService.processWebservice(RestProvisioningService.groovy:8054)[m
How to avoid this parse error?
09/19/2022 02:02 AM
Any updates here?