SYNCOPE-15 introduced 'lastChangeDate' and 'creationDate' fields on some entities (namely SyncopeUser, SyncopeRole and ExternalResource); such information is then transferred to matching TO (e.g. UserTO, RoleTO and ResourceTO).
This means that the respective services (UserService and RoleService) could be enhanced in the following way:
1. add ETag response header to any method - directly or indirectly via Response.Entity - generated from creationDate's or lastChangeDate's value
2. implement some "conditional POST/PUT" logic for update: an effective update request will be effectively accepted only if provided ETag matches the latest modification currently available