code: @PUT
      @Consumes(MediaType.APPLICATION_JSON)
      @Path("{id}")
      public SuccessResponse updateApiKey(@PathParam("id") String id, EmoApiKey emoApiKey,
                                          @Authenticated Subject subject) {
          checkArgument(emoApiKey.getId().equals(id), "Body contains conflicting API key identifier");
          return updateApiKey(id,
                  new UpdateEmoApiKeyRequest()
                      .setOwner(emoApiKey.getOwner())
                      .setDescription(emoApiKey.getDescription())
                      .setAssignedRoles(emoApiKey.getRoles())
                      .setUnassignOtherRoles(true),
                  subject);
      }
docs: RESTful endpoint for updating an API key.  Note that all attributes of the key will be updated to match the
  provided object.