Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Role and User API description done.

...

Main focus on redesign REST interface was:

  1. 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
  2. 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.