...
Main focus on redesign REST interface was:
- applying RESTful Best Practices
- use HTTP operations instead of URL encoded operation names
- GET does not modify any object (read-only safety operation)
- PUT and DELETE are idempotent operations
- use URL parameters for search and filter restrictions
Role Interface
CRUD operations:
Old URL | New URL | Comment |
---|---|---|
POST /role/create | POST /roles/ | Creates a new (root) role. (Returns URL to new role definition?) |
POST /role/create | POST /roles/{parentRoleId} | Creates a new (child) role. (Returns URL to new role definition?) |
GET /role/list | GET /roles | Returns a list of all known roles |
GET /role/read/{roleId} | GET /roles/{roleId} | Returns a single role definition matching the provided roleID |
GET /role/selfRead/{roleId} | GET /roles/{roleId} | Authorization mechanisms will be independent of URL |
GET /role/parent/{roleId} | GET /roles/{roleId}/parent | Returns a single parent role definition (if available) |
GET /role/children/{roleId} | GET /roles/{roleId}/children | Returns a list of children role definitions |
POST /role/create POST /roles/ | Creates a new (root) role. (Returns URL to new role definition?) | |
POST /role/create | POST /roles/{parentRoleId} | Creates a new (child) role. Returns new role definition. |
POST /role/update | PUT /roles/{roleId} | Updates role. |
GET /role/delete/{roleId} | DELETE /roles/{roleId} | Deletes role. |
User Interface
CRUD operations:
Old URL | New URL | Comment |
---|---|---|
POST /user/create | POST /user/ | Creates a new user. (Returns URL to new user definition?) |
GET /user/list | GET /user | Returns a list of all known users |
GET /user/list/{page}/{size} | GET /user?page={page}&size={size} | Returns a list of known users matching page/size conditions |
GET /user/read/{userId} | GET /user/{userId} | Returns a single user matching the provided userId |
GET /user/readByUsername/{username} | GET /user?uname={username} | Returns a single user matching the provided username |
POST /user/create search | POST /user | Returns a list of user matching the provided search conditions. |
POST /user/search/{page}/{size} | POST /user?page={page}&size={size} | Returns a list of user matching the provided search and page/size conditions. |
GET /user/count | GET /user/count | Returns a number of existing users. |
POST /user/search/count | POST /user/count | Returns a number of user matching the provided search conditions. |
GET /user/verifyPassword/{username} | GET /user?uname={username}&pw={password} | Returns user if username and password match with an existing account. Creates a new user. (Returns URL to new user definition?) |
POST /user/update | PUT /user/{userId} | Updates user. |
GET /user/delete/{userId} | DELETE /user/{userId} | Deletes user. |
GET /deleteByUsername/{username} | <<removed>> | Please use 'GET /user?uname={username}' to discover userId and then use 'DELETE /user/{userId}' to delete user. |
Account status:
Old URL | New URL | Comment |
---|---|---|
GET /user/activate/{userId} | PUT /user/{userId}/status/active | Enables a user account. |
GET /user/activateByUsername/{username} | <<removed>> | Please use 'GET /user?uname={username}' to discover userId and then use 'PUT /user/{userId}/status/active' to enable user account. |
GET /user/reactivate/{userId} | PUT /user/{userId}/status/active | Reactivates a user account. |
GET /user/reactivateByUsername/{username} | <<removed>> | Please use 'GET /user?uname={username}' to discover userId and then use 'PUT /user/{userId}/status/active' to reactivate user account. |
GET /user/suspend/{userId} | DELETE /user/{userId}/status/active | Disables a user account. |
<<none>> | GET /user/{userId}/status/active | Returns HTTP-Status-Code 204 (200?) if user is enabled. Returns HTTP-Status-Code 404 if user is disabled. |
GET /user/suspendByUsername/{username} | <<removed>> | Please use 'GET /user?uname={username}' to discover userId and then use 'DELETE /user/{userId}/status/active' to disable user account. |
Workflow actions: TODO: Is this a good design decision? Should these activities be moved to WorkflowController?
Old URL | New URL | Comment |
---|---|---|
GET /user/workflow/form/list | GET /user/workflow/form | Returns a list of user workflow forms. |
GET /user/workflow/form/{userId} | GET /user/{userId}/workflow/form | Returns a (single) workflow form assigned to user. |
POST /user/workflow/form/submit | POST /user/workflow/form | Submittes a form to a user workflow. |
POST /user/execute/workflow/{taskId} | POST /user/workflow/task/{taskId}/execute | Executes workflow task on user. |
GET /workflow/form/claim/{taskId} | POST /user/workflow/task/{taskId}/claim | Claims workflow task for authenticated (session) user. |