<div dir="ltr">At least personally I think the admin client needs some TLC. For example creating a user requires:<div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">        UserRepresentation user = new UserRepresentation();</font></div><div><font face="monospace, monospace">        user.setUsername(&quot;user&quot;);</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">        Response response = keycloak.realm(&quot;realm&quot;).users().create(user);</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">        // Retrieve created user id</font></div><div><font face="monospace, monospace">        String path = response.getLocation().getPath();</font></div><div><font face="monospace, monospace">        String id = path.substring(path.lastIndexOf(&#39;/&#39;) + 1);</font></div><div><font face="monospace, monospace">        </font></div><div><font face="monospace, monospace">        // Remember to close the response</font></div><div><font face="monospace, monospace">        response.close();</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">        // Set password</font></div><div><font face="monospace, monospace">        CredentialRepresentation credentials = new CredentialRepresentation();</font></div><div><font face="monospace, monospace">        credentials.setType(CredentialRepresentation.PASSWORD);</font></div><div><font face="monospace, monospace">        credentials.setValue(&quot;password&quot;);</font></div><div><font face="monospace, monospace">        </font></div><div><font face="monospace, monospace">        keycloak.realm(&quot;realm&quot;).users().get(id).resetPassword(credentials);</font></div><div><font face="monospace, monospace">        </font></div><div><font face="monospace, monospace">        // Add role</font></div><div><font face="monospace, monospace">        RoleRepresentation role = keycloak.realm(&quot;realm&quot;).roles().get(&quot;role&quot;).toRepresentation();</font></div><div><font face="monospace, monospace">        keycloak.realm(&quot;realm&quot;).users().get(id).roles().realmLevel().add(Collections.singletonList(role));</font></div><div><font face="monospace, monospace">     </font></div><div><font face="arial, helvetica, sans-serif">That&#39;s pretty rubbish right?</font></div></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">In my opinion a lot of the usability issues is caused by directly exposing interfaces/proxies from RestEasy Client and it would be much better if we introduced a wrapper around it.</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">So my questions are:</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">1) What do we do with regards to admin client? Do we just wrap what we have, keep it or create a brand new one from scratch?</font></div><div><font face="arial, helvetica, sans-serif">2) Is it an issue that we require a specific RestEasy version to use the admin client? This seems a heavy dependency to me, which could conflict with other JAX-RS libraries. Using JAX-RS 2 Client would be an improvement as it should in theory work with any JAX-RS 2 provider.</font></div><div><font face="arial, helvetica, sans-serif">3) What do we do with current fixes for admin client? Do we merge to master and 1.9.x or just merge to master?</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">At least from my POV the answers are:</font></div><div><font face="arial, helvetica, sans-serif">1) Create wrappers around interfaces/proxies from RestEasy client and not expose JAX-RS directly through the API as that should be an implementation detail</font></div><div><font face="arial, helvetica, sans-serif">2) Use JAX-RS 2 client</font></div><div><font face="arial, helvetica, sans-serif">3) Merge fixes to both master and 1.9.x (admin client is not supported in product for now, so it&#39;s less risky)</font></div></div>