<div dir="ltr">I am trying to write  a test harness for out application which uses KeyCloak.<div>In order to run my tests I need to manipulate KeyCloak.</div><div><br></div><div>I am able to get data out of KeyCloak using the REST API. However I am unclear what I should send to KeyCloak to change a setting.</div><div><br></div><div>I was trying to set the role for a user and wrote the script at the bottom of the email.</div><div><br></div><div>I get back an error of org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of java.util.ArrayList out of START_OBJECT token</div><div> at [Source: io.undertow.servlet.spec.ServletInputStreamImpl@73cda37e; line: 1, column: 1]</div><div><br></div><div>I have obviously missed a key point in the format of my data, but cannot see what it is.</div><div><br></div><div><br></div><div>Chris</div><div><br></div><div><br></div><div><br></div><div><br></div><div>---------------------------------------</div><div><div>#!/bin/bash</div><div><br></div><div>host=<a href="http://192.168.10.221:8088">192.168.10.221:8088</a></div><div>realm=ATS-ci</div><div><br></div><div><br></div><div>t=$(curl -X POST http://${host}/auth/realms/${realm}/protocol/openid-connect/token --data &quot;username=${1}&quot; --data &quot;password=${2}&quot; --data &quot;grant_type=password&quot; --data &quot;client_id=client&quot; 2&gt;/dev/null | jq -r &quot;.id_token&quot;)</div><div><br></div><div>client=$(curl http://${host}/auth/admin/realms/${realm}/clients -H &quot;Accept: application/json&quot; -H &quot;Authorization: Bearer ${t}&quot; 2&gt;/dev/null | jq -r &quot;.[] | select(.name == \&quot;client\&quot;).id&quot;)</div><div>user=$(curl http://${host}/auth/admin/realms/${realm}/users -H &quot;Accept: application/json&quot; -H &quot;Authorization: Bearer ${t}&quot; 2&gt;/dev/null | jq -r &quot;.[] | select(.username == \&quot;${3}\&quot;).id&quot;)</div><div><br></div><div>echo ${client}</div><div>echo ${user}</div><div><br></div><div>echo &quot;Roles&quot;</div><div>curl http://${host}/auth/admin/realms/${realm}/clients/${client}/roles \</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>-H &quot;Accept: application/json&quot; \</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>-H &quot;Authorization: Bearer ${t}&quot; 2&gt;/dev/null  | jq -r &quot;.[] | {id, name }&quot;</div><div><br></div><div>echo &quot;&quot;</div><div>echo &quot;Roles:${3}&quot;</div><div>curl http://${host}/auth/admin/realms/${realm}/users/${user}/role-mappings/clients/${client} \</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>-H &quot;Accept: application/json&quot; \</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>-H &quot;Authorization: Bearer ${t}&quot; 2&gt;/dev/null | jq -r &quot;.[] | {id, name }&quot;</div><div><br></div><div><br></div><div>curl http://${host}/auth/admin/realms/${realm}/users/${user}/role-mappings/clients/${client} \</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>-X POST \</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>-H &quot;Content-Type: application/json&quot; \</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>-H &quot;Accept: application/json&quot; \</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>-H &quot;Authorization: Bearer ${t}&quot; \</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>--data &quot;{&#39;realm&#39;: &#39;ATS-${realm}&#39;, &#39;id&#39;: &#39;${user}&#39;, &#39;client&#39;: &#39;${client}&#39;, &#39;\$entity&#39;: [ &#39;operator&#39; ] }&quot;</div></div></div>