Agile Central - Web Services API: How to get all Project users and query by Permission

Document ID : KB000111601
Last Modified Date : 17/08/2018
Show Technical Document Details
Question:
What are the permissions on Projects?
Can we use WSAPI to get all users of a Project?
Can we filter and get only users of certain permission of a Project?
Answer:
There are 3 permissions for Projects:  Viewer, Editor and Admin.

- The 'Admin' permission will grant the user a "Project Admin" privilege.
- The 'Editor' permission will allow the user to edit all project's artifacts. This is a minimum requirement to be a Team Member of this Project.
- The 'Viewer' permission will allow the user basic access to the project, without allowing editing any artifact.

These permissions are stored in the ProjectPermission endpoint. A combination of the User, the Project and the Workspace will constitute a unique entry in this endpoint. Such an entry marks the fact that this user has access to the Workspace. The specific level of permission ('Viewer', 'Editor' or 'Admin') is kept on the Role field.


WSAPI can be used to filter for Project users along with their permissions. Below are a few examples. All query examples should run against the ProjectPermission endpoint:

1. To get all Project Users (that is all users who have any access to the Project):
(Project.ObjectID = <ObjectID of your Project>)

2. To get only Editors of a given Project:
((Project.ObjectID = <ObjectID of your Project>) (and Role = "Editor"))

3. To get all non-admins users of a given Project:
((Project.ObjectID = <ObjectID of your Project>) (and Role != "Admin"))

4. To get a list of Projects accessible by a specific user.
(User.username = "<the username of your user>")     - find by username
((User.FirstName = "<the first name of your user>") and (User.LastName = "<the last name of your user>"))    - find by full name.
(User.ObjectID = <the object id of your user>)

5. To get a list of all disabled users in a given Project:
((Project.ObjectID = <ObjectID of your Project>) and (User.Disabled = True))

6. To get a list of all Project Admins of all projects in a given Workspace:
(Workspace.ObjectID = <ObjectID of your Workspace>) and (Role = "Admin"))

7. To get a list of all Viewers or Editors of all Projects of all Workspaces):
((Role = "Viewer") or (Role = "Editor"))

8. To get a list of Project Admins of only Children Projects of a given Project:
((Project.Parent.ObjectID = <ObjectID of your Parent Project>) and (Role = "Admin"))

9. To get a list of all users that have any access to a given projects and all its direct children projects:
((Project.ObjectID = <ObjectID of your Parent Project>) or (Project.Parent.ObjectID = <ObjectID of your Parent Project>))

10. To get all disabled users with permissions to a given Project or any of its Children Projects or any of its Grand-Children Projects:
((((Project.ObjectID = <ObjectID of your Top Project>) or (Project.Parent.ObjectID = <ObjectID of your Top Project>)) or (Project.Parent.Parent.ObjectID = <ObjectID of your Top Project>)) and (User.Disabled = False))
Additional Information:
More on User and Project permissions, see: https://help.rallydev.com/administer-users#teams

Find this doc on how to Get Workspace Permissions.