Apache Directory SCIMple
Copyright 2018-Present The Apache Software Foundation

This product includes software developed by
The Apache Software Foundation (http://www.apache.org/).

Files located in scim-client/src/main/java/org/apache/directory/scim/client/rest/ were copied
  from https://github.com/PennState/commons-jaxrs and retain the original copyright.

