![No UI](https://img.shields.io/static/v1?label=UI&message=none&color=inactive) The *Celum User Service* extension provides a REST API to query users and groups. This extension supports all the important requests around users and groups, unlike the CELUM repository, which only supports querying users, groups and if a certain user is in a certain group (so to get all groups of a user, you have to check in each group if the user is a member of it, very bad time complexity). [MINITOC] ## Properties To be configured in {home}/appserver/conf/custom.properties ##### celumUserService.license > type: string, **required: yes**, default: - The license key for the plugin (product: camundaCore), provided by *brix*. ##### celumUserService.token > type: string, **required: yes**, default: \_Celum123\_ The security token to be used for the REST API. ## Requests The requests have to be sent to `/celumUserService/...`. The token has to be provided as query parameter for all the requests. E.g. `http://localhost:8881/celumUserService/users?token=_Celum123_` to get all users or `http://localhost:8881/celumUserService/usersInGroup?token=_Celum123_&groupId=489` to get all users in the group with id 489. All the GET requests support the two following query parameters: - offset: (default: 0), index of the first entry in the result (0-based) - limit: (default: 200), page size (shouldn't be greater than 200) The GET requests will either return a list of users or groups, and the POST requests will just return an empty response with status 200 (OK) on success. ##### GET /users Get a list of all users. ##### GET /usersById - userIds: comma-separated list of user ids Get the specified users. ##### GET /groups Get a list of all groups. ##### GET /groupsById - groupIds: comma-separated list of group ids Get the specified groups. ##### GET /usersInGroup - groupId: the id of the group to get the members for Get all users (members) of a group (non-recursive, so only the users directly linked to this group are returned, and those who are members of sub-groups are ignored). ##### GET /groupsInGroup - groupId: the id of the group to get the sub-groups for Get all sub-groups of the specified group (non-recursive, only direct children of the specified group are returned). ##### POST /updateUser - user: the user with the updated values as JSON string Update a user. Omit the id (or set it to -1) to create a new user. ##### POST /updateGroup - group: the group with the updated values as JSON string Update a group. Omit the id (or set it to -1) to create a new group. ##### POST /addParent - userOrGroupId: the id of the user or group which should be added to the parent - parentId: the group id of the parent group Adds a user or group to a parent group. ##### POST /removeParent - userOrGroupId: the id of the user or group which should be removed from the parent - parentId: the group id of the parent group Remove a user or group from a parent group. ## JSON objects ### User - id: long - username: string - domain: string - password: string (only supported to set a password, never returned on GET requests) - deactivated: boolean - mustChangePassword: boolean - created: date string (cannot be set/changed) - firstName: string - middleName: string - lastName: string - phone: string - phoneMobile: string - fax: string - homepage: string - email: string - company: string - street: string - zip: string - city: string - country: string - description: string - kind: string (readwrite, editor or readonly) ### Group - id: long - name: string - description: string ## Compatibility Matrix | Camunda Core | CELUM (min. version) | :----- | :----- | 1.0.0 | 5.13.4 (tested with 6.4) | ## Release Notes ##### 1.0.0 > Released 2020-03-09 Initial version